Set-OPS-Public/roles/serveur_powerdns/templates/zone-inverse.db.j2
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

24 lines
1.1 KiB
Django/Jinja

; Zone INVERSE — generee par Set-OPS (role serveur_powerdns). Ne pas editer a la main.
;
; Le nom de la zone est DERIVE du supernet du tenant, comme tout le reste : un /16
; 10.(10+index).0.0 donne (10+index).10.in-addr.arpa. Rien n'est ecrit.
;
; Les PTR viennent de la MEME source que les A — `hotes_actifs` et son `ansible_host`.
; Deux zones alimentees par une seule verite : c'est ce qui empeche l'endroit ou elles
; divergent d'exister.
$TTL {{ serveur_powerdns_ttl }}
@ IN SOA {{ serveur_powerdns_nameserver }}.{{ serveur_powerdns_zone }}. {{ serveur_powerdns_contact }}. (
{{ serveur_powerdns_serial }} ; serial
{{ serveur_powerdns_soa_refresh }} ; refresh
{{ serveur_powerdns_soa_retry }} ; retry
{{ serveur_powerdns_soa_expire }} ; expire
{{ serveur_powerdns_soa_minimum }} ) ; minimum
@ IN NS {{ serveur_powerdns_nameserver }}.{{ serveur_powerdns_zone }}.
{% for host_name in groups.get('hotes_actifs', []) | sort %}
{% set ip = hostvars[host_name].ansible_host | default('') %}
{% if ip %}
{{ ip.split('.')[3] }}.{{ ip.split('.')[2] }} IN PTR {{ host_name }}.{{ serveur_powerdns_zone }}.
{% endif %}
{% endfor %}