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.
Utilisation CodePipeline pour déployer Terraform et les modèles CloudFormation
Notice (Avis)
AWS CodeCommit n'est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. En savoir plus
Dans leDPA, vous utilisez des blocs de construction pour AWS CodePipeline créer des accélérateurs pour Terraform et IaC. CloudFormation Cette section décrit les éléments suivants pour ce cas d'utilisation :
-
Structure de pipeline normalisée
-
Stages et travaux réutilisables
-
Outils intégrés pour les scans de sécurité
Le DPA référentiel contient des dossiers pour Terraform
-
pipeline-modules — Ce dossier contient le code permettant de déployer la structure de pipeline normalisée.
-
shared — Ce dossier contient les fichiers ready-to-use buildspec pour les DPA étapes et les tâches.
Prérequis
-
Un actif Compte AWS
-
Autorisations pour approvisionner des ressources à l'aide de modèles IaC
-
Autorisations pour créer des AWS CodeCommit référentiels et des composants CodePipeline
Outils
-
cfn-lint
est un linter qui vérifie les JSON modèles par rapport à la CloudFormation YAML spécification des ressources.AWS CloudFormation Il effectue également d'autres contrôles, tels que la vérification de la validité des valeurs des propriétés des ressources et le respect des meilleures pratiques. -
cfn_nag
est un outil open source qui identifie les problèmes de sécurité potentiels dans les CloudFormation modèles en recherchant des modèles. -
Checkov
est un outil d'analyse de code statique qui vérifie les erreurs de configuration liées à la sécurité et à la conformité dans iAc. -
TFLint
est un linter qui vérifie la présence d'erreurs potentielles dans le code Terraform et le respect des meilleures pratiques. -
tfsec
est un outil d'analyse de code statique qui vérifie le code Terraform pour détecter d'éventuelles erreurs de configuration.
Instructions
Création de CodeCommit référentiels
-
Créez deux CodeCommit référentiels distincts comme suit :
-
common-repo
— Ce référentiel contient les bibliothèques partagées, les fichiers buildspec et les dépendances. -
app-repo
— Ce référentiel contient le Terraform ou les CloudFormation modèles pour déployer votre infrastructure.
Pour obtenir des instructions, consultez la section Création d'un AWS CodeCommit référentiel.
-
-
Dans le
common-repo
dépôt, créez un dossier nomméshared
. Copiez les fichiers buildspec du dossier Terraformou CloudFormation partagé du GitHub DPA dépôt vers le nouveau dossier. Pour obtenir des instructions, voir Création ou ajout d'un fichier dans un AWS CodeCommit référentiel. -
Dans le
app-repo
référentiel, créez un dossier nomméentrypoint
. Copiez le fichier du dossier Terraformou CloudFormation entrypoint du GitHub DPA dépôt vers le nouveau dossier. Pour plus d'informations sur ces fichiers, consultezComprendre le JSON fichier des points d'entrée. -
Passez en revue le répertoire Terraform
ou CloudFormation examples, puis structurez votre app-repo
dossier en fonction de ces exemples. Ces annuaires contiennent des exemples de déploiement d'une instance Amazon Elastic Compute Cloud (AmazonEC2) ou d'un bucket Amazon Simple Storage Service (Amazon S3). -
Passez à l'une des deux sections suivantes :
Création du pipeline et définition des étapes (Terraform)
-
Clonez le référentiel DevOps Pipeline Accelerator (DPA)
depuis GitHub votre station de travail locale. -
Dans le référentiel cloné, accédez au
aws-codepipeline/terraform/pipeline-modules
dossier. -
Dans le fichier terraform.tfvars, mettez à jour et validez l'état de Terraform et les variables spécifiques au rôle (). AWS Identity and Access Management IAM
-
Créez une image Docker. Pour obtenir des instructions, consultez la section Création d'images Docker pour l'utilisation de in CodeBuild
(GitHub). -
Mettez à jour la
builder_image
variable définie dans le fichier terraform.tfvars. -
Entrez les commandes suivantes : Cela initialise, prévisualise et déploie l'infrastructure via Terraform.
terraform init terraform plan terraform apply
-
Connectez-vous au Compte AWS. Dans la CodePipeline console
, vérifiez que le nouveau pipeline a été créé. Remarque : Si la première exécution est dans un
failed
état, répétez l'étape précédente. -
Lorsque le nouveau CodePipeline pipeline est créé, un nouveau IAM rôle pour AWS CodeBuild est créé automatiquement. Le nom de ce rôle créé automatiquement se termine par
-codebuild-role
. Mettez à jour ce rôle avec les autorisations requises pour déployer votre infrastructure.
Créez le pipeline et définissez les étapes (CloudFormation)
-
Clonez le référentiel DevOps Pipeline Accelerator (DPA)
depuis GitHub votre station de travail locale. -
Dans le référentiel cloné, accédez au
aws-codepipeline/cloudformation/pipeline-modules
dossier. -
Déployez le modèle CloudFormation pipeline-cft.yaml. Les paramètres obligatoires que vous devez transmettre à la pile sont les suivants.
-
ArtifactsBucket
— Nom du dépôt contenant les artefacts du pipeline à mettre à jour -
EcrDockerRepository
— Identifiant de ressource uniforme (URI) du ECR référentiel Amazon avec leimage
tag -
CodeCommitAppRepo
— Nom du CodeCommit référentiel contenant les modèles -
CodeCommitBaseRepo
— Nom du CodeCommit référentiel contenant les fichiers partagés -
CodeCommitRepoBranch
— Nom de la branche CodeCommit du dépôt -
SNSMailAddress
— Adresse e-mail qui recevra les notifications Amazon Simple Notification Service (AmazonSNS) concernant l'état du pipeline
Pour obtenir des instructions, consultez la section Utilisation des piles dans la CloudFormation documentation.
-
-
Connectez-vous au AWS compte. Dans la CodePipeline console
, vérifiez que le nouveau pipeline a été créé. -
Lorsque le nouveau CodePipeline pipeline est créé, un nouveau IAM rôle pour AWS CodeBuild est créé automatiquement. Le nom de ce rôle créé automatiquement se termine par
-codebuild-role
. Mettez à jour ce rôle avec les autorisations requises pour déployer votre infrastructure.
Comprendre le JSON fichier des points d'entrée
Fichier de point d'entrée Terraform
Il s'agit du fichier de configuration principal. Dans ce fichier, vous pouvez personnaliser et activer ou désactiver une étape. Si vous désactivez une étape, elle ne la supprime ni ne la retire du pipeline. Au lieu de cela, l'étape est ignorée pendant l'exécution.
{ "build_stage_required" : "true", "test_stage_required" : "true", "predeploy_stage_required": "true", "deploy_stage_required": "true", "postdeploy_stage_required": "true", "destroy_stage_required": "true", "bucket":"tf-state-dpa", # S3 bucket used for Terraform backend "key":"terraform_test.tfstate", # S3 key to be used "region":"us-east-1", "dynamodb_table":"tf-state-dpa" # DynamoDB Table for Terraform backend }
CloudFormation fichier de point d'entrée
Il s'agit du fichier de configuration principal. Dans ce fichier, vous personnalisez les étapes et vous les activez ou les désactivez. Si vous désactivez une étape, elle ne la supprime ni ne la retire du pipeline. Au lieu de cela, le pipeline ignore l'étape pendant l'exécution.
{ "init_stage_required" : "true", "test_stage_required" : "true", "createinfra_stage_required": "true", "envType" : "cloudformation", "stage_required" : "true", "cft_s3_bucket" : "pipeline-bucket", #S3 bucket from the destination account to keep CFT templates "stack_name" : "aws-cft-poc", #CloudFormation stack name "account" : "************", #Destination AWS account to deploy stack "roleName" : "codestack-poc-cross-account-role", #Cross-account IAM role name "region" : "us-east-1", "destroy_stack" : "false" #To destroy the provisioned stack, set this value to "true" }