Erros Comuns em Terraform que Você Deve Evitar (Checklist)

Erros Comuns em Terraform que Você Deve Evitar (Checklist)

“`html





Erros comuns em Terraform que você deve evitar | Yurideveloper


Terraform na prática: menos sustos, mais previsibilidade

Erros comuns em Terraform que você deve evitar

Terraform é ótimo para automatizar infraestrutura, mas alguns erros repetem na rotina e custam tempo, dinheiro e confiança.
Abaixo eu organizo os problemas mais frequentes (e como corrigir) para você aplicar no seu dia a dia.

Clareza de estado
Modularização
Idempotência
Segurança

1 1) Ignorar o ciclo de vida do state

O arquivo de estado é a “fonte de verdade” do Terraform para saber o que já existe.
Quando você trata o state como algo secundário, o risco de drift e de destruição acidental cresce muito.

Regra de ouro: mantenha o state versionado de forma segura e use backend remoto com acesso controlado.
  • Erro comum: manter state local e rodar CI/CD e usuários diferentes no mesmo projeto.
  • Erro comum: “consertar na mão” mexendo no state sem entender o impacto.
  • Erro comum: esquecer lock (quando aplicável) e deixar execuções concorrentes competirem.
backend remoto
locking
drift
auditoria

2 2) Variáveis sem tipagem e validação

A ausência de validação transforma configurações simples em armadilhas.
Você acha que está passando um valor “óbvio”, mas o Terraform aceita strings erradas, formatos inconsistentes e valores fora de faixa.

  • Erro comum: usar variáveis sem type e sem validation, aceitando qualquer coisa.
  • Erro comum: deixar padrões (defaults) que mascaram erros em ambientes diferentes.
  • Erro comum: misturar formatos (ex.: CIDR como string sem validar, nomes com espaços, tags vazias).
Objetivo: falhar cedo. Quanto mais cedo o Terraform “dispara” erro de validação, menor a chance de você provisionar algo errado.
validation
type safety
fail fast

3 3) Mapeamentos instáveis e recursos com “troca de identidade”

Se os seus for_each e chaves mudam ao longo do tempo, o Terraform pode recriar recursos.
Isso costuma acontecer sem você perceber: basta uma alteração no formato das chaves, na ordem de uma lista ou em dados “derivados” do ambiente.

  • Erro comum: usar count quando o ideal é for_each com uma chave estável.
  • Erro comum: gerar chaves a partir de índices de lista (ex.: [0], [1]).
  • Erro comum: usar dados que mudam (ex.: nomes criados com timestamp) como parte da identidade do recurso.
  • Erro comum: “concatenar” strings sem padronizar (case, separadores, trimming), causando diferenças entre ambientes.
Dica prática: se a identidade do recurso depende de um atributo de negócio, modele essa chave como parte explícita do seu input (variável).
Exemplo de padrão mais estável

Repare no ponto: a chave do for_each é o nome lógico. Se você quiser mudar o nome físico, faça isso de forma explícita (alterando a chave), sabendo que isso recria.

4 4) Dependências implícitas e execução “ok” que quebra em produção

Quando o Terraform não entende a dependência real, ele pode tentar criar recursos fora de ordem.
E quando “funciona local”, geralmente é coincidência: timing, permissões, ou algum recurso já existente.

  • Erro comum: confiar em side effects (ex.: achar que um bucket já existe ou que um vínculo já foi criado).
  • Erro comum: não referenciar outputs/ids de recursos diretamente, preferindo strings “copiadas e coladas”.
  • Erro comum: ignorar diferenças de permissões/contas: IAM/roles que existem em um ambiente, mas não no outro.
  • Erro comum: usar depends_on sem necessidade (ou usar quando realmente precisa sem entender o porquê).
Como evitar: sempre que existir dependência lógica, expresse no código via referências (resource.attr, outputs, IDs).
Reserve depends_on para casos onde a dependência não é capturada automaticamente.
ordem de criação
permissões
referências

Quer deixar seu Terraform ainda mais sólido?

Recomendo que você leia também outros posts do yurideveloper.com.br para aprofundar práticas como organização de módulos, padrões de naming e estratégias para evitar drift.


Ver mais posts

Feito para você aplicar no próximo plan e evitar sustos no apply.



“`