HUAWEI CLOUD → STACKIT · VOLLSTÄNDIGER LEITFADEN

Der vollständige Leitfaden für die Migration von Huawei Cloud zu STACKIT

Beginnen Sie mit dem Terraform, das Sie schon haben: stacktoit assess ausführen, assessment.json und die Wellenfolge lesen, die Entscheidungen klären, die der Lauf Ihnen überlässt, zuerst das STACKIT-Netzwerk bauen, dann Daten, Compute und zuletzt die Edge-Dienste umziehen. Im Beispiellauf dieser Seite werden neun Huawei-Cloud-Ressourcen zu neun Einheiten in drei Wellen; acht davon stuft der Lauf als RECONFIGURE ein, eine als REPLATFORM. Keine davon wird als STACKIT-Terraform geschrieben, jede ist also ein manueller Schritt mit einem Verantwortlichen. Der Leitfaden folgt der Reihenfolge dieses Laufs und nennt zu jedem Schritt die Entscheidung dahinter.

Die Migration in acht Schritten

  1. 1. Terraform sammeln und Provider-Version festschreiben

    Sammeln Sie jedes Root-Modul, das den Provider huaweicloud/huaweicloud nutzt, und committen Sie .terraform.lock.hcl. Ohne Lock-Eintrag meldet der Lauf den Provider als nicht festgeschrieben und begrenzt seine Einheiten auf MEDIUM-Konfidenz, wie es alle neun Einheiten des Beispiels zeigen.

  2. 2. Bewerten

    Führen Sie stacktoit assess ./huawei-terraform aus. Es liest die Dateien und verbindet sich mit keinem Huawei-Cloud-Konto; eine von Hand angelegte Ressource, die in keinem Modul steht, fehlt daher im Ergebnis. Nehmen Sie sie zuerst ins Terraform auf oder führen Sie sie selbst auf. Eine sensible Variable ohne Wert, im Beispiel db_password, hält den Lauf nicht an: Die Konsole meldet sie als fehlende Eingabe und setzt die Quelle auf VARIABLE_UNRESOLVED, und die Antwortvorlage zählt sie zu den Anfragen, die den Entwurf blockieren. Übergeben Sie den Wert mit --var-file oder als TF_VAR_-Umgebungsvariable.

  3. 3. Das Ergebnis in dieser Reihenfolge lesen

    assessment.json für Klasse, Ziel und Begründung jeder Einheit. migration/technical-sequencing.md für die Wellen. migration/data-movement.md für die zustandsbehafteten Einheiten. execution/manual/actions.md für die manuellen Schritte und ihre Zuständigen. engineering/architect-report.md für die Herleitung. index.html zeigt dasselbe in einem Arbeitsbereich.

  4. 4. Beantworten, was der Lauf fragt

    Der Beispiellauf nennt sechs offene Anfragen. Zwei blockieren den Entwurf: die STACKIT-Region (eu01 oder eu02) und der Wert von db_password. Vier sind Präferenzen, die der Build festhält, aber nicht anwenden kann: Projekt, Observability, öffentlicher Ingress und Egress. Kopieren Sie inputs-template.yaml aus dem Ausgabeordner heraus, füllen Sie die value-Zeilen aus und starten Sie den Lauf erneut mit --inputs. db_password gehört nicht in die Vorlage, sondern in eine Variablendatei oder nach TF_VAR_db_password.

  5. 5. Landing Zone und Netzwerk aufbauen

    Legen Sie zuerst Organisation, Ordner und Projekte an; das STACKIT Migration Framework nennt die Landing Zone die sichere Plattformbasis für migrierte Workloads. Eine VPC hat kein Eins-zu-eins-Gegenstück: Ihre Subnetze werden STACKIT-Netzwerke, und eine Network Area verbindet Projekte, wo Routing nötig ist. Danach folgen die Security Groups. STACKIT-Regeln erlauben nur Datenverkehr; jede Deny-Regel der Quelle braucht daher eine Entscheidung.

  6. 6. Daten umziehen

    Das Beispiel hat drei zustandsbehaftete Einheiten: ein EVS-Volume, einen OBS-Bucket und eine RDS-PostgreSQL-Instanz. Der Lauf setzt den Mechanismus jeder Einheit auf UNKNOWN und verlangt Ihre Wahl. Für PostgreSQL nennt der Lauf pg_dump und pg_restore oder logische Replikation; für einen Bucket ist rclone ein dokumentierter Weg; ein Volume zieht auf Host-Ebene oder mit dem Server-Image um.

  7. 7. Compute und Edge-Dienste umziehen

    Importieren oder bauen Sie das Image jedes Servers neu. STACKIT nimmt raw-, qcow2- und iso-Images bis 70 GB an, und qemu-img kann andere Formate nach raw konvertieren. Richten Sie danach den Network Load Balancer und die Public IP ein und passen Sie DNS-Einträge und Freigabelisten an, die die alte Adresse nennen.

  8. 8. Umstellen, beobachten, stilllegen

    Der Lauf nennt für diese Umgebung keine Cutover-Fakten und führt keinen Cutover aus. Stellen Sie, wo es passt, in der Reihenfolge der Wellen um, behalten Sie die Huawei-Cloud-Seite, bis Ihre Prüfungen bestehen, und halten Sie fest, wie jeder Schritt rückgängig gemacht wird: Den Rückweg überlässt der Plan der Person, die den Schritt ausführt.

