Objectifs
- Distinguer root module et child module.
- Organiser main.tf, variables.tf et outputs.tf.
- Appeler un module local avec des inputs.
- Versionner les modules distants et garder une interface simple.
Réutiliser sans cacher la complexité
Le root module est le répertoire depuis lequel Terraform est exécuté. Un child module est appelé par un autre module pour regrouper une responsabilité réutilisable.
Un bon module fournit une abstraction ciblée : il simplifie un besoin répété sans masquer les décisions importantes de sécurité, de coût ou d’exploitation.
Organisation d’un child module
main.tf contient généralement les resources, variables.tf documente les inputs et outputs.tf expose les résultats utiles. Cette séparation est une convention, pas une obligation du langage.
modules/
└── network/
├── main.tf
├── variables.tf
└── outputs.tfAppeler un module
source indique où se trouve le module. Les autres arguments alimentent ses variables. Les outputs se référencent sous la forme module.network.<output>.
module "network" {
source = "./modules/network"
environment = "dev"
}
output "network_id" {
value = module.network.network_id
}terraform initRegistry et versionnement
Le Terraform Registry référence aussi des modules. Une source distante doit être examinée avant usage : mainteneur, code, licence, versions, documentation et effets sur l’infrastructure.
- Donnez une responsabilité précise à chaque module.
- Documentez les variables et exposez seulement des outputs utiles.
- Versionnez les modules distants afin d’éviter un changement inattendu.
- Évitez les modules gigantesques remplis d’options conditionnelles.
- Testez toute mise à jour de module et relisez le plan obtenu.
Erreur fréquente : créer un module universel
Mini résumé
- Le root module appelle éventuellement des child modules.
- Les inputs paramètrent le module et les outputs exposent son contrat de sortie.
- Une source distante doit être versionnée et auditée.
- Les modules ciblés et composables restent plus faciles à exploiter.
Outils associés
Générer une configuration HCL
Utilisez Terraform HCL Generator pour préparer localement une base AWS, Azure, GCP ou Docker, puis relisez-la avant utilisation.
Ouvrir l’outilMini quiz
Trois questions pour vérifier les notions essentielles de la leçon.