Set-OPS-Public/roles/serveur_powerdns/handlers/main.yml
Daniel Allaire 788c5073dc DNS public, phase 1 : le locataire ecrit, le site sert
Role serveur_dns_public (secondaire public, transfert signe TSIG, aucune zone interne) ;
serveur_powerdns exerce enfin autorite primaire-cache dans une instance pdns@public a part,
pour que le site ne puisse jamais interroger la zone .internal. Relations derivees des plans
des locataires, mots de flux dns_public_site et primaires_dns_locataires. Eprouve avant
d ecrire : allow-axfr-ips et TSIG sont alternatifs, le primaire notifie aussi ses NS, le
serial fige aurait gele le secondaire. P82 refuse l exposition sans DNSSEC.

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

64 lines
2.6 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
failed_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