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