Aller au contenu

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.

Niveau Intermédiaire4 min de lecture— vuesAnsible

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

Environnement et versions

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

ARCHITECTURE TECHNIQUEComprendre la chaîne de bout en bout
01Inventaire
02Playbook
03Modules
04État cible
05Contrôle
Le plan de contrôle Ansible applique les modules depuis le poste de pilotage ; check, diff et seconde passe permettent d'évaluer les modifications.

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.

01

ÉTAPE 1 / 5

Préparer une cible de recette

Le test doit isoler l'effet d'une modification de fichier, sans perturbation de service.

  1. Créer un dossier de recette et vérifier la version.
  2. Supprimer uniquement l'ancien marqueur de cette recette s'il existe.
  3. Noter l'état initial du fichier.
Exemple techniqueÀ adapter à votre environnement
mkdir -p ansible-handler-lab && cd ansible-handler-lab
ansible --version
ls -l /tmp/adn-handler-demo.conf || true
Ce qui se passe à cette étape
1Inventaire
2Préparer une cible de recette
3Contrôle

À 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.

02

É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.

  1. Écrire handler.yml avec une tâche copy et un handler debug.
  2. Conserver le handler sous la clé handlers, au même niveau que tasks.
  3. Distinguer la notification du handler de l'exécution finale.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1Playbook
2Créer une tâche avec notify
3Contrôle

À 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.

03

ÉTAPE 3 / 5

Définir le handler correspondant

Le vérificateur repère notamment les clés mal placées et fautes d'indentation.

  1. Vérifier la syntaxe du playbook.
  2. Lire les noms des plays et handlers si le résultat surprend.
  3. Ne pas lancer tant qu'une erreur subsiste.
Exemple techniqueÀ adapter à votre environnement
ansible-playbook -i localhost, -c local handler.yml --syntax-check
Ce qui se passe à cette étape
1Modules
2Définir le handler correspondant
3Contrôle

À vérifier : Le playbook est syntaxiquement valide.

Point de vigilance ADN : Le test syntaxique ne prouve pas que le handler sera déclenché.

04

É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.

  1. Lancer le playbook une première fois.
  2. Observer l'état changed pour la tâche copy.
  3. Confirmer une seule exécution du handler debug en fin de play.
Exemple techniqueÀ adapter à votre environnement
ansible-playbook -i localhost, -c local handler.yml
Ce qui se passe à cette étape
1État cible
2Exécuter une première passe
3Contrôle

À 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.

05

ÉTAPE 5 / 5

Relancer sans modifier la configuration

Une deuxième exécution inchangée ne doit déclencher ni changement ni handler.

  1. Relancer exactement la même commande.
  2. Observer le recap changed=0 et l'absence du message du handler.
  3. Nettoyer le fichier de recette après vérification.
Exemple techniqueÀ adapter à votre environnement
ansible-playbook -i localhost, -c local handler.yml
# Nettoyage : rm /tmp/adn-handler-demo.conf
Ce qui se passe à cette étape
1Contrôle
2Relancer sans modifier la configuration
3Contrôle

À 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.

Documentation officielle de référence

05 · RECETTE

Comment vérifier que tout fonctionne ?

Résultat attenduContrôles avant de considérer la procédure terminée
01

notify et nom du handler concordent.

02

Première modification : changed=1 et handler exécuté.

03

Seconde exécution : changed=0 et aucun handler.

04

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.

Tous les guides Ansible

Pour aller plus loin