Webserver, Datenbank und Load Balancer, bewertet

Eine kleine Huawei-Cloud-Umgebung mit neun Ressourcen, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet. Links drei Blöcke der Eingabe, rechts das Ergebnis, das der Lauf dafür festgehalten hat: ein Auszug aus assessment.json mit den Werten, wie der Lauf sie geschrieben hat.

Beispieleingabemain.tf
resource "huaweicloud_compute_instance" "web" {
  name               = "shop-web-01"
  image_id           = "6f3b0e2a-1c4d-4e5f-8a9b-0c1d2e3f4a5b"
  flavor_id          = "s6.xlarge.2"
  availability_zone  = "eu-west-101a"
  security_group_ids = [huaweicloud_networking_secgroup.app.id]
  system_disk_type   = "SSD"
  system_disk_size   = 40

  network {
    uuid = huaweicloud_vpc_subnet.app.id
  }
}

resource "huaweicloud_rds_instance" "orders" {
  name              = "shop-orders"
  flavor            = "rds.pg.n1.large.2"
  vpc_id            = huaweicloud_vpc.main.id
  subnet_id         = huaweicloud_vpc_subnet.app.id
  security_group_id = huaweicloud_networking_secgroup.app.id
  availability_zone = ["eu-west-101a"]

  db {
    type     = "PostgreSQL"
    version  = "16"
    password = var.db_password
  }

  volume {
    type = "ULTRAHIGH"
    size = 100
  }

  backup_strategy {
    start_time = "02:00-03:00"
    keep_days  = 7
  }
}

