0Pricing
Terraform Infrastructure as Code · Leçon

Blocs dynamiques pour une configuration imbriquée

Générez par programmation des blocs de configuration imbriqués répétitifs avec des blocs dynamiques, afin d’éviter le copier-coller pour des éléments comme les règles de groupes de sécurité.

Blocs dynamiques pour une configuration imbriquée est une leçon Terraform Infrastructure as Code gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Terraform Infrastructure as Code, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Terraform Infrastructure as Code comprend 4 leçons au total.

Le problème de la répétition

Certaines ressources contiennent des blocs imbriqués répétés, comme plusieurs règles ingress dans un groupe de sécurité. Écrire chacune de ces règles manuellement est verbeux et rend difficile le respect du principe DRY. Les blocs dynamiques les génèrent à partir d’une collection.

Commencer par les blocs statiques

Voici la version manuelle : trois blocs ingress presque identiques. Imaginez devoir en maintenir une douzaine.

resource "aws_security_group" "web" {
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Anatomie d’un bloc dynamique

Un bloc dynamic possède une étiquette correspondant au nom du bloc imbriqué, une collection for_each et un bloc content qui décrit chaque instance générée.

dynamic "ingress" {
  for_each = var.rules
  content {
    from_port   = ingress.value.port
    to_port     = ingress.value.port
    protocol    = "tcp"
    cidr_blocks = ingress.value.cidrs
  }
}

L’objet itérateur

Dans content, faites référence à l’élément courant via un objet portant le nom de l’étiquette du bloc. Il expose .value (l’élément) et .key (la clé de la carte ou l’index de la liste).

Définir la variable d’entrée

Pilotez le bloc dynamique avec une variable typée. Une liste d’objets permet de documenter chaque règle directement.

variable "rules" {
  type = list(object({
    port  = number
    cidrs = list(string)
  }))
}

Assembler le tout

La ressource reste maintenant compacte, quel que soit le nombre de règles transmises.

resource "aws_security_group" "web" {
  name = "web-sg"
  dynamic "ingress" {
    for_each = var.rules
    content {
      from_port   = ingress.value.port
      to_port     = ingress.value.port
      protocol    = "tcp"
      cidr_blocks = ingress.value.cidrs
    }
  }
}

Renommer l’itérateur

L’argument iterator vous permet de renommer la variable d’itération, ce qui est utile pour éviter toute confusion lors de l’imbrication de blocs dynamiques.

dynamic "ingress" {
  for_each = var.rules
  iterator = rule
  content {
    from_port = rule.value.port
    to_port   = rule.value.port
  }
}

Ignorer des blocs sous condition

Fournissez une collection vide pour produire zéro bloc. Une expression ternaire sur for_each rend un bloc facultatif.

dynamic "logging" {
  for_each = var.enable_logging ? [1] : []
  content {
    target_bucket = var.log_bucket
  }
}

Blocs dynamiques imbriqués

Les blocs dynamiques peuvent être imbriqués. Utilisez des itérateurs distincts afin que le bloc interne puisse faire référence aux deux niveaux sans ambiguïté.

dynamic "setting" {
  for_each = var.settings
  iterator = s
  content {
    namespace = s.value.namespace
    name      = s.value.name
    value     = s.value.value
  }
}

Quand ne pas utiliser de blocs dynamiques

Les blocs dynamiques ajoutent une indirection et peuvent nuire à la lisibilité. Si vous n’avez qu’un ou deux blocs statiques, gardez-les littéraux. Utilisez les blocs dynamiques lorsque le nombre dépend des données.

Inspecter le résultat

Exécutez un plan pour vérifier que les blocs générés correspondent aux attentes. Terraform développe chaque élément de la collection en un bloc imbriqué concret.

terraform plan

Vérification rapide

Testez vos connaissances des blocs dynamiques.

Récapitulatif : configuration imbriquée DRY

Les blocs dynamiques vous permettent de générer une configuration imbriquée à partir de données :

  • for_each pilote l’itération ; content définit chaque bloc.
  • L’itérateur expose .value et .key.
  • Les collections vides rendent les blocs facultatifs.
  • Utilisez-les avec parcimonie pour conserver des configurations lisibles.

Questions Fréquemment Posées

La leçon « Blocs dynamiques pour une configuration imbriquée » est-elle gratuite ?

Oui — le texte complet de « Blocs dynamiques pour une configuration imbriquée » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Terraform Infrastructure as Code, passe à CoddyKit PRO. Le cours Terraform Infrastructure as Code comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Blocs dynamiques pour une configuration imbriquée » ?

Générez par programmation des blocs de configuration imbriqués répétitifs avec des blocs dynamiques, afin d’éviter le copier-coller pour des éléments comme les règles de groupes de sécurité. Tu pratiques Terraform Infrastructure as Code avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Terraform Infrastructure as Code ?

Aucune expérience préalable n'est requise. Terraform Infrastructure as Code sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Blocs dynamiques pour une configuration imbriquée » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Terraform Infrastructure as Code ?

Oui. Chaque leçon Terraform Infrastructure as Code inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Utiliser des boucles avec `for_each` et `count`
  2. Fonctions intégrées de Terraform
  3. Expressions conditionnelles et splats
  4. Blocs dynamiques pour une configuration imbriquée
← Retour à Terraform Infrastructure as Code