1. Plusieurs environnements #
Dossiers, tfvars ou workspaces.
Comparaison #
| Approche | Avantages | Limites |
|---|---|---|
| Dossier par environnement | Isolation forte, backends distincts | Un peu de duplication (réduite par les modules) |
| Fichiers tfvars | Un code, des valeurs par environnement | Même backend : prudence |
| Workspaces CLI | Plusieurs états pour un même code | Facile de se tromper de workspace ; pas d'isolation des droits |
Exemple #
envs/
recette/ main.tf backend.tf recette.tfvars
prod/ main.tf backend.tf prod.tfvars
modules/
reseau/ app/ base/
cd envs/prod && terraform plan -var-file=prod.tfvars2. Découper en couches #
Des états plus petits.
Couches #
data "terraform_remote_state" "reseau" {
backend = "s3"
config = { bucket = "etat-terraform-123", key = "reseau/prod.tfstate", region = "eu-west-3" }
}
module "app" {
source = "../../modules/app"
subnet_ids = data.terraform_remote_state.reseau.outputs.private_subnets
}3. Outils complémentaires #
Réduire la répétition.
Outils #
- Terragrunt : configuration DRY des backends et des dépendances entre couches.
- HCP Terraform : workspaces distants avec variables, droits et exécutions par équipe.
- Lecture de sorties par sources de données (paramètres SSM, étiquettes) plutôt que par terraform_remote_state pour réduire le couplage.
