Terragrunt vs Terraform: O Que o Terragrunt Adiciona
O Terragrunt não é um substituto do Terraform: é um wrapper fino que reduz repetição, padroniza o estado remoto e orquestra muitos módulos. O Terraform puro basta para setups pequenos; o Terragrunt se paga em escala.
O Terraform provisiona infraestrutura a partir de configuração declarativa; o Terragrunt fica por cima para resolver a repetição e a orquestração de múltiplos ambientes que o Terraform sozinho deixa por sua conta. Aqui está o que o Terragrunt adiciona e quando a camada extra vale a pena.
| Terragrunt | Terraform | |
|---|---|---|
| O que é | Wrapper em torno do Terraform | A própria ferramenta de IaC |
| Configuração DRY | Inputs compartilhados, blocos generate | Repetir por ambiente |
| Estado remoto | Configuração de backend gerada automaticamente | Backend manual por módulo |
| Execuções multi-módulo | run-all entre dependências | Apply por módulo |
| Dependências | Dependências explícitas entre módulos | Ordenação manual |
| Overhead | Ferramenta + conceitos extras | Menos partes móveis |
O que o Terragrunt de fato adiciona
O Terragrunt mantém seu Terraform DRY: em vez de copiar e colar configuração de backend e provider entre ambientes, você a define uma vez e a gera. Ele também padroniza o estado remoto por módulo e pode executar muitos módulos juntos (run-all) respeitando as dependências. Para um único stack pequeno, nada disso é necessário; para dezenas de módulos entre dev/stage/prod, remove muito boilerplate e drift.
O custo do wrapper
O Terragrunt é mais uma ferramenta para instalar, aprender e manter compatível com o Terraform (ou OpenTofu). Suas abstrações (include, dependency, generate) são poderosas, mas adicionam indireção, então depurar pode significar raciocinar sobre arquivos gerados. Adote-o quando a repetição for uma dor real, não preventivamente.
No CI
Ambos rodam como etapas de CLI. O run-all plan/apply do Terragrunt pode encadear muitos módulos em ordem de dependência, o que serve bem ao CI para grandes ambientes; o Terraform puro é mais simples quando você aplica um módulo por pipeline. Faça cache do diretório de plugins de provider para acelerar o init em ambos os casos.
O veredito
Use o Terraform puro para infraestrutura pequena ou de stack único; adicione o Terragrunt quando a repetição, o boilerplate de estado remoto e a orquestração de múltiplos módulos entre ambientes se tornarem penosos. O Terragrunt complementa o Terraform em vez de substituí-lo.