verrou-runner.yml fige les 15 roues et les 3 collections qui tournent sur le runner de Technolibre, avec URL amont et somme SHA-256. Le cache du runner tenait deux versions de six bibliotheques selon le jour du montage. - serveur_artefacts depose ces 18 fichiers au depot de binaires du site. - serveur_ops les prend au site d'abord, somme verifiee ; repli sur Internet dit en clair ; plus aucun pip download ni collection download ; seuls les fichiers du verrou sont deposes sur le runner. - ansible-core epingle a 2.18.19 (la version deployee). - P70 exige le verrou au site ; test_verrou_runner.py dans make test. AGENTS.md et CLAUDE.md : version allegee par l'operateur. 94 preuves. CHANGELOG (121). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
67 lines
3.1 KiB
Markdown
67 lines
3.1 KiB
Markdown
# serveur_artefacts
|
|
|
|
**La source d'artefacts de l'écosystème** : un cache apt (apt-cacher-ng) qui sert à toute
|
|
la flotte les paquets qu'elle installe, au lieu de les faire chercher chez Debian.
|
|
|
|
## Principe
|
|
|
|
La forge héberge le **code**. Il manquait qui héberge les **binaires**. Pour poser une
|
|
seule machine, un écosystème allait chercher chez six serveurs étrangers :
|
|
`deb.debian.org`, `security.debian.org`, `packages.smallstep.com`, `apt.grafana.com`,
|
|
`packages.icinga.com`, `codeberg.org`.
|
|
|
|
Ce n'est pas théorique. `packages.smallstep.com` est intermittent — la même URL pend au
|
|
premier essai et répond en 0,48 s au second — et a fait échouer un déploiement de
|
|
quarante minutes sur la **première** machine.
|
|
|
|
## Ce que ce rôle couvre, et ce qui est couvert ailleurs
|
|
|
|
| | |
|
|
|---|---|
|
|
| **dépôts apt** | ce rôle — un cache, servi à la flotte |
|
|
| **téléchargements directs** (Forgejo, Keycloak, Nextcloud et ses applications, oauth2-proxy) | ce rôle — le **dépôt de binaires** (`/var/lib/setops/artefacts-directs`, servi sous `/setops-binaires` sur le même port) |
|
|
| **ce que le runner installe** (roues Python, collections Ansible, `verrou-runner.yml`) | ce rôle — le même dépôt de binaires |
|
|
|
|
Les rôles consommateurs prennent ces fichiers au dépôt du site d'abord, vérifient leur somme
|
|
(ou leur signature), et ne sortent sur Internet qu'en repli, en le disant. Depuis le
|
|
2026-10-09, une reconstruction ne demande plus rien à PyPI, Galaxy ni à l'app store de
|
|
Nextcloud quand le dépôt est rempli.
|
|
|
|
## Ce qu'il ne couvre pas encore
|
|
|
|
**Les dépôts tiers en HTTPS** (Smallstep, Grafana, Icinga) continuent d'aller en direct.
|
|
Les faire passer par le cache exigerait soit de casser le TLS de bout en bout, soit de
|
|
réécrire leurs sources en `http://cache/<remap>/…`. La seconde voie est propre et reste à
|
|
faire. Le dire vaut mieux que le laisser croire.
|
|
|
|
## Le mode hors ligne, qui est aussi l'épreuve
|
|
|
|
```yaml
|
|
serveur_artefacts_hors_ligne: true
|
|
```
|
|
|
|
Le cache cesse d'aller en amont : il sert ce qu'il détient et refuse le reste. C'est
|
|
l'état d'un écosystème coupé du monde — et **le seul moyen de prouver que le cache sert
|
|
vraiment**. Tant qu'internet répond, un `apt update` qui réussit ne dit pas d'où vient
|
|
l'octet.
|
|
|
|
## Pourquoi le trafic est en clair, et pourquoi c'est correct
|
|
|
|
L'intégrité d'un dépôt apt ne vient pas du transport mais des **signatures**, qu'`apt`
|
|
vérifie de toute façon. Un intermédiaire ne peut pas altérer un paquet sans se faire
|
|
prendre. Restreindre *qui* interroge le cache est le travail du pare-feu est-ouest,
|
|
dérivé de `meta/flux.yml` — pas d'une authentification.
|
|
|
|
## Variables principales
|
|
|
|
| Variable | Défaut | Rôle |
|
|
|---|---|---|
|
|
| `serveur_artefacts_port` | `3142` | port d'écoute |
|
|
| `serveur_artefacts_cache` | `/var/cache/apt-cacher-ng` | où les paquets sont retenus |
|
|
| `serveur_artefacts_expiration_jours` | `30` | rétention sans redemande |
|
|
| `serveur_artefacts_hors_ligne` | `false` | couper l'amont (et éprouver) |
|
|
|
|
## Ce que ce rôle ne fait pas
|
|
|
|
Il ne sauvegarde rien : un cache se reconstitue en le re-remplissant. Le sauvegarder
|
|
reviendrait à sauvegarder les binaires de Debian.
|