Aller au contenu
Infrastructure as Code medium

Contrôle de flux Ansible : when, loop, block/rescue, failed_when, ignore_errors

3 min de lecture

Logo Ansible

Cette sous-section couvre la couche conditionnelle d’Ansible : exécuter une tâche seulement si une condition est vraie, boucler sur une liste, gérer les erreurs proprement. C’est ce qui transforme un playbook linéaire (toutes les tâches s’exécutent dans l’ordre) en un playbook adaptatif (chaque tâche s’exécute si pertinent, gère ses erreurs sans casser le reste).

Vous y apprenez when: (la condition la plus simple), loop: (la boucle moderne, qui remplace with_items:), les blocs block/rescue/always (équivalent try/catch/finally), et les redéfinitions de sémantique avec failed_when:, changed_when:, ignore_errors:, any_errors_fatal:.

  • when: : conditionner une tâche sur une expression Jinja2
  • loop: : itérer sur une liste, dict, ou résultat de lookup
  • with_* legacy : pourquoi privilégier loop: aujourd’hui
  • block / rescue / always : gestion d’erreur structurée (équivalent try/catch/finally)
  • failed_when: et changed_when: : redéfinir succès et changement
  • ignore_errors: true : usage légitime vs anti-pattern
  • any_errors_fatal: true : arrêter le play sur 1ère erreur cluster
Objectif RHCECouvert par
Utiliser conditionnels et bouclesConditions when + Boucles loop
Gérer les erreurs (block/rescue/always, failed_when)Block-rescue-always + failed-when-changed-when

Ces sujets sont explicites dans le blueprint EX294.

  • when: qui pose une string au lieu d’une condition : when: "{{ var == 'prod' }}" est faux ; la bonne forme est when: var == 'prod' (sans Jinja, sans quotes).
  • loop: qui ne déclenche pas le handler à chaque itération : un handler notify n’est levé qu’une fois quel que soit le nombre d’itérations changed.
  • block: sans rescue: : les erreurs ne sont pas capturées, c’est juste un grouping visuel.
  • ignore_errors: true partout : masque les vraies erreurs, anti-pattern. Préférer failed_when: ciblé.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn