diff --git a/playbooks/groupes/serveur_debian.yml b/playbooks/groupes/serveur_debian.yml index fa067a5..00cb249 100644 --- a/playbooks/groupes/serveur_debian.yml +++ b/playbooks/groupes/serveur_debian.yml @@ -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