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 mithilfe von Aktionen automatisierte Pull-Requests für die von Terraform verwaltete Infrastruktur AWS GitHub
Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay und Prafful Gupta, Amazon Web Services
Zusammenfassung
Dieses Muster stellt ein Automatisierungsprogramm dar, das darauf ausgelegt ist, die manuelle, sich wiederholende Arbeit zu vermeiden, die mit der Verwaltung von Änderungen in mehreren Terraform-Repositorys verbunden ist. Viele Organisationen verwenden Terraform-Repositorys, um ihre Infrastruktur als Code (IaC) zu verwalten, oft mit Hunderten von separaten Repositorys, die unterschiedliche Umgebungen, Dienste oder Teams repräsentieren. Die Verwaltung dieser Repositorien in großem Maßstab stellt eine erhebliche betriebliche Herausforderung dar. Routineaufgaben wie das Aktualisieren eines Parameters, das Aktualisieren von Modulversionen oder das Anwenden von Konfigurationsänderungen erfordern häufig das mehrmalige Erstellen und Verwalten von Pull-Requests (PRs) für viele Repositorys mehrmals täglich.
Selbst bei einfachen Änderungen ist dieser sich wiederholende und manuelle Prozess zeitaufwändig und fehleranfällig. Techniker müssen die gleiche Änderung konsequent auf alle Ziel-Repositorien anwenden und aussagekräftige PR-Titel und -Beschreibungen erstellen. Darüber hinaus müssen sie häufig mit externen Tools wie Jira interagieren, um Referenzen zur Problemverfolgung abzurufen oder einzubeziehen. Diese Aufgaben sind zwar notwendig, stellen jedoch eine undifferenzierte Schwerstarbeit dar, die wertvolle Entwicklungszeit in Anspruch nimmt und die Gesamteffizienz beeinträchtigt. Der Mangel an Automatisierung in diesem Arbeitsablauf führt zu Reibungen, verlangsamt die Bereitstellung und erhöht die kognitive Belastung der Teams, die mit der Wartung umfangreicher Terraform-Infrastrukturen beauftragt sind.
Überblick über die Lösung
Um dieser Herausforderung zu begegnen, bietet dieses Muster ein vollständig konfigurationsorientiertes Hilfsprogramm, mit dem Benutzer ihre gewünschten Änderungen in einer strukturierten Konfigurationsdatei definieren können. Diese Datei spezifiziert die Ziel-Repositorys, Module, Parameter und Werte anhand eines klar definierten Schemas.
Nach der Konfiguration führt das Hilfsprogramm die folgenden automatisierten Schritte aus:
Liest die benutzerdefinierte Konfiguration, um den Umfang und die Art der Änderungen zu bestimmen
Erstellt in jedem Ziel-Repository einen neuen Branch, in dem die erforderlichen Updates angewendet werden
Generiert für jede Änderung eine PR, wodurch die Konsistenz in allen Repositorys gewährleistet wird
Sendet Slack-Benachrichtigungen (optional), um Stakeholder über direkte Links zu den erstellten Inhalten zu informieren PRs
Durch die Automatisierung dieser sich wiederholenden Aufgaben reduziert das Tool den Zeit- und Arbeitsaufwand sowie die Risiken, die mit der Verwaltung umfangreicher Infrastruktur-Updates verbunden sind, erheblich. Es ermöglicht Teams, sich auf höherwertige technische Arbeiten zu konzentrieren und gleichzeitig sicherzustellen, dass Änderungen konsistent angewendet werden und in allen Repositorys nachverfolgt werden können.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver. AWS-Konto
Python-Version 3.8 oder höher.
Ein GitHub persönliches Zugriffstoken (PAT). Weitere Informationen finden Sie in der GitHub Dokumentation unter Erstellen eines persönlichen Zugriffstokens (klassisch)
. Das GitHub PAT kann auf Ihre Ziel-Repositorys zugreifen, sodass das Utility Operationen wie das Erstellen von Branches und Pull-Requests ausführen kann. Weitere Informationen finden Sie im GitHub Code-Repository
dieses Musters.
Einschränkungen
Die Komplexität der Konfiguration stellt die größte Herausforderung dar. Die Effektivität der Automatisierung wird durch die Funktionen ihrer Konfigurationsdatei eingeschränkt. Obwohl das System Standardänderungen effizient verarbeitet, können komplexe Infrastrukturänderungen manuelle Eingriffe erfordern, und bestimmte Randfälle gehen nach wie vor über den Rahmen einer automatisierten Bearbeitung hinaus.
Sicherheit und Zugriff stellen wichtige Überlegungen dar, insbesondere bei der Verwaltung von GitHub Zugriffstoken und API-Ratenbegrenzungen. Organizations müssen die Notwendigkeit der Automatisierung sorgfältig mit der sicheren Speicherung und Verwaltung von Anmeldeinformationen abwägen, um angemessene Zugriffskontrollen zu gewährleisten und gleichzeitig die betriebliche Effizienz aufrechtzuerhalten.
Einschränkungen bei der Validierung stellen eine weitere wichtige Einschränkung dar, da das automatisierte System nur begrenzt in der Lage ist, Geschäftslogik und umgebungsspezifische Anforderungen zu validieren. Komplexe Abhängigkeiten und dienstübergreifende Interaktionen erfordern oft menschliche Aufsicht, da die automatisierte Validierung nicht alle kontextuellen Nuancen und Geschäftsregeln vollständig erfassen kann.
Skalierungs- und Leistungsprobleme treten auf, wenn es um umfangreiche Infrastrukturänderungen geht. Das System muss innerhalb der GitHub API-Grenzen arbeiten und gleichzeitig zahlreiche Repositorys verwalten. Ressourcenintensive Operationen in einer umfangreichen Infrastruktur können zu Leistungsengpässen führen, die eine sorgfältige Verwaltung erfordern.
Integrationsgrenzen schränken die Flexibilität des Systems ein, da es in erster Linie für die Arbeit mit bestimmten Tools wie Slack konzipiert ist. GitHub Organizations, die unterschiedliche Tools verwenden, benötigen möglicherweise benutzerdefinierte Lösungen, und die Workflow-Anpassungsoptionen dieses Musters sind auf unterstützte Integrationspunkte beschränkt.
Architektur
Das folgende Diagramm zeigt den Arbeitsablauf und die Komponenten für diese Lösung.

