70 lines
2.7 KiB
Markdown
70 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.
|