Set-OPS-Public/roles/hosts_statiques/README.md
Daniel Allaire db2d6f6bf0 resolveur : un par tenant, et non plus un par machine
Mesure avant de decider : ~21 Mo de RSS par VM pour 28 a 189 requetes servies.
Le gain de cache est negligeable ; ce qu'on recupere, c'est un demon au lieu de
cinq et un endroit a regarder au lieu de cinq.

Pas sur la frontiere : un resolveur de SITE devrait connaitre la zone interne de
chaque tenant, et un tenant dont le resolveur vit chez l'hebergeur ne peut plus
s'emanciper avec. La recursion est generique, la zone interne ne l'est pas.

L'autoritatif se replie sur 127.0.0.1:5300 -- derive de la colocalisation, pas
declare a la main. Son port devient `derive` dans meta/flux.yml : les deux lient
53 mais sur des adresses differentes.

Deux pieges. Unbound refuse d'interroger une loopback par defaut : sans lever
do-not-query-localhost, toute la zone rendait SERVFAIL. Et le plancher
/etc/hosts MASQUAIT la panne -- getent repondait, dig disait SERVFAIL. La tache
de validation du role avait raison contre moi.

client_unbound n'installant plus Unbound, son nom mentait : client_resolveur.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 16:59:34 -04:00

42 lines
2.2 KiB
Markdown

# hosts_statiques
**Plancher de résolution** : génère `/etc/hosts` depuis l'inventaire, pour que tout
l'écosystème se résolve par nom **même DNS éteint**.
## Rôle
- Génère `/etc/hosts` (template `hosts.j2`) à partir des hôtes actifs de l'inventaire :
IP, nom court, FQDN interne.
- **Alias d'exposition** (optionnel, actif par défaut) : pose `<IP de l'edge> <FQDN exposé>`
pour chaque application qui déclare un `expose` dans le plan — la résolution des services
publiés ne dépend donc pas non plus du DNS.
## Pourquoi
C'est ce qui rend l'**ordre de reconstruction** possible : appliqué dans la couche **socle**
(via `playbooks/groupes/serveur_debian.yml`), il donne la résolution par nom avant que
`serveur_powerdns` n'existe. Sans lui, tout service référençant un FQDN interne
(`resoudre_base`, `resoudre_annuaire`, certificats step_ca…) échouerait au premier
déploiement d'une instance neuve.
Les trois couches de résolution : ce plancher → PowerDNS autoritatif → Unbound local
(`client_resolveur`, opt-in). Cf. `docs/dns-interne.md`.
## Variables
| Variable | Défaut | Rôle |
| --- | --- | --- |
| `hosts_statiques_actif` | `true` | Génère (ou non) `/etc/hosts` |
| `hosts_statiques_domaine` | `{{ domaine_interne }}` | Suffixe des FQDN |
| `hosts_statiques_publier_expositions` | `true` | Ajoute les alias `expose` → edge |
| `hosts_statiques_expositions` | `[]` | Calculé par le rôle (filtre `expositions_des_applications`) |
## Notes / limites
- Les alias d'exposition sont **best-effort** : le rôle lit `applications.yml` et
`domaines.yml` sur le **nœud de contrôle** (`delegate_to: localhost`, `stat` d'abord).
Plan absent (ex. préparation du golden template) → alias simplement omis, pas d'échec.
- Le fichier est **entièrement géré** par Ansible : toute ligne ajoutée à la main sur un
nœud est écrasée au prochain passage. C'est voulu (source unique = le plan).
- Postfix tourne en chroot : `serveur_postfix` recopie ce `/etc/hosts` dans
`/var/spool/postfix/etc/` pour que le MTA bénéficie du même plancher.
## Prérequis
- `domaine_interne` défini ; `setops_plan_dir` pour les alias d'exposition.
- Filtre `expositions_des_applications` (`filter_plugins/`).