Set-OPS-Public/roles/paquets_tiers
Daniel Allaire 715f9de84d paquets tiers : les épingles tiennent, cache ou pas
- épingles posées en préférences apt (990) par chaque rôle et par le socle
  avant son dist-upgrade ; garde : paquet plus récent ou épingle inopérante
- quatre épingles relevées (step-cli, icingadb-redis, icinga-php-*)
- paquets_tiers : --force-confold aux mises à jour ; une mise à jour compte
  comme un changement
- CHANGELOG 66

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 21:52:25 -04:00
..
defaults paquets tiers : les épingles tiennent, cache ou pas 2026-10-03 21:52:25 -04:00
meta paquets tiers : passer par le cache du controleur, plus par Internet 2026-09-05 08:22:14 -04:00
tasks paquets tiers : les épingles tiennent, cache ou pas 2026-10-03 21:52:25 -04:00
README.md paquets tiers : passer par le cache du controleur, plus par Internet 2026-09-05 08:22:14 -04:00

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

- 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 :

  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 :

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.