AWS TERRAFORM → STACKIT TERRAFORM

AWS Terraform zu STACKIT Terraform

StackToIT liest Ihr AWS-Terraform so, wie Ihre Entwickler es geschrieben haben, mit Modulen und Variablen, und schreibt STACKIT-Provider-Code, den Ihr Plattformteam prüfen, versionieren und über die eigene Pipeline anwenden kann.

Eine echte Konvertierung: Aurora PostgreSQL zu PostgreSQL Flex

Die Orders-Datenbank der AWS Retail Store Sample App, links genau so, wie AWS sie veröffentlicht, rechts genau so, wie StackToIT sie im veröffentlichten Lauf geschrieben hat.

AWS-Quelleterraform/lib/dependencies/orders_rds.tf
module "orders_rds" {
  source  = "terraform-aws-modules/rds-aurora/aws"
  version = "7.7.1"

  name           = "${var.environment_name}-orders"
  engine         = "aurora-postgresql"
  engine_version = "15.10"
  instance_class = "db.t3.medium"

  instances = {
    one = {}
  }

  vpc_id  = var.vpc_id
  subnets = var.subnet_ids

  allowed_security_groups = concat(var.allowed_security_group_ids, [var.orders_security_group_id])

  master_password        = random_string.orders_db_master.result
  create_random_password = false
  database_name          = "orders"
  storage_encrypted      = true
  apply_immediately      = true
  skip_final_snapshot    = true

  create_db_parameter_group = true
  db_parameter_group_name   = "${var.environment_name}-orders"
  db_parameter_group_family = "aurora-postgresql15"

  create_db_cluster_parameter_group = true
  db_cluster_parameter_group_name   = "${var.environment_name}-orders"
  db_cluster_parameter_group_family = "aurora-postgresql15"

  tags = var.tags
}
STACKIT-Terraform von StackToITterraform/data.tf
resource "stackit_postgresflex_instance" "dependencies_orders_rds_this" {
  project_id = var.project_id
  name       = "retail-store-ecs-orders"
  version    = "15"
  flavor_id  = "2.4"
  storage = {
    class = var.postgresflex_storage_class
    size  = var.orders_rds_storage_size
  }
  backup_schedule = "0 2 * * *"
  network = {
    acl          = coalescelist(var.orders_rds_allowed_cidrs, stackit_ske_cluster.retail_app_ecs_cluster.egress_address_ranges)
    access_scope = var.orders_rds_access_scope == "SNA" ? "SNA" : null
  }
  retention_days = 32
}
  • Engine und Version übernommen

    Aus aurora-postgresql 15 wird eine PostgreSQL-Flex-Instanz in Version 15, benannt nach der Quelle.

  • Netzwerkzugriff aus dem Graphen

    Standardmäßig stammt die ACL der Datenbank aus den Egress-Bereichen des SKE-Clusters, der die ECS-Dienste ersetzt. So erreichen nur die Workloads die Datenbank.

  • Zu entscheidende Werte werden Variablen

    Speicherklasse und -größe sind Eingaben mit benannter Herkunft, keine erfundenen Standardwerte. Ihr Team setzt sie einmal, und der nächste Lauf liest sie ein.

  • Jedes Attribut erfasst

    Von den 27 relevanten Attributen dieses Aurora-Clusters wird jedes verbraucht, einem STACKIT-Vertrag zugeordnet oder als nicht übernommen benannt. Keines bleibt unerfasst.

So funktioniert die Konvertierung

  1. Umgebung auflösen

    Root-Module, Child-Module aus der Terraform Registry, Variablen sowie count- und for_each-Expansionen werden zu einem Abhängigkeitsgraphen.

  2. Pro Ressource entscheiden

    Eine versionierte Regelbasis gibt jeder Ressource ein STACKIT-Ziel und eine Migrationsklasse, abhängig von ihrer tatsächlichen Konfiguration.

  3. STACKIT-Code schreiben

    Dateien pro Bereich: Netzwerk, Daten, Identität, Kubernetes, Load Balancing, Messaging, Sicherheit und Observability, dazu Variablen und festgelegte Provider-Versionen.

  4. Validieren und nachverfolgen

    Statische Validierung mit OpenTofu gegen den festgelegten STACKIT-Provider und Trace-IDs vom STACKIT-Code zurück zu jeder Quellressource.

Was in terraform/ entsteht

Das STACKIT-Terraform des Retail-Store-Laufs, so gegliedert, wie ein Plattformteam es pflegt.

network.tf
STACKIT-Netzwerke für die bisherige VPC und ihre Subnetze
data.tf
PostgreSQL Flex, MariaDB, Key Value Store, OpenSearch und MongoDB Flex
kubernetes.tf
SKE-Cluster und Node Pool für die ECS-Workloads
identity.tf
Service Accounts und Rollenzuweisungen für die bisherigen IAM-Rollen
loadbalancing.tf
STACKIT Application Load Balancer
messaging.tf
STACKIT RabbitMQ für Amazon MQ
security.tf
Security Groups und Regeln
observability.tf
STACKIT Logs
variables.tf
Jeder Wert, den Ihr Team festlegt, mit Herkunft
terraform.tf
Festgelegter STACKIT-Provider

Bewiesen an einer echten AWS-Umgebung

Die AWS Retail Store Sample App, ein öffentliches Terraform-Projekt von AWS, von StackToIT bewertet und vollständig veröffentlicht, genau so, wie der Lauf es geschrieben hat.

Fallstudie ansehen (Englisch)
282
Terraform-Ressourcendefinitionen analysiert
44
Migrationseinheiten identifiziert
38
Zieleinheiten erzeugt, von 52 betrachteten
331
Planschritte erstellt

Fragen aus Plattformteams

Konvertiert StackToIT Terraform-Module?

Ja. StackToIT löst Registry- und lokale Module auf, auch die Community-Module für AWS, und ordnet die Ressourcen zu, die sie erzeugen. Die Konvertierung oben stammt aus dem Modul terraform-aws-modules/rds-aurora.

Funktioniert das mit OpenTofu?

Ja. StackToIT liest Terraform- und OpenTofu-Root-Module und validiert den STACKIT-Code statisch mit OpenTofu.

Wer wendet das STACKIT-Terraform an?

Ihr Team, über Ihre eigene Pipeline, nachdem Ihre Architekten es geprüft haben. StackToIT ändert nichts in einer Cloud.

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.