README reduit au role du projet et au demarrage rapide. docs/architecture.md (schemas Mermaid), docs/setup.md, docs/usage.md (154 cibles en 13 familles), docs/README.md (index). Documents ranges en conception/, exploitation/, hebergement/, projet/ ; 598 chemins suivis. QUICKSTART.md, SOLUTION.md, architecture-set-ops.md et la carte fondus puis retires. Preuves : P48 lit l'index et conception/mecanismes.md ; les gardes parcourent docs/ sous- dossiers compris (_documents) ; usage.md suit le Makefile dans les deux sens. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| defaults | ||
| handlers | ||
| meta | ||
| tasks | ||
| templates | ||
| README.md | ||
Rôle serveur_powerdns
Pour qui : le mainteneur du DNS d'un écosystème. La vue d'ensemble, avec ses schémas, est dans
docs/conception/dns-interne.md.
PowerDNS Authoritative, backend BIND, zones générées par Ansible depuis l'inventaire et le plan. Pas de dépendance à PostgreSQL. Le rôle porte deux instances, qui ne se voient pas.
| Instance | Ce qu'elle sert | Écoute | Qui l'interroge |
|---|---|---|---|
pdns (principale) |
la zone interne (.internal) et ses zones inverses |
5300 sur la boucle locale quand le résolveur partage l'hôte, 53 sinon (port derive) |
le résolveur de l'écosystème, seul |
pdns@public |
les zones autorite: primaire-cache du plan — primaire caché |
<hôte>:5300 |
le serveur DNS public de chaque site, en TSIG |
Une instance à part pour le public : faire écouter la principale sur l'adresse de l'hôte
aurait permis au serveur public du site d'interroger la zone .internal.
La zone interne
- Chaque hôte actif qui porte
ansible_hostreçoit son A, sans déclaration. - Les noms exposés (
serveur_powerdns_expositions) mènent au service ou à l'edge selonresolution_internedu domaine. - Les enregistrements en plus :
serveur_powerdns_records.
Les zones publiques (tasks/zones-publiques.yml)
Joué seulement là où le site a un serveur public à servir (dns_public_site non vide).
- SOA et NS : le serveur du site (
serveur_powerdns_dns_public_nom) et celui de chaque pair (serveur_powerdns_dns_public_noms_pairs). Seule la zone qui contient un de ces noms en porte le A, à l'adresse publique de son site. Sans pair, le rendu est identique octet pour octet. - Enregistrements : ceux du plan (
plan/domaines.yml), déjà passés au crible parvalider_domaines. - Le serial suit le contenu, et l'état DNSSEC fait partie du contenu.
- DNSSEC : une clé CSK par zone, tenue dans la voûte du locataire
(
vault_dnssec_<zone>), jamais créée sur la machine. Servie à l'heure (SOA-EDIT EPOCH). - Transfert : TSIG seul l'ouvre (
allow-axfr-ipsne garde que la boucle locale, parce qu'une adresse listée obtiendrait la zone sans signature). - Notifications :
only-notifyetalso-notifylimités àdns_public_siteetdns_public_pairs— les adresses que le contrat du site dépose dans la fiche. - Gardes : nom de pair bien formé, adresse publique, distinct du nôtre, jamais redéclaré.
Variables
Celles qu'on règle, les autres se dérivent :
| Variable | Défaut | Source |
|---|---|---|
serveur_powerdns_zone |
domaine_interne |
plan |
serveur_powerdns_records |
[] |
inventaire |
serveur_powerdns_dns_public_site |
dns_public_site |
contrat du site |
serveur_powerdns_dns_public_pairs |
dns_public_pairs |
contrat du site |
serveur_powerdns_dns_public_nom |
dns_public_nom |
contrat du site |
serveur_powerdns_dns_public_noms_pairs |
dns_public_noms_pairs |
contrat du site |
serveur_powerdns_public_port |
5300 |
— |
Flux
meta/flux.yml : l'entrée de la zone interne (port derive), la résolution sortante de
l'autoritatif pour ses propres besoins (il est exempté de client_resolveur), et l'entrée
5300 UDP/TCP depuis le serveur public du site, seulement là où pdns@public existe.