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>
42 lines
2.2 KiB
Markdown
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/`).
|