Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Convalida il codice Account Factory for Terraform (AFT) localmente
Creato da Alexandru Pop (AWS) e Michal Gorniak (AWS)
Ambiente: produzione | Tecnologie: infrastruttura DevOps; modernizzazione; DevelopmentAndTesting | Carico di lavoro: open source |
Servizi AWS: AWS Control Tower |
Riepilogo
Questo modello mostra come testare localmente il codice HashiCorp Terraform gestito da AWS Control Tower Account Factory for Terraform (AFT). Terraform è uno strumento open source di infrastruttura as code (IaC) che ti aiuta a utilizzare il codice per fornire e gestire infrastrutture e risorse cloud. AFT configura una pipeline Terraform che consente di effettuare il provisioning e personalizzare più account AWS in AWS Control Tower.
Durante lo sviluppo del codice, può essere utile testare l'infrastruttura Terraform as code (IaC) localmente, al di fuori della pipeline AFT. Questo modello mostra come eseguire le seguenti operazioni:
Recupera una copia locale del codice Terraform archiviato nei CodeCommit repository AWS nel tuo account di gestione AFT.
Simula la pipeline AFT localmente utilizzando il codice recuperato.
Questa procedura può essere utilizzata anche per eseguire comandi Terraform che non fanno parte della normale pipeline AFT. Ad esempio, è possibile utilizzare questo metodo per eseguire comandi cometerraform validate
, terraform plan
terraform destroy
, e. terraform import
Prerequisiti e limitazioni
Prerequisiti
Un ambiente AWS attivo con più account che utilizza AWS Control
Tower AWS Command Line Interface (AWS CLI), installata e configurata
Helper di credenziali AWS CLI per Code Commit, installato e configurato
Python 3.x
Git
, installato e configurato sul tuo computer locale git-remote-commit utilità, installata e configurata
Terraform
, installato e configurato (la versione locale del pacchetto Terraform deve corrispondere alla versione utilizzata nella distribuzione AFT)
Limitazioni
Questo modello non copre le fasi di distribuzione richieste per AWS Control Tower, AFT o qualsiasi modulo Terraform specifico.
L'output generato localmente durante questa procedura non viene salvato nei log di runtime della pipeline AFT.
Architettura
Stack tecnologico Target
Infrastruttura AFT distribuita all'interno di una distribuzione AWS Control Tower
Terraform
Git
AWS CLI versione 2
Automazione e scalabilità
Questo modello mostra come richiamare localmente il codice Terraform per le personalizzazioni degli account globali AFT in un singolo account AWS gestito da AFT. Dopo aver convalidato il codice Terraform, puoi applicarlo agli account rimanenti nel tuo ambiente multi-account. Per ulteriori informazioni, consulta Re-invoke customizations nella documentazione di AWS Control Tower.
Puoi anche utilizzare un processo simile per eseguire personalizzazioni dell'account AFT in un terminale locale. Per richiamare localmente il codice Terraform dalle personalizzazioni dell'account AFT, clona il repository anziché il aft-account-customizations repository dal tuo account di gestione aft-global-account-customizationsAFT. CodeCommit
Strumenti
Servizi AWS
AWS Control Tower ti aiuta a configurare e gestire un ambiente AWS multi-account, seguendo le best practice prescrittive.
AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.
Altri servizi
HashiCorp Terraform
è uno strumento open source di infrastruttura come codice (IaC) che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud. Git
è un sistema di controllo delle versioni distribuito e open source.
Codice
Di seguito è riportato un esempio di script bash che può essere utilizzato per eseguire localmente il codice Terraform gestito da AFT. Per utilizzare lo script, segui le istruzioni nella sezione Epics di questo pattern.
#! /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 "$@"
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Salva il codice di esempio come file locale. |
| Amministratore AWS |
Rendi eseguibile il codice di esempio. | Apri una finestra di terminale ed esegui l'autenticazione nel tuo account di gestione AWS AFT effettuando una delle seguenti operazioni:
Nota: la tua organizzazione potrebbe anche disporre di uno strumento personalizzato per fornire credenziali di autenticazione al tuo ambiente AWS. | Amministratore AWS |
Verifica l'accesso all'account di gestione AFT nella regione AWS corretta. | Importante: assicurati di utilizzare la stessa sessione di terminale con cui ti sei autenticato nel tuo account di gestione AFT.
| Amministratore AWS |
Crea una nuova directory locale per archiviare il codice del repository AFT. | Nella stessa sessione di terminale, esegui i seguenti comandi:
| Amministratore AWS |
Clona il codice del repository AFT remoto. |
| Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Apri una pipeline AFT precedentemente eseguita e copia i file di configurazione Terraform in una cartella locale. | Nota: i file di configurazione backend.tf e aft-providers.tf creati in questa epopea sono necessari per l'esecuzione locale della pipeline AFT. Questi file vengono creati automaticamente all'interno della pipeline AFT basata sul cloud, ma devono essere creati manualmente affinché la pipeline possa essere eseguita localmente. L'esecuzione locale della pipeline AFT richiede un set di file che rappresenti l'esecuzione della pipeline all'interno di un singolo account AWS.
Esempio di istruzione backend.tf generata automaticamente
Nota: i | Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa le modifiche alla configurazione di Terraform che desideri convalidare. |
| Amministratore AWS |
Esegui lo script ct_terraform.sh ed esamina l'output. |
Importante:
| Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiungi riferimenti ai file backend.tf e aft-providers.tf a un file.gitignore. | Aggiungi i file and che hai creato a un file eseguendo i
Nota: lo spostamento dei | Amministratore AWS |
Conferma e invia le modifiche al codice nell'archivio AFT remoto. |
Importante: le modifiche al codice introdotte seguendo questa procedura fino a questo punto vengono applicate a un solo account AWS. | Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa le modifiche a tutti i tuoi account gestiti da AFT. | Per implementare le modifiche a più account AWS gestiti da AFT, segui le istruzioni in Re-invoke customizations nella documentazione di AWS Control Tower. | Amministratore AWS |