resource "huaweicloud_lb_loadbalancer" "front" {
  name          = "shop-front"
  vip_subnet_id = huaweicloud_vpc_subnet.app.ipv4_subnet_id
}
StackToIT-Bewertungassessment.json
[
  {
    "id": "huaweicloud_compute_instance.web",
    "result": {
      "class": "RECONFIGURE",
      "confidence": "MEDIUM",
      "target": {
        "service": "STACKIT Compute Engine"
      },
      "reason": "An ECS instance becomes a STACKIT server. The flavor becomes a STACKIT flavor, the image is rebuilt or imported, and the attached disks and interfaces become volumes and network interfaces."
    }
  },
  {
    "id": "huaweicloud_rds_instance.orders",
    "result": {
      "class": "REPLATFORM",
      "confidence": "MEDIUM",
      "target": {
        "service": "STACKIT PostgreSQL Flex"
      },
      "reason": "Managed PostgreSQL to managed PostgreSQL: data moves with pg_dump/pg_restore or logical replication, and the flavor becomes a Flex flavor."
    }
  },
  {
    "id": "huaweicloud_lb_loadbalancer.front",
    "result": {
      "class": "RECONFIGURE",
      "confidence": "MEDIUM",
      "target": {
        "service": "STACKIT Network Load Balancer"
      },
      "reason": "A shared load balancer becomes a STACKIT Network Load Balancer. Listeners and backends are rewritten, and the public address changes."
    }
  }
]
  • Acht von neun werden umkonfiguriert

    Netzwerk, Security Group, Datenträger, Bucket, Public IP, Server und Load Balancer behalten auf STACKIT ihre Rolle mit anderen Einstellungen. Nur die Datenbank wird als REPLATFORM eingestuft, weil sie zu einem anderen verwalteten Dienst wird.

  • Die Datenbank behält ihre Engine

    Managed PostgreSQL geht nach PostgreSQL Flex. Der Flavor wird ein Flex-Flavor, und die Daten ziehen mit pg_dump und pg_restore oder logischer Replikation um, so wie der Lauf es festhält.

  • Jede Einheit hat Verantwortliche

    Der Lauf ordnet die neun manuellen Schritte sieben Arbeitspaketen für die Rollen Network, Data, Storage und Platform Architect zu. Ein Paket ist erledigt, wenn das STACKIT-Gegenstück eingerichtet und geprüft ist.

So werden die neun Ressourcen zugeordnet

Huawei-Cloud-RessourceSTACKIT-ZielKlasse und Welle
VPCSTACKIT-Netzwerk; eine Network Area verbindet Projekte, wo Routing nötig istRECONFIGURE · Welle 1
Security GroupSTACKIT Security GroupRECONFIGURE · Welle 1
EVS-VolumeSTACKIT Block StorageRECONFIGURE · Welle 1
OBS-BucketSTACKIT Object Storage (S3-API)RECONFIGURE · Welle 1
EIPSTACKIT Public IP; die Adresse ändert sichRECONFIGURE · Welle 1
VPC-SubnetzSTACKIT-Netzwerk mit eigenem AdressbereichRECONFIGURE · Welle 2
ECS-InstanzSTACKIT-Compute-Engine-ServerRECONFIGURE · Welle 3
Shared Load BalancerSTACKIT Network Load BalancerRECONFIGURE · Welle 3
RDS PostgreSQLSTACKIT PostgreSQL FlexREPLATFORM · Welle 3

Klassen und Wellen so, wie der Lauf sie entschieden hat. Eine Welle ist eine Abhängigkeitsfolge: Eine Einheit zieht nach allen Einheiten um, von denen sie abhängt. Sie ist weder ein Zeitplan noch eine Reihenfolge für die Daten.

Wellenfolge und Provider-Pin, die der Lauf schreibt

Links die Abhängigkeitsfolge aus migration/technical-sequencing.md, Zeilen wie geschrieben. Rechts terraform/terraform.tf, das einzige Terraform, das der Lauf für diese Quelle schreibt, neben variables.tf und einer README.

Wellenfolgemigration/technical-sequencing.md
## Wave 1 — 5 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_evs_volume.uploads` | RECONFIGURE / MEDIUM | STACKIT Block Storage |
| `huaweicloud_networking_secgroup.app` | RECONFIGURE / MEDIUM | STACKIT security groups |
| `huaweicloud_obs_bucket.media` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
| `huaweicloud_vpc.main` | RECONFIGURE / MEDIUM | STACKIT network |
| `huaweicloud_vpc_eip.front` | RECONFIGURE / MEDIUM | STACKIT public IP |

## Wave 2 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_vpc_subnet.app` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 3 — 3 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_compute_instance.web` | RECONFIGURE / MEDIUM | STACKIT Compute Engine |
| `huaweicloud_lb_loadbalancer.front` | RECONFIGURE / MEDIUM | STACKIT Network Load Balancer |
| `huaweicloud_rds_instance.orders` | REPLATFORM / MEDIUM | STACKIT PostgreSQL Flex |

## Cutover (decision support — performed by the customer)

