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á.
Crie uma estrutura de orquestração de recursos baseada em API usando Actions e Terragrunt GitHub
Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande e Akash Kumar, da Amazon Web Services
Resumo
Esse padrão aproveita os fluxos de trabalho do GitHub Actions para automatizar o provisionamento de recursos por meio de cargas JSON padronizadas, eliminando a necessidade de configuração manual. Esse pipeline automatizado gerencia o ciclo de vida completo da implantação e pode se integrar perfeitamente a vários sistemas de front-end, desde componentes de interface de usuário personalizados até. ServiceNow A flexibilidade da solução permite que os usuários interajam com o sistema por meio de suas interfaces preferidas, mantendo processos padronizados.
A arquitetura configurável do pipeline pode ser adaptada para atender aos diferentes requisitos organizacionais. O exemplo de implementação se concentra no provisionamento da Amazon Virtual Private Cloud (Amazon VPC) e do Amazon Simple Storage Service (Amazon S3). O padrão aborda com eficácia os desafios comuns de gerenciamento de recursos em nuvem, padronizando as solicitações em toda a organização e fornecendo pontos de integração consistentes. Essa abordagem facilita que as equipes solicitem e gerenciem recursos e, ao mesmo tempo, garante a padronização.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS
Uma GitHub conta ativa com acesso ao repositório configurado
Limitações
Novos recursos exigem a adição manual de
terragrunt.hclarquivos à configuração do repositório.Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para saber a disponibilidade da região, consulte AWS Serviços por região
. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.
Arquitetura
O diagrama a seguir mostra os componentes e o fluxo de trabalho desse padrão.

O diagrama da arquitetura mostra as seguintes ações:
O usuário envia uma carga JSON para GitHub Actions, acionando o pipeline de automação.
O pipeline de GitHub ações recupera o código dos recursos necessários dos repositórios Terragrunt e Terraform, com base nas especificações da carga útil.
O pipeline assume a função apropriada AWS Identity and Access Management (IAM) usando o Conta da AWS ID especificado. Em seguida, o pipeline implanta os recursos no destino Conta da AWS e gerencia o estado do Terraform usando o bucket Amazon S3 específico da conta e a tabela do Amazon DynamoDB.
Cada um Conta da AWS contém funções do IAM para acesso seguro, um bucket Amazon S3 para armazenamento de estado do Terraform e uma tabela do DynamoDB para bloqueio de estado. Esse design permite a implantação controlada e automatizada de recursos em todo o mundo Contas da AWS. O processo de implantação mantém o gerenciamento adequado do estado e o controle de acesso por meio de buckets dedicados do Amazon S3 e funções do IAM em cada conta.
Ferramentas
Serviços da AWS
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
A Amazon Virtual Private Cloud (Amazon VPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.
Outras ferramentas
GitHub O Actions
é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação. O Terraform
é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local. O Terragrunt
é uma ferramenta de orquestração que amplia os recursos dos dois e do Terraform. OpenTofu Ele gerencia como os padrões genéricos de infraestrutura são aplicados, facilitando a escalabilidade e a manutenção de grandes propriedades de infraestrutura.
Repositório de código
O código desse padrão está disponível no repositório GitHub sample-aws-orchestration-pipeline-terraform
Práticas recomendadas
Armazene AWS credenciais e dados confidenciais usando segredos GitHub do repositório para acesso seguro.
Configure o provedor OpenID Connect (OIDC) para que o GitHub Actions assuma a função do IAM, evitando credenciais estáticas.
Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Inicialize o GitHub repositório. | Para inicializar o GitHub repositório, use as seguintes etapas:
| DevOps engenheiro |
Configure as funções e permissões do IAM. | Para configurar as funções e permissões do IAM, use as seguintes etapas:
| DevOps engenheiro |
Configure GitHub segredos e variáveis. | Para obter instruções sobre como configurar segredos e variáveis do repositório no GitHub repositório, consulte Criação de variáveis de configuração para um repositório na documentação
| DevOps engenheiro |
Crie a estrutura do repositório. | Para criar a estrutura do repositório, use as seguintes etapas:
| DevOps engenheiro |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Execute o pipeline usando curl. | Para executar o pipeline usando curl
Para obter mais informações sobre o processo de execução do pipeline, consulte Informações adicionais. | DevOps engenheiro |
Valide os resultados da execução do pipeline | Para validar os resultados, use as seguintes etapas:
Você também pode fazer a verificação cruzada dos recursos criados usando o | DevOps engenheiro |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Envie uma solicitação de limpeza. | Para excluir recursos que não são mais necessários, use as seguintes etapas:
| DevOps engenheiro |
Recursos relacionados
AWS Blogs
AWS service (Serviço da AWS) documentação
GitHub recursos
Mais informações
Processo de execução do pipeline
A seguir estão as etapas da execução do pipeline:
Valida o formato de carga útil JSON - Garante que a configuração JSON de entrada seja estruturada adequadamente e contenha todos os parâmetros necessários
Assume a função do IAM especificada - autentica e assume a função do IAM necessária para as operações AWS
Baixa o código necessário do Terraform e do Terragrunt - Recupera a versão especificada do código do recurso e das dependências
Executa a implantação de recursos - aplica a configuração para implantar ou atualizar AWS recursos no ambiente de destino
Exemplo de carga útil usada para criação de VPC
A seguir está um exemplo de código para a criação de bucket de estado de back-end do Terraform:
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
Veja a seguir um exemplo de carga útil para criar uma VPC com a Amazon VPC, vpc_cidr onde define as especificações do bloco CIDR para a VPC. O bucket de estado do Terraform é mapeado para uma variável definida nos terraform arquivos. O ref parâmetro contém o nome da ramificação do código a ser executado.
{ "ref": "main", "inputs": { "RequestParameters": { "RequestId": "1111111", "RequestType": "create", "ResourceType": "vpc", "AccountId": "1234567890", "AccountAlias": "account-alias", "RegionId": "us-west-2", "ApplicationName": "myapp", "DivisionName": "division-name", "EnvironmentId": "dev", "Suffix": "poc" }, "ResourceParameters": [ { "VPC": { "vpc_cidr": "10.0.0.0/16" } } ] } }
RequestParameterssão usados para rastrear o status da solicitação na seção de pipeline e tfstate são criados com base nessas informações. Os parâmetros a seguir contêm metadados e informações de controle:
RequestId— Identificador exclusivo para a solicitaçãoRequestType— Tipo de operação (criar, atualizar ou excluir)ResourceType— Tipo de recurso a ser provisionadoAccountId— Alvo Conta da AWS para implantaçãoAccountAlias— Nome amigável para o Conta da AWSRegionId— Região da AWS para implantação de recursosApplicationName— Nome do aplicativoDivisionName— Divisão da organizaçãoEnvironmentId— Ambiente (por exemplo, dev e prod)Suffix— Identificador adicional para os recursos
ResourceParameterscontêm uma configuração específica do recurso que mapeia as variáveis definidas nos arquivos do Terraform. Todas as variáveis personalizadas que precisam ser passadas para os módulos do Terraform devem ser incluídas noResourceParameters. O parâmetro vpc_cidr é obrigatório para a Amazon VPC.