Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen Sie mit Actions und Terragrunt ein API-gesteuertes Framework GitHub zur Ressourcenorchestrierung
Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande und Akash Kumar, Amazon Web Services
Übersicht
Dieses Muster nutzt GitHub Actions-Workflows, um die Ressourcenbereitstellung durch standardisierte JSON-Payloads zu automatisieren, sodass keine manuelle Konfiguration erforderlich ist. Diese automatisierte Pipeline verwaltet den gesamten Bereitstellungszyklus und kann nahtlos in verschiedene Frontend-Systeme integriert werden, von benutzerdefinierten UI-Komponenten bis hin zu. ServiceNow Die Flexibilität der Lösung ermöglicht es Benutzern, über ihre bevorzugten Schnittstellen mit dem System zu interagieren und gleichzeitig standardisierte Prozesse beizubehalten.
Die konfigurierbare Pipeline-Architektur kann an unterschiedliche organisatorische Anforderungen angepasst werden. Die Beispielimplementierung konzentriert sich auf die Bereitstellung von Amazon Virtual Private Cloud (Amazon VPC) und Amazon Simple Storage Service (Amazon S3). Das Muster bewältigt effektiv allgemeine Herausforderungen bei der Verwaltung von Cloud-Ressourcen, indem Anfragen im gesamten Unternehmen standardisiert und konsistente Integrationspunkte bereitgestellt werden. Dieser Ansatz erleichtert es Teams, Ressourcen anzufordern und zu verwalten und gleichzeitig die Standardisierung sicherzustellen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto
Ein aktives GitHub Konto mit Zugriff auf das konfigurierte Repository
Einschränkungen
Neue Ressourcen erfordern das manuelle Hinzufügen von
terragrunt.hcl
Dateien zur Repository-Konfiguration.Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWS Dienste nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
Das folgende Diagramm zeigt die Komponenten und den Arbeitsablauf dieses Musters.