Der Workflow besteht aus folgenden Schritten:
Der Entwickler löst GitHub Aktionen aus, indem er das Terraform-Repository angibt.
Das Automatisierungsprogramm liest die definierten Konfigurationen.
Das Automatisierungsdienstprogramm ruft auch das bereitgestellte Terraform-Repository ab.
Das Automatisierungsdienstprogramm erstellt einen neuen Branch und aktualisiert die Terraform-Vorlagen lokal.
Das Automatisierungsdienstprogramm überträgt den neuen Branch in das Repository und erstellt einen neuen PR.
Das Automatisierungsprogramm verwendet Slack-Benachrichtigungen, die PR-Links enthalten, um Entwickler zu benachrichtigen, und aktiviert Terraform-Vorlagen für die Bereitstellung. AWS Cloud
Tools
GitHub
ist eine Entwicklerplattform, mit der Entwickler ihren Code erstellen, speichern, verwalten und teilen können. GitHub Actions
ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorys integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren. HashiCorp Terraform
ist ein IaC-Tool (Infrastructure as Code), mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können. Slack
, ein Salesforce-Angebot, ist eine KI-gestützte Konversationsplattform, die Chat- und Videozusammenarbeit ermöglicht, Prozesse ohne Code automatisiert und den Informationsaustausch unterstützt.
Code-Repository
Der Code für dieses Muster ist im GitHub Automated Terraform Infrastructure Update Workflow using GitHub Actions
Best Practices
Ein effektives Änderungsmanagement ist entscheidend für eine erfolgreiche Implementierung. Organizations sollten eine schrittweise Einführungsstrategie für groß angelegte Änderungen verfolgen. Halten Sie konsistente Konventionen für die Benennung von Filialen und PR-Beschreibungen ein und stellen Sie sicher, dass alle Änderungen umfassend dokumentiert werden.
Sicherheitskontrollen müssen rigoros implementiert werden, wobei der Schwerpunkt auf den Prinzipien des Zugriffs mit den geringsten Rechten und der sicheren Verwaltung von Anmeldeinformationen liegt. Aktivieren Sie Regeln zum Schutz von Zweigstellen, um unbefugte Änderungen zu verhindern. Führen Sie regelmäßige Sicherheitsaudits durch, um die Systemintegrität aufrechtzuerhalten.
Ein robustes Testprotokoll sollte die automatisierte
terraform planAusführung in Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) beinhalten. Das Protokoll sollte auch Validierungsprüfungen vor dem Commit und spezielle Überprüfungsumgebungen für kritische Änderungen beinhalten. Dieser mehrschichtige Testansatz hilft, Probleme frühzeitig zu erkennen und gewährleistet die Stabilität der Infrastruktur.Die Überwachungsstrategie muss umfassende Warnmechanismen, eine detaillierte Nachverfolgung von success/failure Kennzahlen und automatische Wiederholungsmechanismen für fehlgeschlagene Operationen umfassen. Diese Strategie trägt dazu bei, die betriebliche Transparenz zu gewährleisten und ermöglicht eine schnelle Reaktion auf auftretende Probleme.
Bei den Konfigurationsstandards sollte der Schwerpunkt auf der Versionskontrolle für alle Konfigurationen liegen, wobei die Modularität im Hinblick auf Wiederverwendbarkeit und Skalierbarkeit gewahrt werden sollte. Eine klare Dokumentation des Schemas und der Beispiele hilft den Teams, das Automatisierungssystem zu verstehen und effektiv zu nutzen.
Epen
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Richten Sie das Repository ein. | Führen Sie die folgenden Befehle aus, um das Repository einzurichten:
| AWS DevOps |
Installieren Sie die Abhängigkeiten. | Führen Sie die folgenden Befehle aus, um die Python-Abhängigkeiten zu installieren und zu überprüfen:
| AWS DevOps |
Konfigurieren Sie das GitHub Token. | Führen Sie die folgenden Befehle aus, um das GitHub Token zu konfigurieren und anschließend zu überprüfen, ob es funktioniert:
| AWS DevOps |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Richten Sie die | Um Ihre Ziel-Repositorys und die gewünschten Änderungen zu definieren, bearbeiten Sie die
| AWS DevOps |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Führen Sie Tests vor dem Flug durch. | Testen Sie Ihre Konfiguration immer, bevor Sie sie auf Produktions-Repositorys ausführen. Verwenden Sie die folgenden Befehle:
| AWS DevOps |
Überprüfen Sie den Repository-Zugriff. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das GitHub Token auf das Repository zugreifen kann:
| AWS DevOps |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Führen Sie das Automatisierungsdienstprogramm mithilfe der GitHub Aktions-Benutzeroberfläche aus. | Gehen Sie wie folgt vor, um das Automatisierungsdienstprogramm über die GitHub Aktions-Benutzeroberfläche auszuführen:
| AWS DevOps |
(Alternative) Führen Sie das Automatisierungsdienstprogramm von der Befehlszeile aus. | Wenn Sie möchten, können Sie das Automatisierungsdienstprogramm auch von der Befehlszeile aus ausführen, anstatt die Benutzeroberfläche für GitHub Aktionen zu verwenden. Verwenden Sie den folgenden Befehl:
| AWS DevOps |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Überprüfen Sie die erstellten PRs Dateien und Änderungen. | Gehen Sie wie folgt vor, um die Ergebnisse der GitHub Workflow-Ausführung zu überwachen:
| AWS DevOps |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
(Optional) Aufräumen PRs. | Schliessen, verlassen oder unnötig PRs. | AWS DevOps |
Zugehörige Ressourcen
AWS Präskriptive Leitlinien
GitHub Dokumentation