Ce TP a été écrit avec Terragrunt >= 0.67. La commande run-all (avec tiret) est la syntaxe actuelle. Les versions antérieures utilisaient run --all les deux peuvent être présentes selon l’installation.
Backend local : on utilise un backend local pour ce TP. En production, on utiliserait un backend distant (S3, GCS, AzureRM). Le bloc remote_state avec generate produit automatiquement un fichier backend.tf dans chaque unité avant l’exécution de Terraform/OpenTofu.
if_exists = "overwrite" indique à Terragrunt d’écraser le backend.tf s’il existe déjà. Ne pas créer de backend.tf manuellement dans les modules il serait écrasé.
terragrunt run-all exécute la commande Terraform/OpenTofu sur toutes les unités du dossier courant en respectant l’ordre des dépendances : naming est planifié et appliqué avant app.
Pour la destruction globale, utiliser avec précaution :
Fenêtre de terminal
terragruntrun-alldestroy
Terragrunt détruit dans l’ordre inverse des dépendances : app est détruit avant naming. Confirmer l’ordre avant d’exécuter en production.
1. À quoi sert le fichier root.hcl ?
Il centralise la configuration commune à toutes les unités : backend, locals partagés (projet, environnement), configuration du provider. Chaque unité l’hérite via include, ce qui évite de répéter les mêmes paramètres.
2. Quelle est la différence entre inputs et dependency ?inputs passe des valeurs statiques ou issues des locals directement au module Terraform. dependency permet de lire les outputs d’une autre unité Terragrunt déjà déployée : les valeurs sont dynamiques et connues seulement après l’apply de l’unité source.
3. Pourquoi l’unité app doit-elle attendre l’unité naming ?
Elle a besoin de la valeur de name_prefix produite par naming. Cette valeur n’existe qu’après l’apply de naming. Terragrunt résout l’ordre d’exécution automatiquement à partir des blocs dependency.
4. Où Terragrunt stocke-t-il l’état Terraform dans ce TP ?
Dans des fichiers terraform.tfstate locaux, un par unité, dans leur dossier respectif (live/dev/naming/terraform.tfstate et live/dev/app/terraform.tfstate). C’est la configuration du bloc remote_state dans root.hcl.
5. Quelle commande permet d’exécuter un plan sur toutes les unités ?terragrunt run-all plan depuis le dossier parent des unités.
6. Pourquoi faut-il être prudent avec terragrunt run-all destroy ?
La commande détruit toutes les unités du dossier courant et de ses sous-dossiers dans l’ordre inverse des dépendances. En production, cela peut entraîner la destruction de ressources critiques si exécuté depuis un dossier trop haut dans l’arborescence.
Appliquer et vérifier que le résultat est demo-prod.
read_terragrunt_config() lit un fichier .hcl Terragrunt et expose ses locals. C’est le pattern standard pour surcharger des variables par environnement sans modifier root.hcl.
Après un terragrunt init, observer les fichiers générés par Terragrunt :
Fenêtre de terminal
find.-name"backend.tf"
find.-typed-name".terragrunt-cache"
Terragrunt copie le module source dans .terragrunt-cache/ et y génère les fichiers nécessaires (backend.tf, éventuellement provider.tf) avant d’exécuter Terraform/OpenTofu.