Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Validez le code Account Factory pour Terraform (AFT) localement
Créé par Alexandru Pop (AWS) et Michal Gorniak () AWS
Environnement : Production | Technologies : infrastructure DevOps ; modernisation ; DevelopmentAndTesting | Charge de travail : Open source |
AWSservices : AWS Control Tower |
Récapitulatif
Ce modèle montre comment tester localement le code HashiCorp Terraform géré par AWS Control Tower Account Factory pour Terraform (). AFT Terraform est un outil open source d'infrastructure sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources cloud. AFTmet en place un pipeline Terraform qui vous aide à approvisionner et à personnaliser plusieurs AWS comptes dans AWS Control Tower.
Lors du développement du code, il peut être utile de tester votre infrastructure Terraform en tant que code (IaC) localement, en dehors du AFT pipeline. Ce modèle montre comment effectuer les opérations suivantes :
Récupérez une copie locale du code Terraform stocké dans les AWS CodeCommit référentiels de votre AFT compte de gestion.
Simulez le AFT pipeline localement en utilisant le code récupéré.
Cette procédure peut également être utilisée pour exécuter des commandes Terraform qui ne font pas partie du pipeline normalAFT. Par exemple, vous pouvez utiliser cette méthode pour exécuter des commandes telles que terraform validate
terraform plan
,terraform destroy
, etterraform import
.
Conditions préalables et limitations
Prérequis
Un environnement AWS multi-comptes actif qui utilise AWSControl Tower
Un AFTenvironnement entièrement déployé
AWSInterface de ligne de commande (AWSCLI), installée et configurée
AWSCLIassistant d'identification pour Code Commit, installé et configuré
Python 3.x
Git
, installé et configuré sur votre machine locale git-remote-commit utilitaire, installé et configuré
Terraform
, installé et configuré (la version du package Terraform local doit correspondre à la version utilisée lors du déploiement) AFT
Limites
Ce modèle ne couvre pas les étapes de déploiement requises pour AWS Control TowerAFT, ni pour aucun module Terraform spécifique.
La sortie générée localement au cours de cette procédure n'est pas enregistrée dans les journaux d'exécution du AFT pipeline.
Architecture
Pile technologique cible
AFTinfrastructure déployée dans le cadre d'un déploiement AWS de Control Tower
Terraform
Git
AWSCLIversion 2
Automatisation et évolutivité
Ce modèle montre comment invoquer localement le code Terraform pour la personnalisation AFT globale des comptes dans un seul AFT compte géré. AWS Une fois votre code Terraform validé, vous pouvez l'appliquer aux comptes restants de votre environnement multi-comptes. Pour plus d'informations, consultez la section Personnalisations Re-invoke dans la documentation de AWS Control Tower.
Vous pouvez également utiliser un processus similaire pour exécuter des personnalisations de AFT compte dans un terminal local. Pour invoquer localement le code Terraform à partir des personnalisations de AFT compte, clonez le aft-account-customizations référentiel plutôt que le aft-global-account-customizationsréférentiel depuis votre AFT compte de CodeCommit gestion.
Outils
AWSservices
AWSControl Tower vous aide à configurer et à gérer un environnement AWS multi-comptes, conformément aux meilleures pratiques prescriptives.
AWSL'interface de ligne de commande (AWSCLI) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.
Autres services
HashiCorp Terraform
est un outil open source d'infrastructure sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources cloud. Git
est un système de contrôle de version distribué et open source.
Code
Voici un exemple de script bash qui peut être utilisé pour exécuter localement du code Terraform géré par. AFT Pour utiliser le script, suivez les instructions de la section Epics de ce modèle.
#! /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 "$@"
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Enregistrez l'exemple de code dans un fichier local. |
| AWSadministrateur |
Rendez l'exemple de code exécutable. | Ouvrez une fenêtre de terminal et authentifiez-vous dans votre compte AWS AFT de gestion en effectuant l'une des opérations suivantes :
Remarque : Votre organisation dispose peut-être également d'un outil personnalisé pour fournir des informations d'authentification à votre AWS environnement. | AWSadministrateur |
Vérifiez l'accès au compte AFT de gestion dans la bonne AWS région. | Important : Assurez-vous d'utiliser la même session de terminal que celle avec laquelle vous vous êtes authentifié dans votre compte AFT de gestion.
| AWSadministrateur |
Créez un nouveau répertoire local pour stocker le code du AFT référentiel. | Au cours de la même session de terminal, exécutez les commandes suivantes :
| AWSadministrateur |
Clonez le code AFT du référentiel distant. |
| AWSadministrateur |
Tâche | Description | Compétences requises |
---|---|---|
Ouvrez un AFT pipeline déjà exécuté et copiez les fichiers de configuration Terraform dans un dossier local. | Remarque : Les fichiers de configuration backend.tf et aft-providers.tf créés dans cette épopée sont nécessaires au fonctionnement local du pipeline. AFT Ces fichiers sont créés automatiquement dans le AFT pipeline basé sur le cloud, mais doivent être créés manuellement pour que le pipeline s'exécute localement. L'exécution locale du AFT pipeline nécessite un ensemble de fichiers représentant l'exécution du pipeline au sein d'un seul AWS compte.
Exemple d'instruction backend.tf générée automatiquement
Remarque : Les | AWSadministrateur |
Tâche | Description | Compétences requises |
---|---|---|
Implémentez les modifications de configuration Terraform que vous souhaitez valider. |
| AWSadministrateur |
Exécutez le script ct_terraform.sh et examinez le résultat. |
Important :
| AWSadministrateur |
Tâche | Description | Compétences requises |
---|---|---|
Ajoutez des références aux fichiers backend.tf et aft-providers.tf à un fichier .gitignore. | Ajoutez les
Remarque : le déplacement des fichiers vers le | AWSadministrateur |
Validez et transférez vos modifications de code vers le AFT référentiel distant. |
Important : les modifications de code que vous introduisez en suivant cette procédure jusqu'à présent ne sont appliquées qu'à un seul AWS compte. | AWSadministrateur |
Tâche | Description | Compétences requises |
---|---|---|
Appliquez les modifications à tous vos comptes gérés parAFT. | Pour appliquer les modifications à plusieurs AWS comptes gérés parAFT, suivez les instructions de la section Personnalisations Réinvoquée dans la documentation de AWS Control Tower. | AWSadministrateur |