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á.
Valide o código do Account Factory for Terraform (AFT) localmente
Criado por Alexandru Pop (AWS) e Michal Gorniak () AWS
Ambiente: produção | Tecnologias: Infraestrutura DevOps; Modernização; DevelopmentAndTesting | Workload: código aberto |
AWSserviços: AWS Control Tower |
Resumo
Esse padrão mostra como testar localmente o código do HashiCorp Terraform gerenciado pela AWS Control Tower Account Factory for Terraform ()AFT. O Terraform é uma ferramenta de infraestrutura como código (IaC) de código aberto que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem. AFTconfigura um pipeline do Terraform que ajuda você a provisionar e personalizar várias AWS contas no AWS Control Tower.
Durante o desenvolvimento do código, pode ser útil testar sua infraestrutura do Terraform como código (IaC) localmente, fora do AFT pipeline. Este padrão mostra como fazer o seguinte:
Recupere uma cópia local do código do Terraform que está armazenado nos AWS CodeCommit repositórios da sua AFT conta de gerenciamento.
Simule o AFT pipeline localmente usando o código recuperado.
Esse procedimento também pode ser usado para executar comandos do Terraform que não fazem parte do AFT pipeline normal. Por exemplo, você pode usar esse método para executar comandos como terraform validate
, terraform plan
, terraform destroy
e terraform import
.
Pré-requisitos e limitações
Pré-requisitos
Um ambiente ativo de AWS várias contas que usa o AWSControl Tower
AWSInterface de linha de comando (AWSCLI), instalada e configurada
AWSCLIauxiliar de credenciais para Code Commit, instalado e configurado
Python 3.x
Git
, instalado e configurado em sua máquina local git-remote-commit utilitário, instalado e configurado
Terraform
, instalado e configurado (a versão local do pacote Terraform deve corresponder à versão usada na AFT implantação)
Limitações
Esse padrão não abrange as etapas de implantação necessárias para o AWS Control Tower ou qualquer módulo específico do Terraform. AFT
A saída gerada localmente durante esse procedimento não é salva nos registros de tempo de execução do AFT pipeline.
Arquitetura
Pilha de tecnologias de destino
AFTinfraestrutura implantada em uma implantação da AWS Control Tower
Terraforma
Git
AWSCLIversão 2
Automação e escala
Esse padrão mostra como invocar localmente o código do Terraform para personalizações de contas AFT globais em uma única conta gerenciada. AFT AWS Depois que seu código do Terraform for validado, você poderá aplicá-lo às contas restantes em seu ambiente de várias contas. Para obter mais informações, consulte Reinvocar personalizações na documentação da Control TowerAWS.
Você também pode usar um processo semelhante para executar personalizações de AFT conta em um terminal local. Para invocar localmente o código do Terraform a partir das personalizações da AFT conta, clone o aft-account-customizations repositório em vez do repositório na sua conta de gerenciamento aft-global-account-customizations. CodeCommit AFT
Ferramentas
AWSserviços
AWSO Control Tower ajuda você a configurar e administrar um ambiente AWS com várias contas, seguindo as melhores práticas prescritivas.
AWSA interface de linha de comando (AWSCLI) é uma ferramenta de código aberto que ajuda você a interagir com AWS serviços por meio de comandos em seu shell de linha de comando.
Outros serviços
HashiCorp O Terraform
é uma ferramenta de infraestrutura como código (IaC) de código aberto que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem. O Git
é um sistema de controle de versão distribuído e de código aberto.
Código
A seguir está um exemplo de script bash que pode ser usado para executar localmente o código do Terraform que é gerenciado pelo. AFT Para usar o script, siga as instruções na seção Épicos desse padrão.
#! /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 "$@"
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Salve o código de exemplo como um arquivo local. |
| AWSadministrador |
Torne o código de exemplo executável. | Abra uma janela de terminal e autentique-se em sua conta de AWS AFT gerenciamento fazendo o seguinte:
Observação: sua organização também pode ter uma ferramenta personalizada para fornecer credenciais de autenticação ao seu AWS ambiente. | AWSadministrador |
Verifique o acesso à conta AFT de gerenciamento na AWS região correta. | Importante: certifique-se de usar a mesma sessão de terminal com a qual você se autenticou em sua conta AFT de gerenciamento.
| AWSadministrador |
Crie um novo diretório local para armazenar o código do AFT repositório. | Na mesma sessão de terminal, execute os comandos a seguir:
| AWSadministrador |
Clone o código do AFT repositório remoto. |
| AWSadministrador |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Abra um AFT pipeline executado anteriormente e copie os arquivos de configuração do Terraform para uma pasta local. | Observação: os arquivos de configuração backend.tf e aft-providers.tf criados neste épico são necessários para que o pipeline seja executado localmente. AFT Esses arquivos são criados automaticamente no AFT pipeline baseado em nuvem, mas devem ser criados manualmente para que o pipeline seja executado localmente. Executar o AFT pipeline localmente requer um conjunto de arquivos que representa a execução do pipeline em uma única AWS conta.
Exemplo de instrução backend.tf gerada automaticamente
Observação: os | AWSadministrador |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implemente as alterações de configuração do Terraform que você deseja validar. |
| AWSadministrador |
Execute o script ct_terraform.sh e revise a saída. |
Importante:
| AWSadministrador |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Adicione referências aos arquivos backend.tf e aft-providers.tf a um arquivo .gitignore. | Adicione os arquivos
Observação: mover os arquivos para o | AWSadministrador |
Confirme e envie suas alterações de código para o AFT repositório remoto. |
Importante: As alterações de código que você introduz seguindo esse procedimento até o momento são aplicadas somente a uma AWS conta. | AWSadministrador |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implemente as alterações em todas as suas contas gerenciadas peloAFT. | Para implementar as alterações em várias AWS contas gerenciadas pelaAFT, siga as instruções em Reinvoke personalizations na documentação da Control TowerAWS. | AWSadministrador |