RousselTMLEARNING

Automatisation

Les modules Terraform : concevoir, versionner et réutiliser

Structurer Terraform avec des modules : module racine et modules enfants, entrées et sorties, sources (local, Git, registre), versionnage, composition, bonnes pratiques de conception et registre de modules.

1. Principe #

Des briques réutilisables.

Structure #

Composition de modules
Un module = un dossier avec variables.tf, main.tf, outputs.tf et un README.
module "reseau" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "~> 5.0"
  name    = "prod"
  cidr    = "10.0.0.0/16"
  azs             = ["eu-west-3a", "eu-west-3b"]
  private_subnets = ["10.0.11.0/24", "10.0.12.0/24"]
  public_subnets  = ["10.0.1.0/24", "10.0.2.0/24"]
}

module "app" {
  source     = "./modules/app"
  subnet_ids = module.reseau.private_subnets
}

2. Sources et versions #

D'où viennent les modules.

Sources #

SourceExemple
Dossier local./modules/app
Registre publicterraform-aws-modules/vpc/aws + version
Gitgit::https://git.exemple.fr/modules/app.git?ref=v1.4.0
Registre privéapp.terraform.io/acme/app/aws

Règle #

Bonne Pratique : Épinglez toujours une version (ou une étiquette Git) : un module qui change sous vos pieds rend les plans imprévisibles.

3. Bien concevoir #

Des modules utiles.

Règles #

  • Un module = une responsabilité (réseau, base, application), pas une simple enveloppe d'une ressource.
  • Variables typées, documentées, avec validations et valeurs par défaut sûres.
  • Sorties pour tout ce dont les autres modules ont besoin.
  • Exemples et tests (terraform test) dans le dépôt du module.
  • Versionnage sémantique et journal des changements.

Articles liés

Terraform : principes, architecture et flux de travail

Comprendre Terraform : infrastructure as code déclarative, architecture (cœur, fournisseurs, état), flux init…

Le langage HCL : ressources, variables, sorties, données et expressions

Écrire du Terraform : blocs terraform, provider, resource et data, variables typées avec validation, locals, …

L'état Terraform : backends distants, verrouillage, import et refactorisation

Gérer l'état Terraform : rôle du fichier d'état, données sensibles, backends distants (S3, azurerm, gcs, HCP …

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !