Dans Terragrunt, vous pouvez appeler plusieurs modules Terraform depuis un seul fichier de configuration Terragrunt en utilisant le bloc terraform en combinaison avec des configurations enfants. Cela se fait generalement en organisant votre configuration Terragrunt dans une hierarchie ou chaque module est reference dans son propre fichier Terragrunt, mais gere centralement en utilisant un fichier Terragrunt parent.

Voici un apercu de base de la facon de structurer cela :

  1. Creer un Fichier Terragrunt Parent : Ce fichier ne deployera pas directement de ressources mais sera utilise pour configurer les parametres communs et orchestrer le deploiement des modules.
  2. Creer des Fichiers Terragrunt Enfants pour Chaque Module : Chaque module aura son propre fichier de configuration Terragrunt qui specifie la source du module Terraform et les entrees necessaires.

Exemple de Structure

Voici un exemple de structure de repertoires :

/terraform-live
|-- terragrunt.hcl  # Configuration parente
|-- network
|   |-- terragrunt.hcl  # Configuration du module pour le reseau
|-- app
|   |-- terragrunt.hcl  # Configuration du module pour l'application

Terragrunt.hcl Parent

# /terraform-live/terragrunt.hcl
remote_state {
  backend = "s3"
  config = {
    bucket         = "my-terraform-state"
    key            = "${path_relative_to_include()}/terraform.tfstate"
    region         = "us-west-1"
    encrypt        = true
    dynamodb_table = "my-lock-table"
  }
}

Inclure toutes les configurations enfants

include { path = find_in_parent_folders() }

Terragrunt.hcl Enfant (ex. pour le Reseau)

# /terraform-live/network/terragrunt.hcl
terraform {
  source = "git::https://example.com/network-module.git?ref=v1.0"
}

Entrees specifiques au module reseau

inputs = { vpc_id = “vpc-123456” }

Utilisation

Pour appliquer tous les modules, vous navigueriez generalement dans chaque repertoire de module et executeriez les commandes Terragrunt, comme terragrunt apply. Vous pouvez egalement automatiser cela avec des scripts ou des workflows CI/CD qui iterent a travers les repertoires de modules et executent les commandes Terragrunt.

Cette configuration vous permet de maintenir une separation claire des preoccupations, un code reutilisable et une coherence entre les environnements tout en gerant le deploiement de plusieurs modules a partir d'une configuration centralisee.