terraform-boas-praticas
Terraform — Boas Práticas
Terraform ruim quase nunca é sintaxe errada. É estrutura errada: um main.tf que cresceu, ambientes que divergem por condicional escondido, um módulo de terceiro no caminho crítico do provisionamento, e uma versão de provider que alguém escreveu de memória há dois anos. Nada disso quebra no plan — quebra seis meses depois, quando mudar dev sem mexer em prod deixou de ser possível.
As quatro regras abaixo existem para tornar esses erros difíceis de cometer. Elas valem para qualquer cloud e qualquer provider.
As quatro regras
| Regra | O que isso descarta na prática |
|---|---|
| 1. Tudo em módulos, pensados para reuso | resource solto no root, main.tf monolítico, copiar e colar bloco de recurso entre projetos |
| 2. Ambientes em pastas, nunca em workspace | terraform workspace new/select, count = terraform.workspace == "prod" ? 1 : 0, um state para todos os ambientes |
| 3. Nunca módulos de comunidade | source = "terraform-aws-modules/vpc/aws" e qualquer source que aponte para fora do repositório ou da organização |
| 4. Versão do provider sempre consultada | escrever version = "~> 5.0" de memória, omitir required_providers, deixar o Terraform resolver sozinho |
Quando o pedido do usuário conflitar com uma delas (por exemplo: "usa o módulo de VPC da comunidade" ou "separa os ambientes com workspace"), não execute em silêncio nem recuse: diga em uma frase o que a regra manda e por quê, entregue seguindo a regra, e deixe claro o que foi feito diferente do pedido. Se o usuário reafirmar, é decisão dele — siga.