Set-OPS-Public/roles/serveur_artefacts/defaults/main.yml
Daniel Allaire c6a7150c60 les depots tiers passent par le cache, et le tenant n a plus le sien
Deux mouvements d une seule doctrine : le site fournit tout ce dont un
tenant a besoin pour venir au monde.

1. LES DEPOTS TIERS. Grafana, Icinga, Smallstep et Collabora ne publient
qu en HTTPS ; apt-cacher-ng ne relaie pas un tunnel, et le socle pose donc
Acquire::https::Proxy DIRECT. Chaque machine sortait elle-meme sur
Internet. Le cache declare desormais un Remap par fournisseur, et chaque
role demande en {{ ..._depot_schema }}:// - http des qu un cache est
declare, https sinon. Le TLS n est rompu nulle part : il est TERMINE au
cache, qui est notre machine, et l integrite vient des signatures.

  avant : 4 fournisseurs en HTTPS direct, 14 machines sortant seules
  apres : 0 source en HTTPS direct, 0 erreur apt sur 14 machines

Trois lecons. Le remap appartient au cache qui SORT : pose sur un cache
chaine, il tente le HTTPS a travers son amont et rend 503. apt_repository
AJOUTE au lieu de remplacer, donc l ancienne ligne https sortait toujours.
Et la liste des fournisseurs ne se devine pas - j en avais trois, l audit
en a revele un quatrieme.

2. LE CACHE DU TENANT. Sa ligne portait son propre retrait depuis toujours
- service MUTUALISABLE, un ecosysteme au premier age peut pointer sur celui
de son hote. Retiree. Ce qu on perd, dit franchement : plus de trafic
inter-zone et plus de charge sur site-cache-01, contre un service de moins
a poser, superviser et reproduire.

3. UN ROLE QU ON RETIRE DOIT DEFAIRE CE QU IL A FAIT. Le retrait a montre
que rien ne nettoie derriere. Le fichier apt visait un cache eteint en
ecrasant le plancher qui fonctionnait - le defaut deja paye a quinze
machines. Et les sondes du cache restaient, le porteur poussant pour des
services qu Icinga ne definit plus (404). Le socle retire le premier,
client_sante derive les sondes attendues et retire les orphelines.

P65 refuse tout role visant un depot relaye en https ecrit en dur. Sa
limite est dite : elle empeche une regression sur ce qui est connu, elle ne
decouvre pas l inconnu.

Mesure : Icinga 87 OK sur 96, prouver 65 OK, lint 0 defaut.

Reste, et c est dit : apt-cacher-ng tourne toujours sur forge-01 que plus
aucun plan ne declare.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 14:53:48 -04:00

