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
-
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
-
cfn-lint
è un linter che controlla CloudFormation YAML o JSON crea modelli in base alle specifiche delle risorse.AWS CloudFormation Esegue anche altri controlli, come la verifica di valori validi per le proprietà delle risorse e l'aderenza alle migliori pratiche. -
cfn_nag
è uno strumento open source che identifica potenziali problemi di sicurezza nei CloudFormation modelli cercando modelli. -
Checkov è uno strumento statico di analisi del codice che verifica
la presenza di configurazioni errate di sicurezza e conformità in IaC. -
TFLint
è un linter che controlla il codice Terraform per potenziali errori e il rispetto delle migliori pratiche. -
tfsec
è uno strumento statico di analisi del codice che controlla il codice Terraform per potenziali errori di configurazione.
Istruzioni
Crea repository CodeCommit
-
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
-
-
Nel
common-repo
repository, crea una cartella denominata.shared
Copia i file buildspec dalla cartella Terraformo CloudFormation condivisa nel repository nella GitHub DPA nuova cartella. Per istruzioni, consulta Creare o aggiungere un file a un repository. AWS CodeCommit -
Nel
app-repo
repository, crea una cartella denominata.entrypoint
Copia il file dalla cartella Terraformo CloudFormation entrypoint nel GitHub DPA repository nella nuova cartella. Per ulteriori informazioni su questi file, vedere. Comprensione del file del punto di ingresso JSON -
Esamina la directory Terraform
o CloudFormation examples, 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). -
Continua con una delle due sezioni seguenti:
Crea la pipeline e definisci le fasi (Terraform)
-
Clona il repository DevOps Pipeline Accelerator (DPA)
dalla tua workstation locale. GitHub -
Nel repository clonato, accedete alla cartella.
aws-codepipeline/terraform/pipeline-modules
-
Nel file terraform.tfvars, aggiorna e convalida lo stato di Terraform e le variabili specifiche del ruolo (). AWS Identity and Access Management IAM
-
Crea un'immagine Docker. Per istruzioni, consulta Creazione di immagini Docker da usare in CodeBuild
()GitHub. -
Aggiorna la
builder_image
variabile definita nel file terraform.tfvars. -
Esegui i comandi seguenti: Questo inizializza, visualizza in anteprima e distribuisce l'infrastruttura tramite Terraform.
terraform init terraform plan terraform apply
-
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. -
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
-
Clona il repository DevOps Pipeline Accelerator (DPA)
dalla GitHub tua workstation locale. -
Nel repository clonato, accedete alla cartella.
aws-codepipeline/cloudformation/pipeline-modules
-
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 tagimage
-
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.
-
-
Accedi all'AWSaccount. Nella CodePipeline console
, conferma che la nuova pipeline è stata creata. -
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" }