# `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.