La zone interne inclut désormais un A pour chaque FQDN d'exposition (expose des applications) vers l'edge qui le sert (domaines.edge), via expositions_des_applications. Déclarer expose → vhost + SAN cert + DNS. Prouvé : dig @infra-dns-01 grafana/keycloak.lab.chezlepro.internal → edge .21. Limite : PowerDNS est autoritatif (pas récursif) — pour que les nœuds l'utilisent sans casser Internet, il faut un récursif (pdns-recursor) ou garder le plancher /etc/hosts. Ne pas repointer client_dns naïvement. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
67 lines
2.1 KiB
YAML
67 lines
2.1 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
|
|
|
|
- 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
|