Das Architekturdiagramm zeigt die folgenden Aktionen:
Der Benutzer sendet eine JSON-Payload an GitHub Actions, wodurch die Automatisierungspipeline ausgelöst wird.
Die GitHub Actions-Pipeline ruft den erforderlichen Ressourcencode auf der Grundlage der Payload-Spezifikationen aus den Terragrunt- und Terraform-Repositorys ab.
Die Pipeline nimmt unter Verwendung der angegebenen ID die entsprechende AWS Identity and Access Management (IAM-) Rolle an. AWS-Konto Anschließend stellt die Pipeline die Ressourcen auf dem Ziel bereit AWS-Konto und verwaltet den Terraform-Status mithilfe des kontospezifischen Amazon S3 S3-Buckets und der Amazon DynamoDB-Tabelle.
Jedes AWS-Konto enthält IAM-Rollen für den sicheren Zugriff, einen Amazon S3 S3-Bucket für die Terraform-Statusspeicherung und eine DynamoDB-Tabelle für das Sperren von Zuständen. Dieses Design ermöglicht eine kontrollierte, automatisierte Bereitstellung von Ressourcen in allen Bereichen. AWS-Konten Der Bereitstellungsprozess gewährleistet eine ordnungsgemäße Statusverwaltung und Zugriffskontrolle durch spezielle Amazon S3 S3-Buckets und IAM-Rollen in jedem Konto.
Tools
AWS-Services
Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
AWS Identity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
Amazon Virtual Private Cloud (Amazon VPC) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.
Andere Tools
GitHub Actions
ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorien integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren. Terraform
ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können. Terragrunt
ist ein Orchestrierungstool, das sowohl die Funktionen von Terraform als auch die Funktionen von Terraform erweitert. OpenTofu Es verwaltet, wie generische Infrastrukturmuster angewendet werden, und erleichtert so die Skalierung und Wartung großer Infrastrukturanlagen.
Code-Repository
Der Code für dieses Muster ist im Repository GitHub sample-aws-orchestration-pipeline-terraform
Bewährte Methoden
Speichern Sie AWS Anmeldeinformationen und vertrauliche Daten mithilfe von GitHub Repository-Geheimnissen für einen sicheren Zugriff.
Konfigurieren Sie den OpenID Connect (OIDC) -Anbieter für GitHub Aktionen so, dass er die IAM-Rolle übernimmt und statische Anmeldeinformationen vermeiden.
Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter Gewährung der geringsten Rechte und bewährte Methoden zur Sicherheit.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Initialisieren Sie das GitHub Repository. | Gehen Sie wie folgt vor, um das GitHub Repository zu initialisieren:
| DevOps Ingenieur |
Konfigurieren Sie die IAM-Rollen und -Berechtigungen. | Gehen Sie wie folgt vor, um die IAM-Rollen und -Berechtigungen zu konfigurieren:
| DevOps Ingenieur |
Richten Sie GitHub Geheimnisse und Variablen ein. | Anweisungen zum Einrichten von Repository-Geheimnissen und -Variablen im GitHub Repository finden Sie in der GitHub Dokumentation unter Konfigurationsvariablen für ein Repository erstellen
| DevOps Ingenieur |
Erstellen Sie die Repository-Struktur. | Gehen Sie wie folgt vor, um die Repository-Struktur zu erstellen:
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie die Pipeline mit curl aus. | Gehen Sie wie folgt vor, um die Pipeline mithilfe von curl
Weitere Informationen zum Pipeline-Ausführungsprozess finden Sie unter Zusätzliche Informationen. | DevOps Ingenieur |
Validieren Sie die Ergebnisse der Pipeline-Ausführung | Gehen Sie wie folgt vor, um die Ergebnisse zu validieren:
Sie können die erstellten Ressourcen auch verifizieren, indem Sie die im Repository erstellte | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Reichen Sie eine Reinigungsanfrage ein. | Gehen Sie wie folgt vor, um Ressourcen zu löschen, die nicht mehr benötigt werden:
| DevOps Ingenieur |
Zugehörige Ressourcen
AWS Blogs
AWS-Service Dokumentation
GitHub Ressourcen
Zusätzliche Informationen
Prozess der Pipeline-Ausführung
Im Folgenden sind die Schritte der Pipeline-Ausführung aufgeführt:
Validiert das JSON-Nutzdatenformat — Stellt sicher, dass die eingehende JSON-Konfiguration ordnungsgemäß strukturiert ist und alle erforderlichen Parameter enthält
Nimmt die angegebene IAM-Rolle an — Authentifiziert sich und übernimmt die für den Betrieb erforderliche IAM-Rolle AWS
Lädt den erforderlichen Terraform- und Terragrunt-Code herunter — Ruft die angegebene Version des Ressourcencodes und der Abhängigkeiten ab
Führt die Ressourcenbereitstellung aus — Wendet die Konfiguration für die Bereitstellung oder Aktualisierung von Ressourcen in der Zielumgebung an AWS
Beispielnutzlast, die für die VPC-Erstellung verwendet wurde
Im Folgenden finden Sie einen Beispielcode für die Erstellung eines Terraform-Backend-State-Buckets:
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
Im Folgenden finden Sie eine Beispiel-Payload für die Erstellung einer VPC mit Amazon VPC, in der die CIDR-Blockspezifikationen für die VPC vpc_cidr
definiert werden. Der Terraform-State-Bucket ist einer in den Dateien definierten Variablen zugeordnet. terraform
Der ref
Parameter enthält den Zweignamen des auszuführenden Codes.
{ "ref": "main", "inputs": { "RequestParameters": { "RequestId": "1111111", "RequestType": "create", "ResourceType": "vpc", "AccountId": "1234567890", "AccountAlias": "account-alias", "RegionId": "us-west-2", "ApplicationName": "myapp", "DivisionName": "division-name", "EnvironmentId": "dev", "Suffix": "poc" }, "ResourceParameters": [ { "VPC": { "vpc_cidr": "10.0.0.0/16" } } ] } }
RequestParameters
werden verwendet, um den Status der Anfrage im Pipeline-Abschnitt zu verfolgen, und tfstate
werden auf der Grundlage dieser Informationen erstellt. Die folgenden Parameter enthalten Metadaten und Steuerinformationen:
RequestId
— Eindeutiger Bezeichner für die AnfrageRequestType
— Art des Vorgangs (erstellen, aktualisieren oder löschen)ResourceType
— Art der Ressource, die bereitgestellt werden sollAccountId
— Ziel AWS-Konto für den EinsatzAccountAlias
— Freundlicher Name für den AWS-KontoRegionId
— AWS-Region für den Einsatz von RessourcenApplicationName
— Name der AnwendungDivisionName
— Abteilung OrganisationEnvironmentId
— Umwelt (zum Beispiel Entwicklung und Produktion)Suffix
— Zusätzliche Kennung für die Ressourcen
ResourceParameters
enthalten eine ressourcenspezifische Konfiguration, die den in den Terraform-Dateien definierten Variablen zugeordnet ist. Alle benutzerdefinierten Variablen, die an die Terraform-Module übergeben werden müssen, sollten in enthalten sein. ResourceParameters
Der Parameter vpc_cidr
ist für Amazon VPC obligatorisch.