Set-OPS-Public/roles/serveur_postfix/handlers/main.yml
Daniel Allaire 0b848fddc9 postfix : l ordre des handlers decidait de la panne
Ansible declenche les handlers dans l ordre ou ils sont DEFINIS, jamais dans
celui ou les taches les notifient. Recharger etait ecrit en premier.

Sur un premier deploiement, main.cf passe inet_protocols de all a ipv4 et
notifie un redemarrage ; les cartes LDAP notifient un rechargement. Le
rechargement partait d abord, sur un maitre portant encore l ancienne valeur :
to change inet_protocols, stop and start Postfix — puis fatal sur :::submission.

Le role documentait le piege depuis le 2026-08-30 et notifiait correctement.
Seul l ordre des handlers le rendait inoperant.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 00:31:19 -04:00

36 lines
1.7 KiB
YAML

---
# L'ORDRE DE CE FICHIER EST L'ORDRE D'EXECUTION, ET C'EST LUI QUI COMPTE (2026-09-14).
#
# Ansible declenche les handlers dans l'ordre ou ils sont DEFINIS ICI — jamais dans
# l'ordre ou les taches les ont notifies. Le redemarrage est donc ecrit EN PREMIER, et
# ce n'est pas une preference de style.
#
# CE QUE L'ORDRE INVERSE COUTAIT. Sur un premier deploiement, `main.cf` passe
# `inet_protocols` de `all` a `ipv4` (notifie un REDEMARRAGE) et les cartes LDAP changent
# aussi (notifient un RECHARGEMENT). Les deux sont en file. Le rechargement partait
# d'abord, sur un maitre qui portait encore l'ancienne valeur :
#
# warning: to change inet_protocols, stop and start Postfix
# fatal: :::submission: Address family for hostname not supported
#
# Postfix tombe en `failed` APRES avoir accepte une configuration valide — `postfix check`
# ne dit rien, parce que la configuration EST valide ; c'est la TRANSITION qui ne l'est
# pas. Le role documentait deja le piege depuis le 2026-08-30 et notifiait correctement ;
# seul l'ordre des handlers le rendait inoperant.
#
# Redemarrer d'abord rend le rechargement qui suit inoffensif : il s'applique a un maitre
# deja reparti, donc deja aligne.
- name: Redémarrer postfix
ansible.builtin.systemd:
name: "{{ serveur_postfix_service }}"
state: restarted
when: not ansible_check_mode
# Le rechargement reste le geste ORDINAIRE — cartes, alias, tables LDAP : tout ce qui ne
# vit pas dans le processus maitre. Ce qui y vit — protocoles, adresses, ports — exige un
# redemarrage, et c'est la meme frontiere que pour nginx et son `listen`.
- name: Recharger postfix
ansible.builtin.systemd:
name: "{{ serveur_postfix_service }}"
state: reloaded
when: not ansible_check_mode