Set-OPS-Public/roles/serveur_powerdns/templates/zone.db.j2
Daniel Allaire 00ba515aad serveur_powerdns : A d'exposition auto-dérivés (DNS de la Phase 3 bindings)
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>
2026-07-03 13:47:29 -04:00

35 lines
1.4 KiB
Django/Jinja

$ORIGIN {{ serveur_powerdns_zone }}.
$TTL {{ serveur_powerdns_ttl }}
@ IN SOA {{ serveur_powerdns_nameserver }}.{{ serveur_powerdns_zone }}. {{ serveur_powerdns_contact }}. (
{{ serveur_powerdns_serial }}
{{ serveur_powerdns_soa_refresh }}
{{ serveur_powerdns_soa_retry }}
{{ serveur_powerdns_soa_expire }}
{{ serveur_powerdns_soa_minimum }}
)
@ IN NS {{ serveur_powerdns_nameserver }}.{{ serveur_powerdns_zone }}.
{{ serveur_powerdns_nameserver }} IN A {{ hostvars[groups['serveur_powerdns'][0]].ansible_host | default('127.0.0.1') }}
{% for record in serveur_powerdns_records %}
{{ record.name }} IN {{ record.type }} {{ record.value }}
{% endfor %}
{% set emitted = [] %}
{% for group_name in serveur_powerdns_inventory_groups %}
{% for host_name in groups.get(group_name, []) | sort %}
{% if hostvars[host_name].ansible_host is defined and host_name not in emitted %}
{{ host_name }} IN A {{ hostvars[host_name].ansible_host }}
{% set _ = emitted.append(host_name) %}
{% endif %}
{% endfor %}
{% endfor %}
{% if serveur_powerdns_publier_expositions | default(false) %}
{% for expo in serveur_powerdns_expositions | default([]) if expo.domaine == serveur_powerdns_zone %}
{% set edge_hosts = groups.get(expo.edge, []) %}
{% if edge_hosts and hostvars[edge_hosts[0]].ansible_host is defined %}
{{ expo.fqdn[:-(serveur_powerdns_zone | length + 1)] }} IN A {{ hostvars[edge_hosts[0]].ansible_host }}
{% endif %}
{% endfor %}
{% endif %}