socle : la source d'artefacts d'amorcage — nourrir la premiere machine

LA PREMIERE MACHINE D'UN ECOSYSTEME N'A NI RESOLVEUR NI CACHE, ET C'EST ELLE QUI
DOIT LES CONSTRUIRE. Mesure sur ops-01, premiere machine de la reconstruction de
Chezlepro : le socle restait bloque sur son premier apt update.

    sortie Internet TCP 443    OK
    DNS UDP 53 -> 9.9.9.9      MUET

Le DNS sortant est ferme PAR CONCEPTION — un tenant resout chez lui. Or apt vise
deb.debian.org par son NOM, et le cache de l'ecosysteme n'existe pas encore.

UN MANDATAIRE HTTP RESOUT CE QUE LE CLIENT NE PEUT PAS RESOUDRE : apt lui envoie
l'URL absolue et c'est lui qui traduit. La machine n'a besoin d'aucun DNS, seulement
d'une ADRESSE. Symetrique exacte de , meme place dans le socle.

AUCUN FLUX A OUVRIR :  accepte deja le 3142 depuis
, qui resout les SUPERNETS des tenants — donc toute machine, pas
seulement leur cache. Verifie depuis ops-01 : HTTP 200 en 0,158 s.

C'EST DE LA FILIATION, PAS UNE RUSTINE. L'emprunt est declare (l'intrant nomme
l'amont) et il s'efface :  ecrit 00-setops-artefacts, qui trie
APRES, donc gagne des que l'ecosysteme a sa source. Le plancher reste dessous,
comme /etc/hosts reste sous le DNS. Le retirer le jour venu est une emancipation —
un geste, pas un effet.

DIAGNOSTIC CORRIGE EN CHEMIN : j'avais lu "BLOQUE" vers le resolveur, le cache et
la PKI du tenant comme un pare-feu. C'etait une ABSENCE — ops-01 est la seule VM de
Chezlepro qui existe. Un port muet ressemble a un refus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
This commit is contained in:
Daniel Allaire 2026-08-28 15:05:11 -04:00
parent 45aaf2808d
commit 5e4d711b97

View file

@ -27,6 +27,58 @@
# PASSAGE DE RELAIS : `client_resolveur` reprend ce fichier plus tard pour le basculer
# vers `127.0.0.1`. La garde ci-dessous le respecte — sans elle, chaque déploiement
# défairait la bascule, et deux rôles se disputeraient le même fichier sans fin.
# SOURCE D'ARTEFACTS D'AMORÇAGE, posée avant le premier `apt` — symétrique exacte du
# résolveur d'amorçage ci-dessous, et pour la même raison de fond : LA PREMIÈRE
# MACHINE D'UN ÉCOSYSTÈME N'A NI RÉSOLVEUR NI CACHE, ET C'EST ELLE QUI DOIT LES
# CONSTRUIRE.
#
# Mesuré le 2026-08-28 sur `ops-01`, première machine de la reconstruction de
# Chezlepro. Le socle restait bloqué sur son premier `apt update`, sans message qui
# parle de réseau :
#
# sortie Internet TCP 443 OK
# DNS UDP 53 -> 9.9.9.9 MUET
#
# Le DNS sortant est fermé PAR CONCEPTION — un tenant résout chez lui, son DNS ne
# traverse jamais la frontière. Or apt vise `deb.debian.org` PAR SON NOM, et le cache
# de l'écosystème n'existe pas encore.
#
# UN MANDATAIRE HTTP RÉSOUT CE QUE LE CLIENT NE PEUT PAS RÉSOUDRE : apt lui envoie
# l'URL absolue, et c'est LUI qui traduit le nom. La machine n'a donc besoin d'aucun
# DNS pour installer ses paquets — seulement d'une ADRESSE.
#
# C'EST DE LA FILIATION, PAS UNE RUSTINE (docs/filiation-emancipation.md). L'hébergeur
# nourrit la première machine de son locataire le temps que celui-ci monte son propre
# cache. L'emprunt est DÉCLARÉ — l'intrant nomme l'amont — et il s'efface de lui-même :
# `client_artefacts` écrit `00-setops-artefacts`, qui trie APRÈS ce fichier-ci, donc
# gagne dès que l'écosystème a sa propre source. Le plancher reste dessous, comme
# `/etc/hosts` reste sous le DNS.
#
# Aucun flux à ouvrir : `serveur_cache_site` accepte déjà le 3142 depuis
# `voisins_site`, qui résout les SUPERNETS des tenants — donc toute machine, pas
# seulement leur cache. Vérifié depuis `ops-01` : HTTP 200 en 0,158 s.
- name: Poser la source d'artefacts d'amorçage (avant tout apt)
ansible.builtin.copy:
dest: /etc/apt/apt.conf.d/00-setops-amorcage-artefacts
owner: root
group: root
mode: "0644"
content: |
// GÉNÉRÉ par Set-OPS (socle) — source d'artefacts d'AMORÇAGE, intrant
// `artefacts_amorcage`. Remplacé par `client_artefacts` (00-setops-artefacts,
// qui trie après) dès que l'écosystème a sa propre source.
//
// UNE ADRESSE, JAMAIS UN NOM : au moment où ce fichier sert, la machine n'a pas
// encore de résolveur, et le DNS sortant d'un tenant est fermé par conception.
Acquire::http::Proxy "http://{{ artefacts_amorcage }}";
// `DIRECT` est obligatoire : apt fait HÉRITER la valeur HTTPS de la valeur HTTP
// quand elle n'est pas définie, et enverrait les dépôts tiers en HTTPS dans un
// cache qui refuse les tunnels (mesuré le 2026-08-23).
Acquire::https::Proxy "DIRECT";
when:
- artefacts_amorcage is defined
- artefacts_amorcage | string | length > 0
- name: Lire le résolveur en place
ansible.builtin.slurp:
src: /etc/resolv.conf