No cutover facts: the scan and the draft established no DNS record set whose value the draft re-binds to a generated address, no public address re-binding, no DNS record unit, no certificate unit and no open cutover decision. That is not a statement that nothing has to be cut over: a name, an address or a certificate outside the scanned source is not seen, and a unit that exists only if OpenTofu decides so at plan time is not read here. StackToIT performs no cutover and gives no time estimate.
Provider-Pinterraform/terraform.tf
terraform {
  # Write-only attributes (e.g. a VPN pre-shared key) need Terraform/OpenTofu 1.11 or later.
  required_version = ">= 1.11.0"

  required_providers {
    stackit = {
      source  = "stackitcloud/stackit"
      version = "0.121.0"
    }
  }
}
  • Zuerst das Netzwerk

    VPC und Security Group stehen vorn, das Subnetz folgt, und erst dann erscheinen Server, Load Balancer und Datenbank in Welle 3.

  • Daten sind keine Welle

    Datenträger, Bucket und Datenbank halten Zustand, aber die Wellentabelle ordnet Ressourcen, keine Datenkopien. Proben Sie jeden Datenumzug mit einem eigenen Zeitplan.

Entscheidungen, die bei Ihren Architekten bleiben

  • Region

    Der Lauf fragt nach eu01 oder eu02, bevor er einen Entwurf schreibt. Für PostgreSQL Flex hält er beide Regionen als verfügbar fest; für den Network Load Balancer hält er fest, dass die Verfügbarkeit je Region nicht belegt ist; prüfen Sie sie daher für Ihre Region.

  • Typ des Load Balancers

    Ein Shared Load Balancer wird auf den Network Load Balancer abgebildet, der nur auf Schicht 4 arbeitet und die Verschlüsselung Ihnen überlässt. Terminieren Ihre Listener TLS oder routen sie nach Pfad, planen Sie stattdessen einen Application Load Balancer.

  • Deny-Regeln

    STACKIT Security Groups erlauben nur Datenverkehr. Eine Deny-Regel oder eine Regelpriorität der Quelle lässt sich nicht wie geschrieben übernehmen.

  • Datenmechanismus, RPO und Ausfallzeit

    Datenklasse, Recovery Point und tolerierte Ausfallzeit stehen im Lauf auf NOT_PROVIDED, bis Sie sie nennen. Der Mechanismus ist dann Ihre Wahl je Einheit.

  • Öffentliche Adresse

    Die EIP wird eine STACKIT Public IP, und die Adresse selbst ändert sich; DNS-Einträge und Freigabelisten von Partnern ändern sich daher mit.

  • Aufbau der Landing Zone

    Zahl der Projekte, Ordner und die Frage, wer Netzwerke anlegen darf, sind Entwurfsentscheidungen, die der Lauf aus Terraform nicht ableiten kann.

Fragen, die Teams vor dem Start stellen

Schreibt StackToIT STACKIT-Terraform für eine Huawei-Cloud-Umgebung?

Für diese Dienste noch nicht. Der Lauf schreibt terraform.tf mit dem festgeschriebenen STACKIT-Provider, variables.tf und eine README und führt jede der neun Ressourcen als dem Architekten überlassen auf. Das Ergebnis sind Zuordnung, Begründungen und Reihenfolge.

Braucht StackToIT Zugriff auf unser Huawei-Cloud-Konto?

Nein. Es liest Terraform- und OpenTofu-Root-Module, die den Provider huaweicloud/huaweicloud verwenden, und verbindet sich mit keinem Konto. Was nur in der Konsole existiert, liegt außerhalb des Ergebnisses.

Sind die Wellen die Reihenfolge, in der wir umstellen?

Sie sind die Abhängigkeitsfolge der Ressourcen. Cutover, Datenkopien und Rückweg sind getrennte Entscheidungen, die der Plan der Person überlässt, die den jeweiligen Schritt ausführt.

Wie lange dauert so eine Migration?

Der Lauf nennt keine Dauer. Datenmenge, Änderungsrate und tolerierte Ausfallzeit stehen nicht im Terraform; die Datei zum Datenumzug führt sie deshalb als unbekannt, bis Sie sie angeben.

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.