113 lines
6.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# LA SOURCE D'ARTEFACTS DE L'ÉCOSYSTÈME — apt-cacher-ng.
#
# Un écosystème qui prétend se reproduire depuis son propre génome allait chercher, pour
# poser une seule machine, les binaires de **six serveurs étrangers** : deb.debian.org,
# security.debian.org, packages.smallstep.com, apt.grafana.com, packages.icinga.com,
# codeberg.org. La forge héberge le CODE ; il manquait qui héberge les BINAIRES.
#
# CE N'EST PAS THÉORIQUE. Deux cicatrices dans ce dépôt :
# - `packages.smallstep.com` est intermittent — la même URL pend au premier essai et
# répond en 0,48 s au second. Ça a fait échouer un déploiement de quarante minutes
# sur la PREMIÈRE machine (2026-08-23) ;
# - `galaxy.ansible.com` est carrément injoignable depuis l'overlay, et c'est très bien
# ainsi — on l'a réglé par le cache du contrôleur, pas en ouvrant la frontière.
#
# CE RÔLE COUVRE LES DÉPÔTS APT. Les téléchargements DIRECTS (binaire Forgejo, Keycloak,
# Nextcloud, oauth2-proxy, collections Ansible) sont déjà couverts, autrement : le
# contrôleur télécharge une fois dans son cache 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`.
serveur_artefacts_paquets:
- apt-cacher-ng
serveur_artefacts_service: "apt-cacher-ng"
serveur_artefacts_port: 3142
# L'écoute est large : les clients sont sur d'autres hôtes de la flotte. C'est le pare-feu
# est-ouest, dérivé de meta/flux.yml, qui restreint QUI peut s'y adresser — pas l'adresse
# d'écoute, qui ne saurait distinguer un voisin légitime d'un autre.
serveur_artefacts_ecoute: "0.0.0.0"
serveur_artefacts_cache: "/var/cache/apt-cacher-ng"
# Combien de temps un paquet reste en cache sans être redemandé. 30 jours : assez pour
# qu'une reconstruction complète retrouve tout ce que la précédente a téléchargé.
serveur_artefacts_expiration_jours: 30
# --- LE MODE HORS LIGNE, QUI EST AUSSI L'ÉPREUVE -----------------------------
#
# `true` : le cache ne va PLUS rien chercher en amont — il sert ce qu'il détient, et
# refuse le reste. C'est le mode d'un écosystème coupé du monde, et c'est surtout 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.
#
# Laisser à `false` en exploitation normale.
serveur_artefacts_hors_ligne: false
# Journalisation : apt-cacher-ng tient un journal des requêtes servies. C'est lui qui
# permet de répondre à « ce paquet, l'avons-nous servi ou est-il venu du dehors ? ».
serveur_artefacts_journal: "/var/log/apt-cacher-ng"
# --- LE CHAINAGE DES CACHES (2026-08-24) --------------------------------------
#
# Chaque écosystème garde SON cache, et celui-ci prend le cache de l'hébergeur comme
# amont. Debian n'est alors téléchargé qu'UNE FOIS pour tout le site :
#
# VM du tenant -> cache du tenant -> cache du SITE -> Debian
#
# POURQUOI PAS UN CACHE UNIQUE OÙ TOUTES LES VM TAPENT. Il aurait fallu ouvrir un flux de
# chaque machine de chaque tenant vers un hôte d'un autre tenant — N×M chemins à travers
# le default-deny. Avec le chaînage il n'y en a qu'UN par écosystème, entre deux caches.
#
# Et l'étanchéité y gagne : le cache du site ne voit que des requêtes AGRÉGÉES, jamais
# quelle machine installe quoi.
#
# Vide = ce cache va directement à l'amont Debian. C'est le cas du cache du SITE lui-même,
# et de tout écosystème qui s'est émancipé (docs/filiation-emancipation.md).
serveur_artefacts_amont: ""
# --- Sonde de supervision -----------------------------------------------------------
# La cible et les seuils sont des VARIABLES pour que la sonde puisse etre mise en defaut
# sans casser le service (docs/supervision-conception.md).
serveur_artefacts_sonde_port: "{{ serveur_artefacts_port }}"
serveur_artefacts_sonde_repertoire: /var/cache/apt-cacher-ng
# Un cache plein ne se plaint pas : il cesse simplement de servir ce qu'il n'a pas pu
# ecrire. On prend de l'avance.
serveur_artefacts_sonde_pct_avert: 85
serveur_artefacts_sonde_pct_crit: 93
# --- LE RELAIS DES DEPOTS TIERS (2026-09-10) -----------------------------------------
#
# Set-OPS tire ses paquets applicatifs de trois fournisseurs qui ne servent QU'EN HTTPS :
# Grafana (grafana, loki, alloy), Icinga (icinga2, icingadb), Smallstep (step-ca). Le
# cache ne relaie pas le HTTPS — il faudrait rompre le TLS de bout en bout — si bien que
# CHAQUE machine allait les chercher elle-meme sur Internet. Mesure du 2026-09-10 : 58
# references de depot sur la flotte, quatorze machines sortant chacune de son cote.
#
# LE REMAP EST LA VOIE PROPRE, et le role `client_artefacts` la nommait deja : le client
# demande `http://apt.grafana.com/...` au cache, le cache va chercher en `https://` chez
# le fournisseur. Le TLS n'est rompu nulle part — il est simplement TERMINE au cache, qui
# est notre machine. Et l'integrite ne depend pas du transport : elle vient des signatures
# du depot, qu'apt verifie de toute facon. C'est exactement le raisonnement deja tenu pour
# `deb.debian.org`, applique aux memes conditions.
#
# `hote` sans schema : le gabarit fabrique la paire `http://<hote>` -> `https://<hote>/`.
serveur_artefacts_remaps:
- { nom: grafana, hote: "apt.grafana.com" }
- { nom: icinga, hote: "packages.icinga.com" }
- { nom: smallstep, hote: "packages.smallstep.com" }
# Collabora — trouve APRES coup, et c'est la lecon : la liste ne se devine pas.
# L'audit des sources apt de la flotte l'a rendu visible quand les trois autres
# etaient deja passes au cache. Une machine sur quatorze le portait.
- { nom: collabora, hote: "www.collaboraoffice.com" }
# LES CLES DE SIGNATURE PASSENT AUSSI, et il a fallu le demander (mesure du 2026-09-10).
#
# apt-cacher-ng ne relaie que les chemins qu'il RECONNAIT comme fichiers de depot. Une
# cle en `.gpg` passait, la meme en `.key` rendait 403 :
#
# packages.smallstep.com/keys/apt/repo-signing-key.gpg 200
# apt.grafana.com/gpg-full.key 403
#
# `PfilePatternEx` ETEND le motif par defaut au lieu de le remplacer — remplacer ferait
# tomber tout le reste. Sans cette ligne, le remap serait vrai a moitie : les paquets
# passeraient par le cache, et chaque machine sortirait quand meme chercher sa cle.
serveur_artefacts_motif_fichiers_sup: '.*\.(key|asc)$'