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.
Validieren Sie den Code von Account Factory for Terraform (AFT) lokal
Erstellt von Alexandru Pop (AWS) und Michal Gorniak (AWS)
Umgebung: Produktion | Technologien: Infrastruktur DevOps; Modernisierung; DevelopmentAndTesting | Arbeitslast: Open Source |
AWS-Services: AWS Control Tower |
Übersicht
Dieses Muster zeigt, wie HashiCorp Terraform-Code, der von AWS Control Tower Account Factory for Terraform (AFT) verwaltet wird, lokal getestet wird. Terraform ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. AFT richtet eine Terraform-Pipeline ein, mit der Sie mehrere AWS-Konten in AWS Control Tower bereitstellen und anpassen können.
Während der Codeentwicklung kann es hilfreich sein, Ihre Terraform-Infrastruktur als Code (IaC) lokal außerhalb der AFT-Pipeline zu testen. Dieses Muster zeigt, wie Sie Folgendes tun können:
Rufen Sie eine lokale Kopie des Terraform-Codes ab, der in den CodeCommit AWS-Repositorys in Ihrem AFT-Verwaltungskonto gespeichert ist.
Simulieren Sie die AFT-Pipeline lokal mithilfe des abgerufenen Codes.
Dieses Verfahren kann auch verwendet werden, um Terraform-Befehle auszuführen, die nicht Teil der normalen AFT-Pipeline sind. Sie können diese Methode beispielsweise verwenden, um Befehle wieterraform validate
, terraform plan
terraform destroy
, und auszuführen. terraform import
Voraussetzungen und Einschränkungen
Voraussetzungen
Eine aktive AWS-Umgebung mit mehreren Konten, die AWS Control Tower
verwendet Eine vollständig bereitgestellte AFT-Umgebung
AWS-Befehlszeilenschnittstelle (AWS CLI), installiert und konfiguriert
AWS CLI Credential Helper für Code Commit, installiert und konfiguriert
Python 3.x
Git
, auf Ihrem lokalen Computer installiert und konfiguriert git-remote-commit Hilfsprogramm, installiert und konfiguriert
Terraform
, installiert und konfiguriert (die lokale Terraform-Paketversion muss mit der Version übereinstimmen, die in der AFT-Bereitstellung verwendet wird)
Einschränkungen
Dieses Muster deckt nicht die Bereitstellungsschritte ab, die für AWS Control Tower, AFT oder bestimmte Terraform-Module erforderlich sind.
Die Ausgabe, die während dieses Vorgangs lokal generiert wird, wird nicht in den Laufzeitprotokollen der AFT-Pipeline gespeichert.
Architektur
Zieltechnologie-Stack
AFT-Infrastruktur, die innerhalb einer AWS Control Tower Tower-Bereitstellung bereitgestellt wird
Terraform
Git
AWS-CLI Version 2
Automatisierung und Skalierung
Dieses Muster zeigt, wie Terraform-Code für globale AFT-Kontoanpassungen in einem einzigen von AFT verwalteten AWS-Konto lokal aufgerufen wird. Nachdem Ihr Terraform-Code validiert wurde, können Sie ihn auf die verbleibenden Konten in Ihrer Umgebung mit mehreren Konten anwenden. Weitere Informationen finden Sie unter Anpassungen erneut aufrufen in der AWS Control Tower Tower-Dokumentation.
Sie können auch einen ähnlichen Prozess verwenden, um AFT-Kontoanpassungen in einem lokalen Terminal durchzuführen. Um Terraform-Code lokal aus AFT-Kontoanpassungen aufzurufen, klonen Sie das aft-account-customizations Repository anstelle des Repositorys CodeCommit in Ihrem aft-global-account-customizationsAFT-Verwaltungskonto.
Tools
AWS-Services
AWS Control Tower unterstützt Sie bei der Einrichtung und Verwaltung einer AWS-Umgebung mit mehreren Konten und folgt dabei den vorgeschriebenen Best Practices.
AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
Andere Dienste
HashiCorp Terraform
ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. Git
ist ein verteiltes Open-Source-Versionskontrollsystem.
Code
Im Folgenden finden Sie ein Beispiel für ein Bash-Skript, mit dem Terraform-Code, der von AFT verwaltet wird, lokal ausgeführt werden kann. Folgen Sie den Anweisungen im Abschnitt Epics dieses Musters, um das Skript zu verwenden.
#! /bin/bash # Version: 1.1 2022-06-24 Unsetting AWS_PROFILE since, when set, it interferes with script operation # 1.0 2022-02-02 Initial Version # # Purpose: For use with AFT: This script runs the local copy of TF code as if it were running within AFT pipeline. # * Facilitates testing of what the AFT pipline will do # * Provides the ability to run terraform with custom arguments (like 'plan' or 'move') which are currently not supported within the pipeline. # # © 2021 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. # This AWS Content is provided subject to the terms of the AWS Customer Agreement # available at http://aws.amazon.com/agreement or other written agreement between # Customer and either Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both. # # Note: Arguments to this script are passed directly to 'terraform' without parsing nor validation by this script. # # Prerequisites: # 1. local copy of ct GIT repositories # 2. local backend.tf and aft-providers.tf filled with data for the target account on which terraform is to be run # Hint: The contents of above files can be obtain from the logs of a previous execution of the AFT pipeline for the target account. # 3. 'terraform' binary is available in local PATH # 4. Recommended: .gitignore file containing 'backend.tf', 'aft_providers.tf' so the local copy of these files are not pushed back to git readonly credentials=$(aws sts assume-role \ --role-arn arn:aws:iam::$(aws sts get-caller-identity --query "Account" --output text ):role/AWSAFTAdmin \ --role-session-name AWSAFT-Session \ --query Credentials ) unset AWS_PROFILE export AWS_ACCESS_KEY_ID=$(echo $credentials | jq -r '.AccessKeyId') export AWS_SECRET_ACCESS_KEY=$(echo $credentials | jq -r '.SecretAccessKey') export AWS_SESSION_TOKEN=$(echo $credentials | jq -r '.SessionToken') terraform "$@"
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Speichern Sie den Beispielcode als lokale Datei. |
| AWS-Administrator |
Machen Sie den Beispielcode lauffähig. | Öffnen Sie ein Terminalfenster und authentifizieren Sie sich bei Ihrem AWS AFT-Managementkonto, indem Sie einen der folgenden Schritte ausführen:
Hinweis: Ihre Organisation verfügt möglicherweise auch über ein benutzerdefiniertes Tool zur Bereitstellung von Authentifizierungsdaten für Ihre AWS-Umgebung. | AWS-Administrator |
Überprüfen Sie den Zugriff auf das AFT-Verwaltungskonto in der richtigen AWS-Region. | Wichtig: Stellen Sie sicher, dass Sie dieselbe Terminalsitzung verwenden, mit der Sie sich bei Ihrem AFT-Verwaltungskonto authentifiziert haben.
| AWS-Administrator |
Erstellen Sie ein neues, lokales Verzeichnis zum Speichern des AFT-Repository-Codes. | Führen Sie in derselben Terminalsitzung die folgenden Befehle aus:
| AWS-Administrator |
Klonen Sie den Remote-AFT-Repository-Code. |
| AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Öffnen Sie eine zuvor ausgeführte AFT-Pipeline und kopieren Sie die Terraform-Konfigurationsdateien in einen lokalen Ordner. | Hinweis: Die Konfigurationsdateien backend.tf und aft-providers.tf, die in diesem Epic erstellt wurden, werden benötigt, damit die AFT-Pipeline lokal ausgeführt werden kann. Diese Dateien werden automatisch innerhalb der cloudbasierten AFT-Pipeline erstellt, müssen aber manuell erstellt werden, damit die Pipeline lokal ausgeführt werden kann. Für die lokale Ausführung der AFT-Pipeline ist ein Satz von Dateien erforderlich, der den Betrieb der Pipeline innerhalb eines einzigen AWS-Kontos darstellt.
Beispiel für eine automatisch generierte backend.tf-Anweisung
Hinweis: Die | AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Implementieren Sie die Terraform-Konfigurationsänderungen, die Sie validieren möchten. |
| AWS-Administrator |
Führen Sie das Skript ct_terraform.sh aus und überprüfen Sie die Ausgabe. |
Wichtig
| AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Fügen Sie Verweise auf die Backend-Dateien .tf und aft-providers.tf zu einer .gitignore-Datei hinzu. | Fügen Sie die
Hinweis: Durch das Verschieben der Dateien in die | AWS-Administrator |
Übergeben Sie Ihre Codeänderungen und übertragen Sie sie an das Remote-AFT-Repository. |
Wichtig: Die Codeänderungen, die Sie bis zu diesem Zeitpunkt vornehmen, indem Sie dieses Verfahren befolgen, gelten nur für ein AWS-Konto. | AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Nehmen Sie die Änderungen auf all Ihre von AFT verwalteten Konten vor. | Folgen Sie den Anweisungen unter Anpassungen erneut aufrufen in der AWS Control Tower-Dokumentation, um die Änderungen auf mehrere von AFT verwaltete AWS-Konten anzuwenden. | AWS-Administrator |