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 pull requests automatizados para a AWS infraestrutura gerenciada pelo Terraform usando Actions GitHub
Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay e Prafful Gupta, Amazon Web Services
Resumo
Este padrão apresenta um utilitário de automação projetado para eliminar o trabalho manual e repetitivo envolvido no gerenciamento de alterações em diversos repositórios do Terraform. Várias organizações usam repositórios do Terraform para gerenciar a infraestrutura como código (IaC) que, frequentemente, conta com centenas de repositórios distintos que representam variados ambientes, serviços ou equipes. O gerenciamento desses repositórios em grande escala representa um desafio operacional significativo. Tarefas rotineiras, como atualizar um parâmetro, atualizar versões de módulos ou aplicar alterações na configuração, geralmente exigem a criação e o gerenciamento de pull requests (PRs) em vários repositórios várias vezes ao dia.
Até mesmo para pequenas alterações, esse processo manual e repetitivo é demorado e sujeito a erros. É necessário que os engenheiros apliquem de forma consistente a mesma alteração em todos os repositórios de destino e elaborem títulos e descrições de PR relevantes. Além disso, esses profissionais frequentemente precisam interagir com ferramentas externas, como o Jira, para buscar ou incluir referências de rastreamento de problemas. Embora necessárias, essas tarefas são trabalhos pesados e padronizados que ocupam tempo valioso dos engenheiros e comprometem a eficiência geral. A ausência de automação neste fluxo de trabalho cria problemas, diminui a velocidade de entrega e eleva a sobrecarga mental das equipes encarregadas da manutenção de infraestruturas do Terraform em grande escala.
Visão geral da solução
Para enfrentar esse desafio, este padrão oferece um utilitário totalmente orientado por configuração, permitindo que os usuários definam as alterações desejadas em um arquivo de configuração estruturado. Neste arquivo, os repositórios de destino, módulos, parâmetros e valores são especificados com base em um esquema claramente definido.
Uma vez configurado, o utilitário executa as seguintes etapas automatizadas:
Realiza a leitura da configuração definida pelo usuário para determinar o escopo e a natureza das alterações
Cria uma nova ramificação em cada repositório de destino com as atualizações necessárias aplicadas
Gera uma PR para cada alteração, garantindo consistência entre todos os repositórios
Envia notificações do Slack (opcional) para alertar as partes interessadas com links diretos para o criado PRs
Ao automatizar essas tarefas repetitivas, o utilitário reduz significativamente o tempo, o esforço e o risco associados ao gerenciamento de atualizações de infraestrutura em grande escala. O utilitário permite que as equipes se concentrem em trabalhos de engenharia de maior valor, ao mesmo tempo em que ajuda a garantir que as alterações sejam aplicadas de forma consistente e possam ser rastreadas em todos os repositórios.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS.
Python versão 3.8 ou posterior.
Um token de acesso GitHub pessoal (PAT). Para obter mais informações, consulte Criação de um token de acesso pessoal (clássico)
na GitHub documentação. O GitHub PAT pode acessar seus repositórios de destino para que o utilitário possa realizar operações como criar ramificações e pull requests. Para obter mais informações, consulte o repositório de GitHub código
desse padrão.
Limitações
A complexidade da configuração representa o principal desafio. A eficácia da automação é limitada pelas funcionalidades presentes no arquivo de configuração. Enquanto alterações padrão são tratadas de forma eficiente pelo sistema, modificações complexas na infraestrutura podem exigir intervenção manual, e alguns casos específicos permanecem fora do escopo da automação.
A segurança e o acesso apresentam considerações significativas, especialmente no gerenciamento de tokens de GitHub acesso e limites de taxa de API. É fundamental que as organizações conciliem cuidadosamente a necessidade de automação com o armazenamento e o gerenciamento seguros de credenciais, garantindo controles de acesso adequados sem comprometer a eficiência operacional.
As restrições de validação representam outra limitação significativa, pois o sistema automatizado tem capacidade limitada para validar a lógica de negócio e os requisitos específicos de cada ambiente. As dependências complexas e as interações entre serviços frequentemente requerem supervisão humana, já que a validação automatizada não consegue capturar integralmente todas as nuances contextuais e as regras de negócios.
Problemas de escala e de performance surgem ao lidar com alterações em infraestrutura de grande escala. O sistema deve operar dentro dos limites GitHub da API enquanto gerencia vários repositórios simultaneamente. As operações intensivas em recursos que são realizadas em uma infraestrutura extensa podem causar gargalos de performance, requerendo gerenciamento cuidadoso.
Os limites de integração restringem a flexibilidade do sistema porque ele foi projetado principalmente para funcionar com ferramentas específicas, como GitHub o Slack. As organizações que usam ferramentas distintas podem precisar de soluções customizadas, e as possibilidades de customização do fluxo de trabalho deste padrão estão limitadas aos pontos de integração compatíveis.
Arquitetura
O diagrama apresentado a seguir ilustra o fluxo de trabalho e os componentes para esta solução.

