Terraform · Modules

Modules

Organisez des resources réutilisables dans des modules aux entrées, sorties et versions maîtrisées.

Leçon disponible
20 min

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.

Arborescence locale
modules/
└── network/
    ├── main.tf
    ├── variables.tf
    └── outputs.tf

Appeler 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>.

Appel d’un module local
module "network" {
  source = "./modules/network"

  environment = "dev"
}

output "network_id" {
  value = module.network.network_id
}
Initialiser après ajout ou modification des sources
terraform init

Registry 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.

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’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Qu’appelle-t-on root module ?
2. Que désigne source dans un bloc module ?
3. Quelle caractéristique favorise un bon module ?