CI/CD with GitHub Actions & DevOps Pipelines · Aula

Gerenciando o estado do Terraform e back-ends remotos

Entenda o estado do Terraform, configure back-ends remotos seguros, gerencie o bloqueio de estado e evite corrupção de estado em fluxos colaborativos de IaC.

Aula 4 de 413 etapas

Gerenciando o estado do Terraform e back-ends remotos é uma aula grátis de CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit. Esta é a aula 4 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.

O que é o estado do Terraform

O Terraform registra o que criou em um arquivo de estado (terraform.tfstate). Ele mapeia sua configuração para recursos reais na nuvem.

Sem o estado, o Terraform não saberia quais recursos já existem e poderia criar duplicatas ou não conseguir atualizá-los.

Por que o estado local falha com equipes

Por padrão, o estado fica no seu disco local. Isso deixa de funcionar com uma equipe ou em CI:

  • Outras pessoas não conseguem ver seu estado
  • Execuções simultâneas corrompem o arquivo
  • O arquivo contém segredos em texto simples e poderia ser enviado ao repositório por acidente

A solução é um backend remoto.

Backends remotos

Um backend remoto armazena o estado em um local compartilhado e durável, como um bucket do S3, o Azure Blob, o GCS ou o Terraform Cloud.

Isso fornece a cada execução do pipeline uma única fonte de verdade para a infraestrutura atual.

terraform {
  backend "s3" {
    bucket = "my-tf-state"
    key    = "prod/terraform.tfstate"
    region = "us-east-1"
  }
}

Bloqueio do estado

Se duas execuções do pipeline aplicarem alterações ao mesmo tempo, elas poderão corromper o estado. O bloqueio do estado evita isso permitindo apenas uma gravação por vez.

Com o backend do S3, uma tabela do DynamoDB fornece o bloqueio. O Terraform Cloud bloqueia automaticamente.

  backend "s3" {
    bucket         = "my-tf-state"
    key            = "prod/terraform.tfstate"
    dynamodb_table = "tf-locks"
  }

Criptografia do estado

Os arquivos de estado geralmente contêm valores confidenciais, como senhas e chaves. Sempre criptografe o estado em repouso.

Para o backend do S3, habilite a criptografia do bucket e defina encrypt = true na configuração do backend.

  backend "s3" {
    bucket  = "my-tf-state"
    key     = "prod/terraform.tfstate"
    encrypt = true
  }

Espaços de trabalho para ambientes

Os espaços de trabalho do Terraform permitem que uma configuração gerencie vários arquivos de estado, um por ambiente.

Alterne entre eles para que staging e produção nunca compartilhem o mesmo estado.

terraform workspace new staging
terraform workspace select production

Planejamento e aplicação em CI

Em um pipeline, execute terraform plan para visualizar as alterações (geralmente em solicitações de pull) e terraform apply para aplicá-las (quando houver merge na branch principal).

Salve o plano em um arquivo para que a aplicação use exatamente o que foi revisado.

terraform plan -out=tfplan
terraform apply -auto-approve tfplan

Inspeção do estado

Você pode consultar o estado para ver o que o Terraform está acompanhando.

  • terraform state list — lista os recursos gerenciados
  • terraform state show <addr> — mostra os detalhes de um recurso

Evite editar o estado manualmente; use comandos.

terraform state list
terraform state show aws_instance.web

Importação de recursos existentes

Se um recurso foi criado fora do Terraform, coloque-o sob gerenciamento com terraform import em vez de recriá-lo.

Isso evita duplicações destrutivas ao adotar IaC em uma infraestrutura existente.

terraform import aws_s3_bucket.logs my-existing-bucket

Como lidar com desvios

O desvio acontece quando alguém altera a infraestrutura manualmente, fazendo com que a realidade deixe de corresponder ao estado.

Execute terraform plan regularmente para detectar desvios e, em seguida, reaplique as configurações para restaurar o estado ou atualize a configuração para que corresponda à realidade.

Nunca envie o estado ao repositório

Mesmo com um backend remoto, certifique-se de que o estado local e os arquivos de plano sejam ignorados pelo Git. Eles contêm segredos.

Um bom .gitignore protege você contra vazamentos acidentais.

# .gitignore
*.tfstate
*.tfstate.*
tfplan
.terraform/

Verificação rápida

Teste sua compreensão sobre o estado do Terraform.

Recapitulação

Você aprendeu a gerenciar o estado do Terraform com segurança.

  • O estado mapeia a configuração para recursos reais; nunca o edite manualmente
  • Os backends remotos compartilham o estado entre a equipe e o CI
  • O bloqueio e a criptografia protegem contra corrupção e vazamentos
  • Os espaços de trabalho isolam ambientes; plan detecta desvios

Um gerenciamento sólido do estado é a base de pipelines de IaC confiáveis.

Grátis para começar

Aprenda CI/CD with GitHub Actions & DevOps Pipelines com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
12
Aulas
48

Perguntas Frequentes

A aula “Gerenciando o estado do Terraform e back-ends remotos” é grátis?

Sim — o texto completo de “Gerenciando o estado do Terraform e back-ends remotos” é 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 “Gerenciando o estado do Terraform e back-ends remotos”?

Entenda o estado do Terraform, configure back-ends remotos seguros, gerencie o bloqueio de estado e evite corrupção de estado em fluxos colaborativos de IaC. 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 4 de 4.

Quanto tempo leva a aula “Gerenciando o estado do Terraform e back-ends remotos”?

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

  1. IaC com Terraform e GitHub Actions
  2. Gerenciamento de recursos de nuvem
  3. Automação de atualizações da infraestrutura
  4. Gerenciando o estado do Terraform e back-ends remotos
← Voltar para CI/CD with GitHub Actions & DevOps Pipelines