Set-OPS-Public/roles/serveur_artefacts/README.md
Daniel Allaire 32e1f6fbcd
Some checks failed
verifier / verifier (push) Has been cancelled
artefacts : la forge sert le code, il manquait qui sert les binaires
serveur_artefacts (apt-cacher-ng) + client_artefacts, integration universelle
qui s'eteint quand aucun hote ne porte le service et RETIRE la direction posee.
Chez patient 0 : colocalise sur forge-01 -- la forge est la source, du code et
des binaires.

La preuve est le mode hors ligne : paquet en cache servi en 0 o/s, paquet absent
refuse par un 503. Tant qu'internet repond, un apt update qui reussit ne dit pas
d'ou vient l'octet.

Trois lecons : apt fait heriter Acquire::https::Proxy de la valeur HTTP (d'ou
403 CONNECT denied sur les depots tiers, et smallstep injoignable) ; un service
ne doit pas dependre de lui-meme pour se reparer (l'apt update du role passait
par le cache hors ligne) ; et rediriger 2>/dev/null, c'est choisir de ne pas
voir.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 14:41:56 -04:00

63 lines
2.7 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, oauth2-proxy, collections) | le **cache du contrôleur** : il télécharge une fois et pousse par SSH |
Deux mécanismes parce que ce sont deux problèmes : on ne sert pas un dépôt apt par `scp`.
## 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.