Utilizzo per distribuire Terraform CodePipeline e modelli CloudFormation - AWS Guida prescrittiva

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à.

Utilizzo per distribuire Terraform CodePipeline e modelli CloudFormation

Comunicazione

AWS CodeCommit non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni

NelDPA, si utilizzano blocchi costitutivi per AWS CodePipeline creare acceleratori per Terraform e CloudFormation IAc. Questa sezione descrive quanto segue per questo caso d'uso:

  • Struttura della tubazione standardizzata

  • Fasi e lavori riutilizzabili

  • Strumenti integrati per le scansioni di sicurezza

Il DPA repository contiene cartelle per Terraform e. CloudFormation Ognuna di queste cartelle contiene le seguenti due sottocartelle:

  • pipeline-modules: questa cartella contiene il codice per la distribuzione della struttura di pipeline standardizzata.

  • shared: questa cartella contiene i file ready-to-use buildspec per le fasi e i lavori. DPA

Prerequisiti

  • Un attivo Account AWS

  • Autorizzazioni per il provisioning di risorse utilizzando modelli IaC

  • Autorizzazioni per creare repository e componenti AWS CodeCommit CodePipeline

Strumenti

Istruzioni

Crea repository CodeCommit

  1. Crea due CodeCommit repository separati come segue:

    • common-repo— Questo repository contiene le librerie condivise, i file buildspec e le dipendenze.

    • app-repo— Questo repository contiene Terraform o i modelli per implementare la tua infrastruttura. CloudFormation

    Per istruzioni, consulta Creare un repository. AWS CodeCommit

  2. Nel common-repo repository, crea una cartella denominata. shared Copia i file buildspec dalla cartella Terraform o CloudFormationcondivisa nel repository nella GitHub DPA nuova cartella. Per istruzioni, consulta Creare o aggiungere un file a un repository. AWS CodeCommit

  3. Nel app-repo repository, crea una cartella denominata. entrypoint Copia il file dalla cartella Terraform o CloudFormationentrypoint nel GitHub DPA repository nella nuova cartella. Per ulteriori informazioni su questi file, vedere. Comprensione del file del punto di ingresso JSON

  4. Esamina la directory Terraform o CloudFormationexamples, quindi struttura la app-repo cartella in base a questi esempi. Queste directory contengono esempi per la distribuzione di un'istanza Amazon Elastic Compute Cloud (AmazonEC2) o un bucket Amazon Simple Storage Service (Amazon S3).

  5. Continua con una delle due sezioni seguenti:

Crea la pipeline e definisci le fasi (Terraform)

  1. Clona il repository DevOps Pipeline Accelerator (DPA) dalla tua workstation locale. GitHub

  2. Nel repository clonato, accedete alla cartella. aws-codepipeline/terraform/pipeline-modules

  3. Nel file terraform.tfvars, aggiorna e convalida lo stato di Terraform e le variabili specifiche del ruolo (). AWS Identity and Access Management IAM

  4. Crea un'immagine Docker. Per istruzioni, consulta Creazione di immagini Docker da usare in CodeBuild ()GitHub.

  5. Aggiorna la builder_image variabile definita nel file terraform.tfvars.

  6. Esegui i comandi seguenti: Questo inizializza, visualizza in anteprima e distribuisce l'infrastruttura tramite Terraform.

    terraform init terraform plan terraform apply
  7. Accedi alla Account AWS. Nella CodePipeline console, conferma che la nuova pipeline è stata creata.

    Nota: se la prima esecuzione è in uno failed stato, ripeti il passaggio precedente.

  8. Quando viene creata la nuova CodePipeline pipeline, AWS CodeBuild viene creato automaticamente un nuovo IAM ruolo per. Il nome di questo ruolo creato automaticamente termina con. -codebuild-role Aggiorna questo ruolo con le autorizzazioni necessarie per implementare la tua infrastruttura.

Crea la pipeline e definisci le fasi () CloudFormation

  1. Clona il repository DevOps Pipeline Accelerator (DPA) dalla GitHub tua workstation locale.

  2. Nel repository clonato, accedete alla cartella. aws-codepipeline/cloudformation/pipeline-modules

  3. Distribuisci il modello pipeline-cft.yaml. CloudFormation Di seguito sono riportati i parametri obbligatori che è necessario passare allo stack.

    • ArtifactsBucket— Nome del repository che contiene gli artefatti della pipeline da aggiornare

    • EcrDockerRepository— Uniform resource identifier (URI) del ECR repository Amazon con il tag image

    • CodeCommitAppRepo— Nome del CodeCommit repository che contiene i modelli

    • CodeCommitBaseRepo— Nome del CodeCommit repository che contiene i file condivisi

    • CodeCommitRepoBranch— Nome del ramo del CodeCommit repository

    • SNSMailAddress— Indirizzo e-mail che riceverà le notifiche di Amazon Simple Notification Service (AmazonSNS) sullo stato della pipeline

    Per istruzioni, consulta Lavorare con gli stacks nella CloudFormation documentazione.

  4. Accedi all'AWSaccount. Nella CodePipeline console, conferma che la nuova pipeline è stata creata.  

  5. Quando viene creata la nuova CodePipeline pipeline, viene creato automaticamente un nuovo IAM ruolo per AWS CodeBuild . Il nome di questo ruolo creato automaticamente termina con. -codebuild-role Aggiorna questo ruolo con le autorizzazioni necessarie per implementare la tua infrastruttura.

Comprensione del file del punto di ingresso JSON

File del punto di ingresso Terraform

Questo è il file di configurazione principale. In questo file, puoi personalizzare e abilitare o disabilitare uno stage. Se disabilitate una fase, questa non elimina o rimuove la fase dalla pipeline. Invece, lo stage viene saltato durante l'esecuzione.

{ "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 file del punto di ingresso

Questo è il file di configurazione principale. In questo file, personalizzi le fasi e le abiliti o disabiliti. Se disabilitate una fase, questa non elimina o rimuove la fase dalla pipeline. Al contrario, la pipeline salta la fase durante l'esecuzione.

{ "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" }