Le problème et l'organisation
Avec Terraform seul, gérer des dizaines d'environnements et de composants mène à beaucoup de duplication : configuration du backend, providers, variables répétées dans chaque dossier.
Terragrunt (Gruntwork) est une surcouche fine de Terraform et d'OpenTofu qui factorise cette configuration. Chaque dossier contenant un terragrunt.hcl est une unité : un module Terraform instancié avec ses entrées et son propre état.
live/
root.hcl # configuration commune (backend, provider)
prod/
env.hcl # variables de l'environnement
reseau/terragrunt.hcl
aks/terragrunt.hcl
dev/
env.hcl
reseau/terragrunt.hcl
aks/terragrunt.hcl
modules/ # modules Terraform (ou dépôt séparé versionné)
reseau/
aks/- Un état par unité : des plans plus rapides et un rayon d'impact limité.
- Les modules sont versionnés (tags Git) et référencés par chaque environnement : on promeut une version de dev vers prod.