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.

Beispieleingabemain.tf
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.

Befehlterminal
# im Eingabeordner der Demo ausgeführt; der Ausgabeordner liegt daneben
stacktoit assess . ../out --offline --no-validate
KonsolenergebnisKonsolenausgabe
StackToIT 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 0
  • Sechs 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.

StackToIT-Bewertungassessment.json
{
  "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.

StackToIT-Reihenfolgemigration/technical-sequencing.md
## 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.

ArbeitspaketEinheitenVerantwortliche Rolle
WP-01 Fundamentalicloud_vpc.main, alicloud_vswitch.appNetwork Architect
WP-02 Sicherheitalicloud_security_group.appNetwork Architect
WP-03 Datendienstealicloud_db_instance.ordersData Architect
WP-04 Datendienstealicloud_oss_bucket.uploadsStorage Architect
WP-05 Workloadsalicloud_instance.appPlatform 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.