Set-OPS-Public/roles/client_artefacts
Daniel Allaire 0dd57ba995 artefacts : deux filets — un cache mort ne doit plus rendre un tenant irreparable
CE CACHE EST UN MAILLON DONT DEPEND SA PROPRE RECONSTRUCTION. Toute la flotte y
prend ses paquets. S il pointe vers un amont mort, apt echoue sur les quinze
machines, donc le socle echoue, donc le deploiement n atteint jamais la couche qui
poserait le bon amont. LE CORRECTIF SE RETROUVE DANS LA COUCHE QUE LA PANNE EMPECHE
D ATTEINDRE, et il faut une main pour en sortir.

C est arrive le 2026-08-31 : l amont pointait sur le cache de patient 0, eteint la
veille pour liberer de la RAM. apt rendait « 503 Connection timeout » EN CITANT
L ADRESSE DU CACHE LOCAL, jamais celle de l amont manquant — la panne accusait le
maillon visible.

DEUX FILETS, SYMETRIQUES.

serveur_artefacts sonde l amont AVANT d ecrire, et refuse s il est muet : mieux
vaut un cache qui garde sa configuration precedente qu un cache qu on vient de
rendre inutilisable pour toute la flotte.

client_artefacts sonde la source AVANT de detourner apt vers elle. Ce fichier
ECRASE le plancher d amorcage pose par le socle — le poser sur un cache mort prive
la machine du cache du SITE, qui lui fonctionnait. En refusant, le plancher reste :
la flotte est degradee mais debout, et REPARABLE PAR UN DEPLOIEMENT.

`ignore_errors` ET NON `failed_when: false` — la difference est toute la garde.
failed_when: false REECRIT le verdict : la tache n est plus jamais failed, donc
`is not failed` est toujours vrai, donc l assertion ne peut pas tirer. Ecrite ainsi,
ma premiere version a declare « joignable » un amont mesure MUET la seconde d avant.
Une garde qui ne peut pas echouer ne garde rien.

Deux controles verifies sur la machine : amont eteint -> refuse ; amont reel -> pose.

make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec, 0 saute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-08-31 18:31:21 -04:00
..
defaults artefacts : la forge sert le code, il manquait qui sert les binaires 2026-08-23 14:41:56 -04:00
meta site : quatre zones d'autorite, et l'ordre inscrit dans les integrations 2026-08-25 17:31:07 -04:00
tasks artefacts : deux filets — un cache mort ne doit plus rendre un tenant irreparable 2026-08-31 18:31:21 -04:00
README.md artefacts : la forge sert le code, il manquait qui sert les binaires 2026-08-23 14:41:56 -04:00

client_artefacts

Intégration cliente : l'hôte prend ses paquets à la source de l'écosystème (serveur_artefacts) plutôt que chez Debian.

Principe

Une ligne dans /etc/apt/apt.conf.d/. C'est tout ce que ce rôle fait, et c'est délibérément tout ce qu'il fait.

Acquire::http::Proxy "http://<hôte-source>.<domaine>:3142";

Elle suit l'existence du service — elle ne se déclare pas

client_artefacts_actif est dérivé de l'inventaire : un groupe serveur_artefacts sans hôte, c'est un écosystème qui prend ses paquets à l'amont, et c'est un choix valide. Le rôle ne pose alors rien — et retire la direction posée auparavant, sans quoi les hôtes resteraient braqués sur une machine disparue et n'installeraient plus rien. Une intégration qui ne sait pas se retirer est un piège différé.

C'est la même leçon que pour le SSO, les bases et les dépendances causales : le moteur ne doit pas supposer l'écosystème complet.

Un cache ne sert jamais la machine qui le construit

client_artefacts est déployé dans la couche agents, en dernier — quand sa cible est debout. Conséquence à connaître : lors d'une construction from-zero, les premières machines prennent encore leurs paquets à l'amont, puisque le cache n'existe pas encore.

Il sert dès le deuxième passage, et à chaque reconstruction — c'est-à-dire exactement le scénario pour lequel il existe.

Seul le HTTP passe par le cache

Les dépôts Debian sont servis en HTTP et leur intégrité vient de leurs signatures. Les dépôts tiers en HTTPS continuent d'aller en direct : client_artefacts_https existe mais reste à false tant que le cache ne sait pas les remapper.