O fluxo de trabalho consiste nas seguintes etapas:
O desenvolvedor aciona GitHub ações especificando o repositório do Terraform.
O utilitário de automação lê as configurações que foram definidas.
O utilitário de automação também extrai o repositório do Terraform fornecido.
O utilitário de automação cria uma nova ramificação e realiza atualizações nos modelos do Terraform localmente.
O utilitário de automação envia a nova ramificação ao repositório e cria uma nova PR.
O utilitário de automação usa notificações do Slack que incluem links de relações públicas para notificar os desenvolvedores e habilita a implantação de modelos do Terraform. Nuvem AWS
Ferramentas
GitHub
é uma plataforma para desenvolvedores que os desenvolvedores podem usar para criar, armazenar, gerenciar e compartilhar seu código. 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. HashiCorp O Terraform
é uma ferramenta de infraestrutura como código (IaC) que ajuda você a criar e gerenciar recursos na nuvem e no local. O Slack
, uma solução da Salesforce, consiste em uma plataforma de conversação com tecnologia de IA que oferece colaboração por chat e vídeo, automatiza processos no-code e facilita o compartilhamento de informações.
Repositório de código
O código desse padrão está disponível no fluxo de trabalho GitHub automatizado de atualização da infraestrutura do Terraform usando o repositório GitHub Actions
Práticas recomendadas
O gerenciamento eficaz de alterações é essencial para uma implementação com êxito. As organizações devem adotar uma estratégia de implementação gradual para mudanças em grande escala. Mantenha convenções consistentes de nomenclatura para as ramificações e descrições de PRs, e assegure que todas as alterações estejam devidamente documentadas.
Os controles de segurança devem ser implementados rigorosamente, com foco nos princípios de acesso com privilégios mínimos e no gerenciamento seguro de credenciais. Habilite regras de proteção para ramificações com a finalidade de impedir alterações não autorizadas. Realize auditorias de segurança regularmente para manter a integridade do sistema.
Um protocolo de testes robusto deve incluir a execução automatizada do
terraform planem pipelines de integração e de implantação contínuas (CI/CD). Além disso, o protocolo deve contemplar verificações de validação anteriores à confirmação e ambientes de análise dedicados a alterações críticas. Essa abordagem de testes em várias camadas contribui para a identificação antecipada de problemas e assegura a estabilidade da infraestrutura.A estratégia de monitoramento precisa abranger mecanismos de alerta abrangentes, rastreamento detalhado de success/failure métricas e mecanismos automatizados de repetição para operações com falha. Essa estratégia ajuda a garantir visibilidade operacional e permite uma resposta rápida a quaisquer problemas que surgirem.
Os padrões de configuração devem enfatizar o controle de versão de todas as configurações, mantendo a modularidade para reutilização e escalabilidade. A documentação clara do esquema e a inclusão de exemplos ajudam as equipes a compreender e aplicar corretamente o sistema de automação.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure o repositório. | Para configurar o repositório, execute os seguintes comandos:
| AWS DevOps |
Instale as dependências. | Para instalar e verificar as dependências do Python, execute os seguintes comandos:
| AWS DevOps |
Configure o GitHub token. | Para configurar o GitHub token e verificar se ele funciona, execute os seguintes comandos:
| AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure o arquivo | Para definir os repositórios de destino e as alterações desejadas, edite o arquivo
| AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Realize testes preliminares. | Sempre teste sua configuração antes de executá-la em repositórios de produção. Use os seguintes comandos:
| AWS DevOps |
Verifique o acesso ao repositório. | Para verificar se o GitHub token pode acessar o repositório, execute o seguinte comando:
| AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Execute o utilitário de automação usando a interface de usuário do GitHub Actions. | Para executar o utilitário de automação usando a interface de usuário do GitHub Actions, faça o seguinte:
| AWS DevOps |
(Como alternativa) Execute o utilitário de automação usando a linha de comando. | Se preferir, você pode executar o utilitário de automação na linha de comando em vez de usar a interface do usuário do GitHub Actions. Use o seguinte comando:
| AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Revise o criado PRs e as alterações. | Para monitorar os resultados da execução do GitHub fluxo de trabalho, faça o seguinte:
| AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
(Opcional) Limpe PRs. | Feche abandonado ou desnecessário PRs. | AWS DevOps |
Recursos relacionados
AWS Orientação prescritiva
GitHub documentação