resolveur : la flotte interroge son propre DNS
client_unbound arme sur les quatre hotes clients. En armant, la zone s'est revelee incomplete -- ni ops-01 ni forge.genese.internal -- et a ete regeneree. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
8a54bd90e1
commit
aeb0e1635a
2 changed files with 39 additions and 3 deletions
12
README.md
12
README.md
|
|
@ -64,6 +64,12 @@ d'irremplaçable (les clés de l'AC, les dépôts).
|
||||||
**Il est hébergé par la fabric de Chezlepro** (`SITE-Chezlepro`), au même titre qu'un
|
**Il est hébergé par la fabric de Chezlepro** (`SITE-Chezlepro`), au même titre qu'un
|
||||||
autre tenant. Il n'a pas d'underlay à lui.
|
autre tenant. Il n'a pas d'underlay à lui.
|
||||||
|
|
||||||
|
**Il résout par lui-même.** Les quatre hôtes clients interrogent un Unbound local, qui
|
||||||
|
tient la zone `genese.internal` de `infra-dns-01` et **récurse depuis les serveurs
|
||||||
|
racine** pour le reste — `forward-addr` = 0, aucun résolveur tiers n'est consulté.
|
||||||
|
`infra-dns-01` reste hors du groupe : un autoritatif ne se résout pas auprès de lui-même
|
||||||
|
par un récurseur local.
|
||||||
|
|
||||||
## Le génome, sur sa forge
|
## Le génome, sur sa forge
|
||||||
|
|
||||||
Les dépôts vivent sous l'organisation `genome` :
|
Les dépôts vivent sous l'organisation `genome` :
|
||||||
|
|
@ -145,10 +151,10 @@ ses VLAN n'auraient existé nulle part.
|
||||||
|
|
||||||
- [ ] **Décider où il vit.** Sur `asgard`, la perte du cluster emporte patient 0 *et*
|
- [ ] **Décider où il vit.** Sur `asgard`, la perte du cluster emporte patient 0 *et*
|
||||||
Chezlepro d'un coup. Ailleurs, la famille survit à la perte du cluster. Le
|
Chezlepro d'un coup. Ailleurs, la famille survit à la perte du cluster. Le
|
||||||
déménagement tient en quatre valeurs (`group_vars/proxmox.yml`) et un symlink.
|
déménagement tient en **trois** valeurs de `group_vars/proxmox.yml` — nœud, stockage,
|
||||||
|
gabarit. Le pont n'en fait pas partie : chaque VM atterrit sur le VNet dérivé de sa
|
||||||
|
zone.
|
||||||
- [ ] **Une source d'artefacts.** Sa forge héberge du code, pas des binaires. Les
|
- [ ] **Une source d'artefacts.** Sa forge héberge du code, pas des binaires. Les
|
||||||
collections Ansible sont réglées (cache du contrôleur, poussé par SSH) ; Forgejo,
|
collections Ansible sont réglées (cache du contrôleur, poussé par SSH) ; Forgejo,
|
||||||
step-ca et les autres viennent encore du dehors. Un enfant coupé de l'internet ne
|
step-ca et les autres viennent encore du dehors. Un enfant coupé de l'internet ne
|
||||||
se construit pas.
|
se construit pas.
|
||||||
- [ ] **Son propre résolveur.** Les hôtes interrogent Quad9 et non `infra-dns-01` :
|
|
||||||
l'écosystème fait tourner un DNS que personne n'utilise.
|
|
||||||
|
|
|
||||||
30
inventories/production/group_vars/client_unbound.yml
Normal file
30
inventories/production/group_vars/client_unbound.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
# BASCULER LA FLOTTE SUR SON PROPRE RESOLVEUR.
|
||||||
|
#
|
||||||
|
# Jusqu'ici, les hotes de patient 0 interrogeaient Quad9 (9.9.9.9) — alors que
|
||||||
|
# `infra-dns-01` fait tourner un PowerDNS AUTORITATIF pour `genese.internal` que personne
|
||||||
|
# ne consultait. Trois consequences, dont la troisieme est la pire :
|
||||||
|
#
|
||||||
|
# 1. la resolution interne ne reposait que sur le plancher /etc/hosts, qui ne connait
|
||||||
|
# que ce que l'inventaire declare ;
|
||||||
|
# 2. chaque requete DNS de l'ecosysteme sortait chez un tiers — une fuite au niveau le
|
||||||
|
# plus fondamental de la pile, pour une plateforme dont le principe est la
|
||||||
|
# souverainete ;
|
||||||
|
# 3. la zone pouvait etre FAUSSE sans que rien ne le signale. Elle l'etait : au moment
|
||||||
|
# d'armer cette bascule, `forge.genese.internal` — le nom que l'ecosysteme PUBLIE —
|
||||||
|
# n'existait pas dans PowerDNS, et `ops-01` non plus. Un service qui repond a des
|
||||||
|
# questions que personne ne pose n'est pas surveille, il est simplement muet.
|
||||||
|
#
|
||||||
|
# POURQUOI LES DEUX DRAPEAUX SONT ICI, ET PAS EN LIGNE DE COMMANDE. Le role refuse
|
||||||
|
# `apply` sans `confirm` : declarer l'un sans l'autre ferait echouer TOUT deploiement
|
||||||
|
# ulterieur. Les deux vont donc ensemble, et leur place est le plan — c'est la que les
|
||||||
|
# decisions de cet ecosysteme sont ecrites, relues et versionnees.
|
||||||
|
#
|
||||||
|
# CE QUE LA GARDE FAIT ENCORE, a chaque passage : avant de toucher /etc/resolv.conf, le
|
||||||
|
# role exige qu'Unbound reponde DEJA sur 127.0.0.1, pour la zone interne ET pour un nom
|
||||||
|
# de l'Internet. Si l'un des deux manque, il echoue AVANT d'avoir rien casse.
|
||||||
|
client_unbound_apply: true
|
||||||
|
client_unbound_confirm: true
|
||||||
|
|
||||||
|
# `infra-dns-01` n'est pas dans ce groupe : l'autoritatif ne se resout pas aupres de
|
||||||
|
# lui-meme par un recurseur local. Il garde sa resolution amont.
|
||||||
Loading…
Reference in a new issue