Set-OPS-Public/roles/serveur_powerdns/handlers/main.yml
Daniel Allaire 19bbadfb11 DNS public en production : cinq fautes que seule la production montrait
Applicateur de frontiere : ecrire n est pas charger, le chemin rien a faire charge
desormais. site-verifier compare enfin playbooks/site.yml, regenere avec le groupe.
Base TSIG dans un repertoire a pdns et pdnsutil en pdns (journal SQLite). Flux UDP 5300 :
le secondaire demande le SOA avant de transferer, garde dans P82. socket-dir de
pdns@public, et le failed_when qui taisait la notification est retire. Eprouve sur les
machines : 2 zones sur 2 tirees automatiquement, NOTIFY compte, zone interne refusee.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 18:35:36 -04:00

67 lines
2.9 KiB
YAML

---
- name: Validate PowerDNS zone
ansible.builtin.command:
cmd: "named-checkzone {{ serveur_powerdns_zone }} {{ serveur_powerdns_zone_directory }}/{{ serveur_powerdns_zone }}.zone"
changed_when: false
when: not ansible_check_mode # en dry-run le fichier de zone n'existe pas encore
listen: Validate and reload PowerDNS
# UNE ZONE NON VALIDEE EST UNE ZONE QUI PEUT NE PAS ETRE SERVIE. La zone directe etait
# verifiee, les inverses non : PowerDNS refuse silencieusement un fichier mal forme et
# continue de servir le reste, si bien qu'un PTR casse ne se voit qu'a l'usage — et
# l'usage, ici, c'est un journal ou un courriel qui reproche un nom sans le dire.
- name: Validate PowerDNS reverse zones
ansible.builtin.command:
cmd: >-
named-checkzone {{ zone_inverse }}
{{ serveur_powerdns_zone_directory }}/{{ zone_inverse }}.zone
changed_when: false
loop: "{{ serveur_powerdns_zones_inverses | default([]) }}"
loop_control:
loop_var: zone_inverse
when: not ansible_check_mode # en dry-run le fichier de zone n'existe pas encore
listen: Validate and reload PowerDNS
- name: Restart PowerDNS
ansible.builtin.systemd:
name: "{{ serveur_powerdns_service_name }}"
state: restarted
when: not ansible_check_mode # en dry-run le service n'existe pas encore
listen: Validate and reload PowerDNS
# L'INSTANCE PUBLIQUE : on valide chaque zone AVANT de redemarrer — une zone refusee est
# une zone que le secondaire du site cesserait de recevoir, sans erreur visible dehors.
- name: Valider les zones publiques
ansible.builtin.command:
cmd: >-
named-checkzone {{ zone_publique }}
{{ serveur_powerdns_public_zones_dir }}/{{ zone_publique }}.zone
changed_when: false
loop: "{{ serveur_powerdns_zones_publiques | default([]) }}"
loop_control:
loop_var: zone_publique
when: not ansible_check_mode
listen: Valider et redemarrer le DNS public du locataire
- name: Redemarrer l'instance publique
ansible.builtin.systemd:
name: pdns@public
state: restarted
when: not ansible_check_mode
listen: Valider et redemarrer le DNS public du locataire
# PREVENIR LE SITE TOUT DE SUITE : sans notification, le secondaire attendrait le
# rafraichissement du SOA — une heure de retard sur chaque changement.
- name: Notifier le serveur public du site
ansible.builtin.command:
argv: [pdns_control, --config-name=public, notify, "{{ zone_publique }}"]
changed_when: false
# PAS DE `failed_when: false` (retire le 2026-09-16). Il cachait un socket de controle
# introuvable : la notification echouait a chaque deploiement, sans un mot, et un
# changement de zone aurait mis jusqu'a l'expiration du SOA a se propager. Un canal de
# controle casse est un defaut, pas un bruit.
loop: "{{ serveur_powerdns_zones_publiques | default([]) }}"
loop_control:
loop_var: zone_publique
when: not ansible_check_mode
listen: Valider et redemarrer le DNS public du locataire