As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando CodePipeline para implantar o Terraform e modelos CloudFormation
Aviso
AWS CodeCommit não está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais
No DPA, você usa blocos de construção para criar aceleradores AWS CodePipeline para Terraform e IaC. CloudFormation Esta seção descreve o seguinte para esse caso de uso:
-
Estrutura de tubulação padronizada
-
Estágios e trabalhos reutilizáveis
-
Ferramentas integradas para escaneamentos de segurança
O repositório do DPA contém pastas para Terraform e. CloudFormation
-
pipeline-modules — Essa pasta contém o código para implantar a estrutura padronizada do pipeline.
-
shared — Essa pasta contém arquivos ready-to-use buildspec para os estágios e trabalhos do DPA.
Pré-requisitos
-
Um ativo Conta da AWS
-
Permissões para provisionar recursos usando modelos de IaC
-
Permissões para criar AWS CodeCommit repositórios e componentes CodePipeline
Ferramentas
-
cfn-lint é um linter
que verifica os modelos CloudFormation YAML ou JSON em relação à especificação do recurso.AWS CloudFormation Ele também realiza outras verificações, como a verificação de valores válidos para as propriedades dos recursos e a adesão às melhores práticas. -
cfn_nag
é uma ferramenta de código aberto que identifica possíveis problemas de segurança em CloudFormation modelos pesquisando padrões. -
O Checkov
é uma ferramenta estática de análise de código que verifica o IaC em busca de configurações incorretas de segurança e conformidade. -
TFLint
é um linter que verifica o código do Terraform em busca de possíveis erros e da adesão às melhores práticas. -
O tfsec
é uma ferramenta estática de análise de código que verifica possíveis erros de configuração no código do Terraform.
Instruções
Crie CodeCommit repositórios
-
Crie dois CodeCommit repositórios separados da seguinte forma:
-
common-repo
— Esse repositório contém as bibliotecas compartilhadas, os arquivos buildspec e as dependências. -
app-repo
— Esse repositório contém o Terraform ou CloudFormation modelos para implantar sua infraestrutura.
Para obter instruções, consulte Criar um AWS CodeCommit repositório.
-
-
No
common-repo
repositório, crie uma pasta chamadashared
. Copie os arquivos buildspec do Terraformou da pasta CloudFormation compartilhada no repositório do GitHub DPA para a nova pasta. Para obter instruções, consulte Criar ou adicionar um arquivo a um AWS CodeCommit repositório. -
No
app-repo
repositório, crie uma pasta chamadaentrypoint
. Copie o arquivo da pasta Terraformou do CloudFormation ponto de entrada no repositório do GitHub DPA para a nova pasta. Para obter mais informações sobre esses arquivos, consulteEntendendo o arquivo JSON do ponto de entrada. -
Examine o diretório Terraform
ou CloudFormation examples e estruture sua app-repo
pasta de acordo com esses exemplos. Esses diretórios contêm exemplos de implantação de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) ou de um bucket do Amazon Simple Storage Service (Amazon S3). -
Continue até uma das duas seções a seguir:
Crie o pipeline e defina os estágios (Terraform)
-
Clone o repositório DevOps Pipeline Accelerator (DPA)
de sua estação de trabalho local GitHub. -
No repositório clonado, navegue até a
aws-codepipeline/terraform/pipeline-modules
pasta. -
No arquivo terraform.tfvars, atualize e valide o estado do Terraform e as variáveis específicas da função (IAM). AWS Identity and Access Management
-
Crie uma imagem do Docker. Para obter instruções, consulte Criação de imagem do Docker para usar in CodeBuild
(GitHub). -
Atualize a
builder_image
variável definida no arquivo terraform.tfvars. -
Insira os comandos a seguir: Isso inicializa, visualiza e implanta a infraestrutura por meio do Terraform.
terraform init terraform plan terraform apply
-
Faça login no Conta da AWS. No CodePipeline console
, confirme se o novo pipeline foi criado. Nota: Se a primeira execução estiver em um
failed
estado, repita a etapa anterior. -
Quando o novo CodePipeline pipeline é criado, uma nova função do IAM para AWS CodeBuild é criada automaticamente. O nome dessa função criada automaticamente termina em
-codebuild-role
. Atualize essa função com as permissões necessárias para implantar sua infraestrutura.
Crie o pipeline e defina estágios (CloudFormation)
-
Clone o repositório DevOps Pipeline Accelerator (DPA)
de sua estação de trabalho local GitHub. -
No repositório clonado, navegue até a
aws-codepipeline/cloudformation/pipeline-modules
pasta. -
Implante o modelo CloudFormation pipeline-cft.yaml. A seguir estão os parâmetros obrigatórios que você deve passar para a pilha.
-
ArtifactsBucket
— Nome do repositório que contém os artefatos do pipeline a serem atualizados -
EcrDockerRepository
— Identificador uniforme de recursos (URI) do repositório Amazon ECR com a tagimage
-
CodeCommitAppRepo
— Nome do CodeCommit repositório que contém os modelos -
CodeCommitBaseRepo
— Nome do CodeCommit repositório que contém os arquivos compartilhados -
CodeCommitRepoBranch
— Nome da ramificação do CodeCommit repositório -
SNSMailAddress
— Endereço de e-mail que receberá notificações do Amazon Simple Notification Service (Amazon SNS) sobre o status do pipeline
Para obter instruções, consulte Como trabalhar com pilhas na CloudFormation documentação.
-
-
Faça login na conta da AWS. No CodePipeline console
, confirme se o novo pipeline foi criado. -
Quando o novo CodePipeline pipeline é criado, uma nova função do IAM para AWS CodeBuild é criada automaticamente. O nome dessa função criada automaticamente termina em
-codebuild-role
. Atualize essa função com as permissões necessárias para implantar sua infraestrutura.
Entendendo o arquivo JSON do ponto de entrada
Arquivo de ponto de entrada do Terraform
Esse é o arquivo de configuração principal. Nesse arquivo, você pode personalizar e ativar ou desativar um estágio. Se você desativar um estágio, ele não excluirá nem removerá o estágio do pipeline. Em vez disso, o estágio é ignorado durante o tempo de execução.
{ "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 arquivo de ponto de entrada
Esse é o arquivo de configuração principal. Nesse arquivo, você personaliza os estágios e os ativa ou desativa. Se você desativar um estágio, ele não excluirá nem removerá o estágio do pipeline. Em vez disso, o pipeline pula o estágio durante o tempo de execução.
{ "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" }