Set-OPS-Public/roles/serveur_powerdns/tasks/main.yml
Daniel Allaire 1295eeaf4e D-71 : PKI et DNS debout avant tout, et la zone inverse manquait
Contrainte de l'exploitant apres avoir vu backup-01 et collab-01 crees avant
l'AC et le DNS. Ma premiere reponse etait incomplete : un clone est bien
inerte, mais un echec a la 12e VM coute 40 minutes sans rien deployer, et le
journal donne l'impression que le moteur ignore ses couches.

Mesure avant de coder :
- enregistrements A : DEJA derives du plan (zone generee depuis hotes_actifs)
- zone inverse / PTR : n'existe NULLE PART, aucun role ne touche in-addr.arpa
- ordre d'amorcage : aucun, deployer-tout est par couches

Le premier point a reduit le travail de moitie — j'allais ecrire un enrolement
DNS par hote alors que la zone directe etait deja correcte.

Zone inverse derivee du supernet (27.10.in-addr.arpa), PTR issus de la MEME
source que les A : pas d'endroit ou elles puissent diverger. Vide si le
supernet n'est pas un /16.

_amorcer-socle monte l'AC puis le DNS completement avant deployer-tout ; les
deux derives de applications.<app>.hote, dans un ordre causal et non
alphabetique. Deux exceptions assumees : l'AC s'auto-signe, le DNS pose son
propre enregistrement.

P10 a attrape un handler que je venais d'inventer (Recharger PowerDNS au lieu
de Validate and reload PowerDNS) avant tout deploiement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 15:29:57 -04:00

79 lines
2.6 KiB
YAML

---
- name: Installer PowerDNS Authoritative
ansible.builtin.apt:
name: "{{ serveur_powerdns_packages }}"
state: present
update_cache: true
cache_valid_time: 3600
- name: Créer le répertoire des zones PowerDNS
ansible.builtin.file:
path: "{{ serveur_powerdns_zone_directory }}"
state: directory
owner: root
group: root
mode: "0755"
- name: Déployer la configuration du backend BIND
ansible.builtin.template:
src: setops-bind.conf.j2
dest: /etc/powerdns/pdns.d/setops-bind.conf
owner: root
group: root
mode: "0644"
notify: Validate and reload PowerDNS
- name: Déployer l'index des zones PowerDNS
ansible.builtin.template:
src: bindbackend.conf.j2
dest: "{{ serveur_powerdns_bind_config }}"
owner: root
group: root
mode: "0644"
notify: Validate and reload PowerDNS
- name: Charger les registres applications et domaines (expositions)
ansible.builtin.include_vars:
file: "{{ item }}"
loop:
- "{{ setops_plan_dir }}/applications.yml"
- "{{ setops_plan_dir }}/domaines.yml"
when: serveur_powerdns_publier_expositions | bool
- name: Dériver les A d'exposition (FQDN publics -> edge qui les sert)
ansible.builtin.set_fact:
serveur_powerdns_expositions: >-
{{ {'applications': applications | default({})}
| expositions_des_applications({'domaines_publics': domaines_publics | default({})}) }}
when: serveur_powerdns_publier_expositions | bool
- name: Générer la zone DNS interne depuis l'inventaire
ansible.builtin.template:
src: zone.db.j2
dest: "{{ serveur_powerdns_zone_directory }}/{{ serveur_powerdns_zone }}.zone"
owner: root
group: root
mode: "0644"
notify: Validate and reload PowerDNS
# Meme source que la zone directe : `hotes_actifs` et son `ansible_host`. Deux zones
# alimentees par une seule verite — l'endroit ou elles divergeraient n'existe pas.
- name: Générer la zone DNS inverse depuis l'inventaire
ansible.builtin.template:
src: zone-inverse.db.j2
dest: "{{ serveur_powerdns_zone_directory }}/{{ serveur_powerdns_zone_inverse }}.zone"
owner: root
group: root
mode: "0644"
when: serveur_powerdns_zone_inverse | length > 0
notify: Validate and reload PowerDNS
- name: Activer et démarrer PowerDNS
ansible.builtin.systemd:
name: "{{ serveur_powerdns_service_name }}"
enabled: true
state: started
# Dry-run (--check) : le paquet n'est pas reellement installe, donc le service
# n'existe pas encore et systemd echouerait. On saute en mode check seulement ;
# en vrai deploiement, la tache s'execute normalement.
when: not ansible_check_mode