Automação de atualizações da infraestrutura
Implemente fluxos de trabalho para planejar, aplicar e remover alterações na infraestrutura com segurança, incluindo etapas de revisão e aprovação.
Automação de atualizações da infraestrutura é uma aula grátis de CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CI/CD with GitHub Actions & DevOps Pipelines, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CI/CD with GitHub Actions & DevOps Pipelines inclui 4 aulas no total.
Por que automatizar as atualizações de IaC?
Gerenciar a infraestrutura manualmente pode ser lento e propenso a erros. A Infraestrutura como Código (IaC) ajuda definindo sua infraestrutura em código.
Automatizar as atualizações de IaC com ferramentas como as Ações do GitHub traz consistência e rapidez, além de reduzir erros humanos. Isso garante que sua infraestrutura esteja sempre de acordo com a definição.
O ciclo de vida do fluxo de trabalho de IaC
A automação de IaC segue um ciclo de vida claro: planejar, aplicar e, às vezes, destruir. Cada etapa pode ser integrada ao seu pipeline de CI/CD.
- Planejar: revisar as alterações propostas sem executá-las.
- Aplicar: implementar as alterações planejadas na infraestrutura.
- Destruir: remover os recursos da infraestrutura (use com extrema cautela!).
As Ações do GitHub ajudam a gerenciar essas etapas com segurança.
Planejando alterações com Terraform
Antes de fazer qualquer alteração, é essencial saber o que acontecerá. O comando plan do Terraform ajuda você a visualizar previamente as modificações da infraestrutura.
Ele compara o estado desejado (obtido do código) com o estado atual da sua infraestrutura e mostra quais recursos serão adicionados, alterados ou destruídos.
Experimente executar estes comandos em um projeto simples do Terraform:
echo "Initializing Terraform..."
terraform init
echo "Running terraform plan..."
terraform planFluxo de trabalho para `terraform plan`
Vamos criar um fluxo de trabalho das Ações do GitHub que execute automaticamente terraform plan sempre que o código for enviado para sua ramificação principal. Isso fornece feedback imediato sobre as alterações propostas.
A saída do plano pode então ser revisada diretamente na solicitação de pull ou nos registros do fluxo de trabalho.
name: 'Terraform Plan'
on:
pull_request:
branches:
- main
jobs:
terraform:
name: 'Terraform Plan'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Plan
id: plan
run: terraform plan -no-colorAprovação manual com ambientes
Aplicar alterações na infraestrutura automaticamente pode ser arriscado. Os ambientes do GitHub oferecem uma forma de adicionar etapas de aprovação manual aos fluxos de trabalho.
Você pode definir ambientes (por exemplo, "staging", "produção") e estabelecer regras, como exigir revisores específicos ou períodos de espera antes que um trabalho de implantação possa prosseguir.
Isso adiciona uma etapa essencial de revisão humana antes de operações sensíveis.
Fluxo de trabalho para aplicar alterações
Para aplicar alterações com segurança, vamos configurar um fluxo de trabalho direcionado a um ambiente protegido do GitHub. O trabalho será pausado e aguardará a aprovação de membros designados da equipe.
Somente após a aprovação o comando terraform apply será executado, atualizando sua infraestrutura.
name: 'Terraform Apply'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Apply'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Apply
id: apply
run: terraform apply -auto-approveDestruindo a infraestrutura com segurança
O comando terraform destroy remove permanentemente todos os recursos definidos na sua configuração do Terraform. Essa é uma operação muito poderosa e potencialmente perigosa.
Ele só deve ser usado em situações específicas e controladas, como a remoção de um ambiente temporário de testes. Sempre verifique tudo novamente antes de prosseguir!
Nunca automatize um `destroy` sem etapas rigorosas de aprovação manual e várias confirmações.
echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
echo "Destroying infrastructure..."
terraform destroy -auto-approve
else
echo "Destroy operation cancelled."
fiDestruição controlada da infraestrutura
Mesmo para `destroy`, podemos aproveitar os ambientes do GitHub para adicionar uma camada extra de proteção. Isso garante que ninguém possa destruir acidentalmente ou maliciosamente os recursos de produção sem a devida autorização.
O fluxo de trabalho deve exigir aprovação e só poder ser acionado manualmente, idealmente por funções específicas.
name: 'Terraform Destroy'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to destroy'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Destroy'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Destroy
id: destroy
run: terraform destroy -auto-approvePráticas recomendadas para automação de IaC
Para manter um pipeline de IaC robusto e seguro:
- Revisões de código: sempre exija revisões de código para alterações de IaC.
- Privilégio mínimo: conceda aos tokens do fluxo de trabalho e às contas de serviço somente as permissões mínimas necessárias.
- Bloqueio de estado: garanta que sua ferramenta de IaC (como o Terraform) use o bloqueio de estado para evitar modificações simultâneas.
- Alterações pequenas e incrementais: evite atualizações grandes e monolíticas da infraestrutura.
- Ambientes separados: use ambientes distintos (desenvolvimento, staging, produção) com regras de aprovação diferentes.
Verificação do fluxo de trabalho de IaC
Você aprendeu sobre a automação de atualizações de IaC com o planejamento, a aplicação e a destruição de recursos. Agora, vamos testar sua compreensão sobre como proteger esses processos.
Recapitulação: atualizações automatizadas de IaC
Nesta lição, você aprendeu a automatizar seus fluxos de trabalho de Infraestrutura como Código usando as Ações do GitHub. Abordamos:
- Executar
terraform planpara visualizar as alterações com segurança. - Usar ambientes do GitHub para etapas de aprovação manual antes de aplicar ou destruir a infraestrutura.
- Implementar fluxos de trabalho para operações controladas de
terraform applyeterraform destroy. - Práticas recomendadas essenciais para uma automação de IaC segura e confiável.
Automatizar a IaC ajuda você a gerenciar seus recursos de nuvem com eficiência e confiança!
Perguntas Frequentes
A aula “Automação de atualizações da infraestrutura” é grátis?
Sim — o texto completo de “Automação de atualizações da infraestrutura” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CI/CD with GitHub Actions & DevOps Pipelines, atualize para CoddyKit PRO. O curso de CI/CD with GitHub Actions & DevOps Pipelines inclui 4 aulas no total.
O que vou aprender em “Automação de atualizações da infraestrutura”?
Implemente fluxos de trabalho para planejar, aplicar e remover alterações na infraestrutura com segurança, incluindo etapas de revisão e aprovação. Você pratica CI/CD with GitHub Actions & DevOps Pipelines com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar CI/CD with GitHub Actions & DevOps Pipelines?
Nenhuma experiência prévia é necessária. CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Automação de atualizações da infraestrutura”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de CI/CD with GitHub Actions & DevOps Pipelines?
Sim. Cada aula de CI/CD with GitHub Actions & DevOps Pipelines inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- IaC com Terraform e GitHub Actions
- Gerenciamento de recursos de nuvem
- Automação de atualizações da infraestrutura
- Gerenciando o estado do Terraform e back-ends remotos