Einführung der programmierbaren AWS Landing Zone in einem Terraform-Modul

Hallo zusammen! Im Dezember startet OTUS einen neuen Kurs – Cloud-Lösungsarchitektur. Im Vorgriff auf den Beginn dieses Kurses stellen wir Ihnen eine Übersetzung interessanten Materials zu diesem Thema zur Verfügung.

Einführung der programmierbaren AWS Landing Zone in einem Terraform-Modul

AWS-Landezone ist eine Lösung, die Kunden dabei hilft, schnell eine sichere AWS-Umgebung mit mehreren Konten einzurichten, die auf Best Practices basiert.

Seit über fünf Jahren arbeitet unser Team bei der Mitoc Group unermüdlich daran, große Unternehmen bei der erfolgreichen digitalen Transformation und dem Aufbau oder der Migration ihres digitalen Fußabdrucks in die AWS-Cloud zu unterstützen. Mit anderen Worten, um unsere Freunde bei AWS zu zitieren: „Unsere Kunden erfinden sich mit AWS neu.“ Es ist eine nie endende Anstrengung, die Mechanik im Namen der Kunden selbst neu zu erfinden und zu vereinfachen, und AWS leistet hervorragende Arbeit bei der Lösung komplexer Probleme mit leicht zu erlernenden Lösungen.

Einführung der programmierbaren AWS Landing Zone in einem Terraform-Modul
AWS-Landezone (Quelle)

Was ist die AWS Landing Zone?

Nach Angaben einer offiziellen Quelle:

AWS Landing Zone ist eine Lösung, die Kunden dabei hilft, schnell eine sichere AWS-Umgebung mit mehreren Konten basierend auf den Best Practices von AWS einzurichten. Bei so vielen Optionen kann die Einrichtung einer Umgebung mit mehreren Konten zeitaufwändig sein, die Konfiguration mehrerer Konten und Dienste erfordern und ein tiefes Verständnis der AWS-Dienste erfordern.

AWS Landing Zone hat die Komplexität und Konsistenz ähnlicher Entwurfsmuster, die an verschiedene Kunden geliefert werden, erheblich reduziert. Andererseits musste unser Team einige CloudFormation-Komponenten als Terraform-Komponenten umkonfigurieren, um sie weiter für die Automatisierung nutzen zu können.

Deshalb haben wir uns gefragt: Warum nicht die gesamte AWS Landing Zone-Lösung in Terraform erstellen? Können wir das schaffen und wird es die Probleme unserer Kunden lösen? Spoiler: Es wird und entscheidet sich bereits! 🙂

Wann sollten Sie AWS Landing Zone nicht verwenden?

Wenn Sie es mit regulären Cloud-Diensten und Cloud-Ressourcen innerhalb eines oder zweier AWS-Konten zu tun haben, könnten diese Maßnahmen übertrieben sein. Wer mit diesem Punkt nichts zu tun hat, kann weiterlesen :)

Was sollten Sie vor Arbeitsbeginn beachten?

Viele der großen Organisationen, mit denen wir zusammengearbeitet haben, verfügen bereits über eine Art Cloud-Strategie. Unternehmen haben Schwierigkeiten, Cloud-Dienste erfolgreich zu implementieren, ohne eine klare Vision und Erwartungen zu haben. Bitte nehmen Sie sich die Zeit, Ihre Strategie zu definieren und zu verstehen, wie AWS darin passt.

Bei der Festlegung einer Strategie konzentrieren sich erfolgreiche AWS Landing Zone-Kunden aktiv auf Folgendes:

  • Automatisierung ist einfach keine Option. Cloud-native Automatisierung wird bevorzugt.
  • Zur Bereitstellung von Cloud-Ressourcen verwenden die Teams stets dieselben Mechanismen und dieselben Tools. Es ist besser, Terraform zu verwenden.
  • Die produktivsten Cloud-Benutzer haben die Möglichkeit, wiederverwendbare Prozesse zu erstellen und diese als wiederverwendbare Dienste anstelle von wiederverwendbarem Code bereitzustellen. Serverlose Architektur wird bevorzugt.

Vorstellung des Terraform-Moduls für AWS Landing Zone

Nach mehreren Monaten harter Arbeit freue ich mich, es Ihnen vorzustellen Terraform-Modul für AWS Landing Zone. Quellcode wird auf GitHub gespeichert und stabile Release-Versionen veröffentlicht in der Terraform-Modulregistrierung.

Um zu beginnen, schalten Sie es einfach ein main.tf zu deinem Code:

module "landing_zone" {
  source     = "TerraHubCorp/landing-zone/aws"
  version    = "0.0.6"
  root_path  = "${path.module}"
  account_id = "${var.account_id}"
  region     = "${var.region}"
  landing_zone_components = "${var.landing_zone_components}"
}

Hinweis: Stellen Sie sicher, dass die Funktion aktiviert ist variables.tf und alles, was Sie brauchen könnten outputs.tf.

Um das Verständnis zu erleichtern, haben wir Standardwerte hinzugefügt terraform.tfvars:

account_id = "123456789012"
region = "us-east-1"
landing_zone_components = {
  landing_zone_pipeline_s3_bucket = "s3://terraform-aws-landing-zone/mycompany/landing_zone_pipeline_s3_bucket/default.tfvars"
  [...]
}

Dies bedeutet, dass bei Verwendung dieses Moduls terraform Sie benötigen:

  1. Werte ändern account_id и region zu Ihren eigenen, die den Daten in der AWS-Organisation entsprechen;
  2. Werte ändern landing_zone_components diejenigen, die Ihrem AWS Landing Zone-Anwendungsfall entsprechen;
  3. Ändern s3://terraform-aws-landing-zone/mycompany zu deinem Block S3 und Schlüsselpräfix S3wo Sie die Dateien speichern .tfvars (oder absoluter Pfad zu Dateien .tfvars in Ihrem lokalen Speicher).

Dieses Modul kann über Dutzende, Hunderte oder Tausende von bereitstellbaren Komponenten verfügen, aber nicht alle davon sollten oder werden bereitgestellt. Zur Laufzeit Komponenten, die nicht Teil der Variablenzuordnung sind landing_zone_components wird ignoriert.

Abschluss

Wir sind begeistert und stolz, die Früchte unserer Bemühungen zu teilen, Kunden beim Aufbau cloudnativer Automatisierung zu unterstützen. Das Terraform-Modul für AWS Landing Zone ist eine weitere Lösung, die Unternehmen dabei hilft, schnell eine sichere AWS-Umgebung mit mehreren Konten basierend auf AWS-Best Practices einzurichten. Wir sind uns bewusst, dass AWS wahnsinnig schnell wächst, und wir sind bestrebt, schnell eine Terraform-Lösung zu entwickeln, die alle Grundlagen abdeckt und sich auch in andere AWS-Produktionslösungen integrieren lässt.

Das ist alles. Wir warten auf Ihre Kommentare und laden Sie dazu ein kostenloses Webinar innerhalb dessen wir Lassen Sie uns das Design der Cloud Landing Zone-Domänenarchitektur untersuchen und die Architekturmuster der Hauptdomänen betrachten.

Source: habr.com

Kommentar hinzufügen