GUIDE TECHNIQUE · ANSIBLE
Utiliser les handlers Ansible
Déclencher un handler uniquement lorsque son fichier de configuration a changé ; distinguer changement réel et relance inutile, et observer le traitement des notifications en fin de play.
L’ESSENTIEL EN BREF
Comment procéder ?
Déclencher un handler uniquement lorsque son fichier de configuration a changé ; distinguer changement réel et relance inutile, et observer le traitement des notifications en fin de play.
Résultat à atteindre : notify et nom du handler concordent.
Avant de commencer : Playbook Ansible opérationnel sur la machine de recette.
01 · CADRAGE
Ce que vous allez mettre en place
Déclencher un handler uniquement lorsque son fichier de configuration a changé ; distinguer changement réel et relance inutile, et observer le traitement des notifications en fin de play.
Pour qui : Administrateurs, ingénieurs DevOps, SRE et équipes de recette
ansible-core récent, exécution sur localhost ; handler debug uniquement pour éviter tout redémarrage d'un service réel.
Vérifiez la compatibilité avec votre environnement réel. Les versions ne sont jamais présumées identiques d’un tenant à l’autre.
02 · AVANT DE COMMENCER
Prérequis et points de contrôle
- Playbook Ansible opérationnel sur la machine de recette.
- Fichier /tmp/adn-handler-demo.conf réservé à l'exercice.
- Pas de service client à redémarrer ; les handlers exécutant systemd doivent être adaptés à un service autorisé.
03 · VUE D’ENSEMBLE
Comprendre l’architecture et les flux
04 · TUTORIEL
Procédure complète, étape par étape
Chaque étape explique l’action, sa raison, le contrôle attendu et les erreurs habituelles. Adaptez les exemples aux paramètres de votre propre environnement.
ÉTAPE 1 / 5
Préparer une cible de recette
Le test doit isoler l'effet d'une modification de fichier, sans perturbation de service.
- Créer un dossier de recette et vérifier la version.
- Supprimer uniquement l'ancien marqueur de cette recette s'il existe.
- Noter l'état initial du fichier.
mkdir -p ansible-handler-lab && cd ansible-handler-lab
ansible --version
ls -l /tmp/adn-handler-demo.conf || trueÀ vérifier : Le poste et le marqueur de recette sont identifiés.
Point de vigilance ADN : Ne pas supprimer un fichier ressemblant au marqueur si vous n'en connaissez pas l'origine.
ÉTAPE 2 / 5
Créer une tâche avec notify
notify référence un handler par son nom et seulement lorsque la tâche signale changed.
- Écrire handler.yml avec une tâche copy et un handler debug.
- Conserver le handler sous la clé handlers, au même niveau que tasks.
- Distinguer la notification du handler de l'exécution finale.
cat > handler.yml <<'EOF'
- name: Handler de demonstration
hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Ecrire la configuration
ansible.builtin.copy:
dest: /tmp/adn-handler-demo.conf
content: "mode=lab\n"
mode: '0644'
notify: Confirmer changement
handlers:
- name: Confirmer changement
ansible.builtin.debug:
msg: "Configuration modifiee"
EOFÀ vérifier : handler.yml contient une tâche et un handler portant exactement le nom notifié.
Point de vigilance ADN : Un handler redémarrant un service ne doit pas être placé dans ce laboratoire de démonstration.
ÉTAPE 3 / 5
Définir le handler correspondant
Le vérificateur repère notamment les clés mal placées et fautes d'indentation.
- Vérifier la syntaxe du playbook.
- Lire les noms des plays et handlers si le résultat surprend.
- Ne pas lancer tant qu'une erreur subsiste.
ansible-playbook -i localhost, -c local handler.yml --syntax-checkÀ vérifier : Le playbook est syntaxiquement valide.
Point de vigilance ADN : Le test syntaxique ne prouve pas que le handler sera déclenché.
ÉTAPE 4 / 5
Exécuter une première passe
La première modification doit notifier le handler ; celui-ci s'exécute après la section tasks.
- Lancer le playbook une première fois.
- Observer l'état changed pour la tâche copy.
- Confirmer une seule exécution du handler debug en fin de play.
ansible-playbook -i localhost, -c local handler.ymlÀ vérifier : copy est changed et le handler Confirmer changement s'exécute une fois.
Point de vigilance ADN : Si le fichier préexistait avec le même contenu, changez volontairement son contenu de recette pour provoquer une modification.
ÉTAPE 5 / 5
Relancer sans modifier la configuration
Une deuxième exécution inchangée ne doit déclencher ni changement ni handler.
- Relancer exactement la même commande.
- Observer le recap changed=0 et l'absence du message du handler.
- Nettoyer le fichier de recette après vérification.
ansible-playbook -i localhost, -c local handler.yml
# Nettoyage : rm /tmp/adn-handler-demo.confÀ vérifier : La deuxième passe rapporte changed=0 et le handler ne s'exécute pas.
Point de vigilance ADN : Les handlers ne sont pas une méthode d'ordonnancement arbitraire : utilisez-les pour les actions réellement conditionnelles.
SOURCES ET FIABILITÉ
Statut de validation du guide
Rédaction : ADN Consulting. Statut : procédure documentée, exécution en laboratoire non attestée.
Les exemples et versions indiqués doivent être vérifiés sur un environnement autorisé. Aucune validation individuelle par un consultant n’est revendiquée sans preuve.
05 · RECETTE
Comment vérifier que tout fonctionne ?
notify et nom du handler concordent.
Première modification : changed=1 et handler exécuté.
Seconde exécution : changed=0 et aucun handler.
Aucun vrai service n'a été redémarré.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
Échec de syntaxe
Cause probable : Format du fichier ou option incompatible
Que faire : Vérifier indentation YAML, version et documentation officielle.
Accès refusé
Cause probable : Droits ou contexte de connexion incorrects
Que faire : Contrôler l'utilisateur, le namespace et les permissions.
État non conforme
Cause probable : Configuration non appliquée ou ressource différente
Que faire : Relire les sorties détaillées, événements et paramètres effectifs.
Le conseil de l’expert ADN
Avant de généraliser cette configuration, validez-la sur un périmètre représentatif, documentez les critères de réussite et conservez une procédure de retour arrière. Une automatisation fiable se juge sur l’état final observé, les permissions maîtrisées et un retour arrière testé.
07 · QUESTIONS PRATIQUES
Questions fréquentes
Puis-je lancer cet exemple directement en production ?
Non : les valeurs et droits sont illustratifs. Une recette, une revue de sécurité et une procédure de retour arrière sont nécessaires.
Le succès de la commande suffit-il ?
Non, il faut observer le résultat attendu sur la ressource ou le service ciblé.
AUTRES TECHNOLOGIES
Guides complémentaires
Ce tutoriel s’inscrit dans une chaîne technique plus large. Retrouvez les méthodes associées aux technologies voisines.
