ALIBABA CLOUD TERRAFORM → STACKIT · TUTORIAL
Alibaba Cloud Terraform zu STACKIT: der Ablauf, Schritt für Schritt
Sie haben Terraform für eine Alibaba-Cloud-Umgebung und wollen einen STACKIT-Plan. Diese Anleitung führt einen Befehl auf einer Demo-Umgebung mit sechs Ressourcen aus, zeigt das Konsolenergebnis, führt die geschriebenen Dateien samt der Frage auf, die jede beantwortet, und endet damit, was Sie ändern, bevor etwas angewendet wird. Alle gezeigten Ausgaben stammen aus einem echten Lauf vom 4. November 2026.
Schritt 1: die Eingabe, ein Root-Modul, das Sie schon haben
Eine kleine Umgebung, für diese Seite geschrieben: eine VPC mit einem vSwitch und einer Security Group, eine ECS-Instanz, eine PostgreSQL-Datenbank und ein OSS-Bucket. StackToIT liest Terraform- und OpenTofu-Root-Module mit dem Provider aliyun/alicloud; es verbindet sich nicht mit Ihrem Alibaba-Cloud-Konto.
resource "alicloud_instance" "app" {
instance_name = "${var.app_name}-app-01"
instance_type = "ecs.g7.large"
image_id = "ubuntu_22_04_x64_20G_alibase_20240926.vhd"
vswitch_id = alicloud_vswitch.app.id
security_groups = [alicloud_security_group.app.id]
system_disk_category = "cloud_essd"
system_disk_size = 40
}
resource "alicloud_db_instance" "orders" {
engine = "PostgreSQL"
engine_version = "15.0"
instance_type = "pg.n2.2c.1m"
instance_storage = 100
instance_charge_type = "Postpaid"
vswitch_id = alicloud_vswitch.app.id
instance_name = "${var.app_name}-db"
}
resource "alicloud_oss_bucket" "uploads" {
bucket = "${var.app_name}-uploads"
acl = "private"
}Variablen werden gelesen
Die Namen im Beispiel stammen aus var.app_name. Variablendateien neben dem Modul werden mitgelesen; weitere übergeben Sie mit --var-file.
Provider-Version festschreiben
Der Lauf warnt, wenn keine Lock-Datei die Version des alicloud-Providers festhält, und begrenzt aus diesem Grund die Konfidenz jeder Einheit auf MEDIUM. Committen Sie deshalb zuerst .terraform.lock.hcl. Die Demo legt aliyun/alicloud 2.1.0 fest, eine in der Terraform Registry veröffentlichte Version; ihre Attributnamen stimmen mit der Registry-Dokumentation dieser Version überein, mit OpenTofu validiert wurden die Dateien aber nicht.
Schritt 2: ein Befehl
Die dokumentierte Form ist stacktoit assess QUELLE AUSGABE. Der Ausschnitt zeigt den Befehl so, wie er im Eingabeordner der Demo ausgeführt wurde. Er nutzte --offline, es gab also keine Netzwerkanfrage, und --no-validate übersprang die OpenTofu-Validierung der Quelle, weil die Demo keinen Provider-Mirror hatte. Auszug der Konsolenausgabe, unverändert.
# im Eingabeordner der Demo ausgeführt; der Ausgabeordner liegt daneben
stacktoit assess . ../out --offline --no-validateStackToIT Assess
────────────────────────────────────────────
Source: input
Source files: 1
Resources scanned: 6
Migration units: 6 (6 instances)
Unit dependencies: 5
Source checks: Built-in source checks passed — OpenTofu validation of the source was not run
STACKIT mapping
────────────────────────────────────────────
DIRECT 0
RECONFIGURE 5 █████████████████████████ 83%
REPLATFORM 1 █████ 16%
CONTAINERIZE 0
REDESIGN 0
MANUAL_REVIEW 0
BLOCKED 0 (the mapping class BLOCKED, not the execution blockers, which Migration readiness counts)
Confidence HIGH 0 · MEDIUM 6 · LOW 0Sechs Ressourcen, sechs Einheiten
Jede Ressource dieser Umgebung ist eine eigene Einheit. Fünf sind RECONFIGURE, eine, die Datenbank, ist REPLATFORM. Die Konfidenz ist bei allen sechs MEDIUM.
Kein STACKIT-Terraform für diese Quelle
Für Alibaba-Cloud-Quellen schreibt der Lauf in diesem Build keine STACKIT-Ressourcenblöcke. Der Ordner terraform enthält Provider-Einrichtung und die Liste der Einheiten, die Ihre Architekten übernehmen.
Wenn möglich ohne --no-validate
Ohne dieses Flag versucht der Lauf auch eine OpenTofu-Validierung Ihrer Quelle; dafür muss der Provider verfügbar sein.
Schritt 3: die Dateien und die Frage, die jede beantwortet
Der Lauf schreibt einen Ordner mit prüfbaren Dateien. Diese öffnen Sie zuerst.
- index.html
- Die Übersicht: im Browser öffnen, offline, für eine Ansicht Einheit für Einheit.
- assessment.json
- Je Einheit: Klasse, Konfidenz, Ziel, Begründung und die benannten Einstellungen.
- engineering/architect-report.md
- Die Herleitung je Einheit, die Prüfwarteschlange und was Ihnen bleibt.
- migration/technical-sequencing.md
- Die Reihenfolge der Einheiten nach Abhängigkeit, in Wellen.
- migration/data-movement.md
- Welche Einheiten Daten halten und was vor dem Umzug der Daten zu entscheiden ist.
- migration/work-packages.csv
- Die Arbeit, gruppiert nach verantwortlicher Rolle.
- execution/manual/actions.md
- Die manuellen Schritte, jeweils mit Zuständigkeit, Zeitpunkt, Risiko und der Bedingung, an der ein Schritt als erledigt gilt.
- inputs-template.yaml
- Die Fragen des Laufs an Sie; eine Antwort und ein neuer Lauf verändern den Entwurf.
- decisions-template.yaml
- Hier hält ein Architekt eine Prüfung fest.
- terraform/
- Provider-Einrichtung und Variablen des STACKIT-Entwurfs sowie die Liste der Einheiten, die dem Architekten bleiben.
Schritt 4: eine Einheit von Anfang bis Ende lesen
Die Datenbank, wie der Lauf sie bewertet hat. Auszug aus assessment.json mit den Werten genau so, wie der Lauf sie geschrieben hat. Da assessment.json in einer einzigen Zeile geschrieben ist, zeigt der Ausschnitt ausgewählte Felder jeder Einheit, eingerückt und so verschachtelt wie in der Datei, mit unveränderten Werten.
{
"id": "alicloud_db_instance.orders",
"result": {
"class": "REPLATFORM",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT PostgreSQL Flex",
"resources": [
"stackit_postgresflex_instance",
"stackit_postgresflex_database",
"stackit_postgresflex_user"
]
},
"reason": "Managed PostgreSQL to managed PostgreSQL: data moves with pg_dump/pg_restore or logical replication, and the instance class becomes a Flex flavor."
}
}Gleiche Engine, neuer Dienst
PostgreSQL zu PostgreSQL Flex ist REPLATFORM: Der Lauf nennt pg_dump mit pg_restore oder logische Replikation als Wege für den Datenumzug und macht aus der Instanzklasse ein Flex-Flavor.
Sieben Einstellungen benannt
engine, engine_version, instance_charge_type, instance_name, instance_storage und zwei weitere stehen für Ihr Datenbankteam in der Liste.
Nachvollziehen
stacktoit explain ./migration alicloud_db_instance.orders gibt die Belegkette hinter der Einstufung aus.
Schritt 5: die Reihenfolge der Einheiten
Auszug aus migration/technical-sequencing.md, unverändert. Eine Einheit zieht nach allen Einheiten um, von denen sie abhängt; Einheiten einer Welle können parallel umziehen.
## Wave 1 — 2 unit(s)
| Unit | Class | Target |
|---|---|---|
| `alicloud_oss_bucket.uploads` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
| `alicloud_vpc.main` | RECONFIGURE / MEDIUM | STACKIT network |
## Wave 2 — 2 unit(s)
| Unit | Class | Target |
|---|---|---|
| `alicloud_security_group.app` | RECONFIGURE / MEDIUM | STACKIT security groups |
| `alicloud_vswitch.app` | RECONFIGURE / MEDIUM | STACKIT network |
## Wave 3 — 2 unit(s)
| Unit | Class | Target |
|---|---|---|
| `alicloud_db_instance.orders` | REPLATFORM / MEDIUM | STACKIT PostgreSQL Flex |
| `alicloud_instance.app` | RECONFIGURE / MEDIUM | STACKIT Compute Engine |Ein Startpunkt, kein Terminplan
Die Wellen folgen allein den Abhängigkeiten. Ihr Kalender, Ihre Änderungsfenster und Ihre Datenkopien bestimmen den tatsächlichen Terminplan.
Schritt 6: wer die Arbeit bekommt
Aus migration/work-packages.csv. Der Lauf gruppiert die manuelle Arbeit nach Bereich und nennt je Paket eine verantwortliche Rolle.
| Arbeitspaket | Einheiten | Verantwortliche Rolle |
|---|---|---|
| WP-01 Fundament | alicloud_vpc.main, alicloud_vswitch.app | Network Architect |
| WP-02 Sicherheit | alicloud_security_group.app | Network Architect |
| WP-03 Datendienste | alicloud_db_instance.orders | Data Architect |
| WP-04 Datendienste | alicloud_oss_bucket.uploads | Storage Architect |
| WP-05 Workloads | alicloud_instance.app | Platform Architect |
Alle fünf Pakete sind frei von Entscheidungen, und eine Person kann jedes sofort beginnen. In diesem Build führt weder OpenTofu noch ein Skript einen Schritt aus.
Schritt 7: was Sie ändern, bevor Sie etwas anwenden
Der Lauf ist ein Vorschlag. Das verlangt er von Ihnen, in der Reihenfolge, die funktioniert.
Den Quell-Provider festschreiben
Committen Sie .terraform.lock.hcl für den alicloud-Provider und führen Sie den Lauf erneut aus. Der Lauf nennt den fehlenden Lock-Eintrag als Ursache der Warnung und der Begrenzung auf MEDIUM; ein Lauf mit Lock-Datei wurde für diese Seite nicht durchgeführt. Prüfen Sie die neuen Konfidenzwerte daher, statt sie vorauszusetzen.
Die blockierende Anfrage beantworten
inputs-template.yaml enthält eine Anfrage, die den Entwurf blockiert: target.region, mit eu01 und eu02 als Optionen. Kopieren Sie die Datei, füllen Sie den Wert und übergeben Sie sie mit --inputs. Die Variablen des Entwurfs zeigen region mit dem Standardwert eu01; die Antwort ist Ihre Wahl.
Das Projekt setzen
Das STACKIT-Projekt ist eine Variable des Entwurfs (project_id); die Vorlage nennt terraform.tfvars oder TF_VAR_project_id als Ort.
Die Einheiten prüfen
Lesen Sie engineering/architect-report.md ab der Prüfwarteschlange und halten Sie Ihre Prüfungen in der Entscheidungsdatei fest. Eine Prüfung hält eine Entscheidung fest; den Entwurf ändert sie nicht.
Die Verfahren für den Datenumzug wählen
data-movement.md führt Datenbank und Bucket mit dem Verfahren UNKNOWN. Entscheiden Sie für beide anhand von Datenmenge, Änderungsrate und tolerierter Ausfallzeit.
Erneut ausführen und prüfen
Führen Sie nach Antworten und Prüfungen assess erneut in einen neuen Ausgabeordner aus, prüfen Sie ihn mit stacktoit verify ../out-new und vergleichen Sie ihn mit --same-as ../out mit dem ersten Lauf. Bewahren Sie beide Ordner als Nachweis der Änderungen auf.
Fragen zum Ablauf
Braucht der Lauf Zugriff auf mein Alibaba-Cloud-Konto?
Nein. Er liest nur Terraform- und OpenTofu-Dateien und verbindet sich mit keinem Konto. Mit --offline stellt er auch keine Netzwerkanfragen.
Schreibt StackToIT STACKIT-Terraform für meine Alibaba-Cloud-Umgebung?
In diesem Build nicht. Für Alibaba-Cloud-Quellen schreibt StackToIT die Provider-Einrichtung, Variablen und eine Liste der Einheiten, die Ihren Architekten bleiben; Ziele und Begründungen stehen in assessment.json und im Architektenbericht.
Was ist eine Einheit?
Das, was der Lauf einstuft: meist eine Ressource oder die Instanzen einer Ressource mit count. Die Demo-Umgebung hat sechs Ressourcen und sechs Einheiten.
Welche Ressourcentypen kennt StackToIT?
Die Kerndienste des Adapters, etwa ECS, Disks, VPC, vSwitch, Security Groups, ApsaraDB RDS, OSS, NAS und ACK. Ein unbekannter Ressourcentyp wird zur MANUAL_REVIEW-Einheit ohne Ziel; das NAS Mount Target und die Disk-Zuordnung (disk attachment) sind Beispiele.
Quellen
Ihr nächster Schritt: STACKIT.
Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.