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, 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 Graças à flexibilidade da solução, os usuários podem interagir com o sistema por meio das interfaces de sua preferência, enquanto os processos permanecem padronizados.
A arquitetura de pipeline configurável pode ser adaptada para atender a diferentes requisitos organizacionais. Esta implementação de exemplo tem como foco o provisionamento da Amazon Virtual Private Cloud (Amazon VPC) e do Amazon Simple Storage Service (Amazon S3). O padrão aborda de forma eficaz os desafios comuns de gerenciamento de recursos em nuvem, padronizando solicitações em toda a organização e fornecendo pontos de integração consistentes. Com esta abordagem, as equipes conseguem solicitar e gerenciar recursos com mais facilidade, mantendo 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
A inclusão de novos recursos requer a adição manual de arquivos
terragrunt.hclna configuração do repositório.Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region
. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.
Arquitetura
O diagrama apresentado a seguir ilustra os componentes e o fluxo de trabalho deste padrão.

O diagrama da arquitetura ilustra 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 possibilita a implantação automatizada e controlada de recursos entre Contas da AWS. O processo de implantação mantém o gerenciamento adequado do estado e o controle de acesso por meio de buckets do Amazon S3 e de perfis do IAM dedicados 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 padrões genéricos de infraestrutura são aplicados, facilitando a escalabilidade e a manutenção de grandes ambientes 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.
Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de 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 | Description | Habilidades necessárias |
|---|---|---|
Inicialize o GitHub repositório. | Para inicializar o GitHub repositório, use as seguintes etapas:
| DevOps engenheiro |
Configure as permissões e os perfis do IAM. | Para realizar a configuração das permissões e dos perfis 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 | Description | Habilidades necessárias |
|---|---|---|
Execute o pipeline usando curl. | Para executar o pipeline por meio do curl
Para obter mais informações sobre o processo de execução do pipeline, consulte Informações adicionais. | DevOps engenheiro |
Validação dos resultados referentes à execução do pipeline | Para validar os resultados, use as seguintes etapas:
Você também pode verificar novamente os recursos criados usando o arquivo | DevOps engenheiro |
| Tarefa | Description | 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, apresentamos as etapas do processo de execução do pipeline:
Validação do formato da carga útil em JSON: garante que a configuração JSON recebida está estruturada de forma adequada e contém 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
Download do código necessário do Terraform e do Terragrunt: recupera a versão especificada do código do recurso e suas 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 a criação de uma VPC
A seguir, apresentamos um exemplo de código para a criação do bucket de estado do backend do Terraform:
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
Confira a seguir um exemplo de carga útil para criar uma VPC com a Amazon VPC, na qual o parâmetro vpc_cidr define as especificações do bloco CIDR para a VPC. O bucket de estado do Terraform é mapeado para uma variável definida nos arquivos terraform. O parâmetro ref 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" } } ] } }
Os RequestParameters são usados para acompanhar o status da solicitação na seção do pipeline, e o tfstate é criado com base nessas informações. Os seguintes parâmetros contêm metadados e informações de controle:
RequestId: identificador exclusivo da solicitaçãoRequestType: tipo de operação (criação, atualização ou exclusão)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 da aplicaçãoDivisionName: divisão da organizaçãoEnvironmentId: ambiente (por exemplo, desenvolvimento e produção)Suffix: identificador adicional para os recursos
Os ResourceParameters contêm a configuração específica do recurso, que mapeia para variáveis definidas nos arquivos do Terraform Quaisquer variáveis personalizadas que precisem ser transferidas para os módulos do Terraform devem ser incluídas nos ResourceParameters. O parâmetro vpc_cidr é obrigatório para a Amazon VPC.