Some checks are pending
verifier / verifier (push) Waiting to run
Trois depots tiers etaient en HTTPS, et client_artefacts pose Acquire::https::Proxy DIRECT — sans quoi le cache du site refuse les tunnels et aucun depot tiers n est joignable. La ligne est juste ; sa consequence ne l avait pas ete vue : ces trois depots CONTOURNENT le cache, et chaque VM neuve allait les chercher sur Internet a sa naissance. step-cli et alloy sont poses par des integrations UNIVERSELLES. Sans lien, une machine neuve n obtenait ni son client d autorite ni ses metriques — elle n entrait dans aucun flux chiffre. Dernier obstacle a une reconstruction hors ligne, et il tenait dans un mot. make cacher-paquets tire les 21 deb aux versions epinglees, empreinte SHA256 verifiee depuis l index du depot. Le role partage paquets_tiers les depose et les installe EN UN SEUL appel a apt — il sait resoudre un ensemble de fichiers locaux qui se dependent, la ou paquet par paquet echouerait sur l ordre (Icinga en apporte dix-sept). Six roles branches ; chacun retombe sur le depot distant pour ce que le cache n a PAS fourni, et rien d autre. Eprouve pour de vrai : packages.smallstep.com renvoye vers 127.0.0.1, step-cli desinstalle, cache local efface. Le role rejoue installe 0.30.6-1 depuis le cache et la machine obtient ses certificats. Zero echec. Deux defauts de mon propre outil, trouves en le construisant : Smallstep sert son index NON COMPRESSE (404 sur .gz) donc step-cli n etait jamais mis en cache ; et un depot injoignable faisait continue AVANT d incrementer le total, si bien que le script rapportait 20 sur 20 alors qu il en manquait un. Une garde qui ne peut pas echouer ne garde rien — troisieme fois cette semaine. Corrige puis eprouve en le faisant echouer. Reste hors ligne : NTP externe, et l expedition des alertes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
69 lines
2.7 KiB
Markdown
69 lines
2.7 KiB
Markdown
# `paquets_tiers` — poser ce que Debian ne fournit pas, sans Internet
|
|
|
|
> **Pour qui :** celui qui prépare une reconstruction hors ligne, ou qui se demande
|
|
> pourquoi une VM neuve va chercher un paquet sur Internet.
|
|
|
|
## Le problème qu'il ferme
|
|
|
|
Trois dépôts tiers sont configurés sur la flotte — Smallstep, Icinga, Grafana — **tous en
|
|
HTTPS**. Or `client_artefacts` pose `Acquire::https::Proxy "DIRECT"`, sans quoi le cache
|
|
du site refuse les tunnels HTTPS (« 403 CONNECT denied ») et aucun dépôt tiers n'est
|
|
joignable.
|
|
|
|
Cette ligne est juste. Sa conséquence n'avait pas été vue : **ces trois dépôts contournent
|
|
le cache par conception**, et chaque VM allait les chercher sur Internet à sa naissance.
|
|
|
|
`step-cli` (Smallstep) et `alloy` (Grafana) sont posés par des intégrations
|
|
**universelles**. Sans lien, une machine neuve n'obtenait ni son client d'autorité ni ses
|
|
métriques — elle n'entrait dans aucun flux chiffré. C'était le dernier obstacle à une
|
|
reconstruction hors ligne.
|
|
|
|
## Comment il s'en sort
|
|
|
|
`make cacher-paquets` lit `paquets-tiers.yml`, va chercher l'index de chaque dépôt, tire
|
|
les `.deb` aux **versions épinglées** et vérifie leur empreinte SHA256 — celle que l'index
|
|
annonce. Tout atterrit dans `~/.cache/setops/paquets/`, à côté de Forgejo, Keycloak et
|
|
Nextcloud, qui suivent le même patron depuis toujours.
|
|
|
|
Ce rôle dépose ensuite ces fichiers sur l'hôte et les installe **en un seul appel à
|
|
`apt`** — c'est le point : apt sait résoudre un ensemble de fichiers locaux qui se
|
|
dépendent mutuellement, alors qu'une installation paquet par paquet échouerait sur
|
|
l'ordre. Icinga en apporte dix-sept dans ce cas.
|
|
|
|
Les **dépendances Debian** restent l'affaire d'apt et du cache du site, en HTTP. Ce rôle
|
|
ne s'occupe que de ce que Debian ne fournit pas.
|
|
|
|
## Ce qu'il fait quand le cache est vide
|
|
|
|
Rien, et il le **dit**. L'appelant retombe alors sur le dépôt distant, comme avant. Un
|
|
déploiement connecté ne casse pas parce qu'un cache manque — mais on sait, à la lecture du
|
|
journal, qu'une reconstruction hors ligne échouerait là.
|
|
|
|
## Usage
|
|
|
|
```yaml
|
|
- name: Poser les paquets tiers depuis le cache du contrôleur
|
|
ansible.builtin.include_role:
|
|
name: paquets_tiers
|
|
vars:
|
|
paquets_tiers_noms: "{{ mon_role_paquets }}"
|
|
```
|
|
|
|
Puis, pour le reste seulement :
|
|
|
|
```yaml
|
|
name: "{{ mon_role_paquets
|
|
| difference((paquets_tiers_disponibles | default({})).keys() | list) }}"
|
|
```
|
|
|
|
## Éprouver la coupure
|
|
|
|
Rendre le dépôt injoignable sur un hôte, retirer le paquet, rejouer le rôle :
|
|
|
|
```bash
|
|
echo "127.0.0.1 packages.smallstep.com" >> /etc/hosts
|
|
apt-get remove -y step-cli
|
|
```
|
|
|
|
Mesuré le 2026-09-03 : `step-cli 0.30.6-1` s'installe depuis le cache, la machine obtient
|
|
ses certificats, zéro échec.
|