Set-OPS-Public/roles/serveur_artefacts/templates/zzz-setops.conf.j2

66 lines
2.9 KiB
Text
Raw Normal View History

# GÉNÉRÉ par Set-OPS (rôle serveur_artefacts). NE PAS éditer à la main.
#
# Lu APRÈS acng.conf et zz_debconf.conf : ces valeurs l'emportent.
Port: {{ serveur_artefacts_port }}
BindAddress: {{ serveur_artefacts_ecoute }}
CacheDir: {{ serveur_artefacts_cache }}
LogDir: {{ serveur_artefacts_journal }}
ExThreshold: {{ serveur_artefacts_expiration_jours }}
{% if serveur_artefacts_hors_ligne | bool %}
# MODE HORS LIGNE : le cache ne va plus rien chercher en amont. Il sert ce qu'il détient
# et refuse le reste — c'est l'état d'un écosystème coupé du monde, et l'épreuve qui
# montre ce que le cache détient VRAIMENT.
Offlinemode: 1
{% else %}
Offlinemode: 0
{% endif %}
{% if serveur_artefacts_amont %}
# CHAÎNAGE : ce cache passe par celui de l'hébergeur plutôt que d'aller chez Debian.
# Debian n'est ainsi téléchargé qu'une fois pour tout le site.
Proxy: {{ serveur_artefacts_amont }}
{% endif %}
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
{% if serveur_artefacts_remaps %}
# ETEND le motif des fichiers relayables — il ne le REMPLACE pas. Sans lui, une cle de
# signature en `.key` rend 403 la ou la meme en `.gpg` passe. Vaut pour TOUT cache de la
# chaine : celui qui relaie refuse avant meme de transmettre.
PfilePatternEx: {{ serveur_artefacts_motif_fichiers_sup }}
{% if not serveur_artefacts_amont %}
# --- DEPOTS TIERS : LE REMAP APPARTIENT AU CACHE QUI SORT (mesure du 2026-09-10) ---
#
# Le client demande en `http://`, ce cache va chercher en `https://` chez le fournisseur.
#
# POURQUOI SEULEMENT ICI. Un cache CHAINE (`Proxy:` vers l'amont) qui porte le meme remap
# tente le HTTPS A TRAVERS son amont — ce qui exige un tunnel CONNECT que l'amont ne fait
# pas. Mesure : le cache du tenant rendait alors 503 sur les trois fournisseurs, la ou il
# rendait 200 en se contentant de TRANSMETTRE la requete en clair.
#
# remap sur le cache du tenant (chaine) -> 503
# remap sur le seul cache du site -> 200
#
# Un cache qui relaie n'a rien a remapper : il passe la demande a qui sort. C'est la meme
# forme que la filiation elle-meme — le locataire emprunte, le site va chercher.
{% for r in serveur_artefacts_remaps %}
Remap-{{ r.nom }}: http://{{ r.hote }} ; https://{{ r.hote }}/
{% endfor %}
{% endif %}
{% endif %}
depot de binaires : le site tient ce que les runners allaient chercher Le cache du site couvrait apt ; quatre artefacts arrivaient autrement, parce qu ils ne vivent dans aucun depot apt. Le controleur les tire puis les pousse par SSH. Mesure du 2026-09-12 : le cache du runner du site est ABSENT. Un second locataire monte depuis lui sortait chercher 570 Mo sur codeberg.org, github.com et download.nextcloud.com, alors que le meme ecosysteme ne demandait plus un seul paquet a Debian. Le poste du mainteneur les a depuis toujours : personne ne l avait vu. Pas de relais transparent, et la mesure tranche : github.com redirige vers une URL signee valable une heure, differente a chaque requete. Un cache qui la prend pour cle ne fait jamais mouche. Le relais marcherait pour deux amonts sur quatre. Donc un vrai depot, dans le service qui existe deja. LocalDirs d apt-cacher-ng publie un repertoire du disque sous un prefixe, eprouve AVANT d ecrire le role. Aucun service, aucun port, aucun certificat, aucun flux nouveaux : l ingress 3142 pair flotte couvre exactement ce chemin. Les versions ne sont pas recopiees : le role lit les defauts des quatre consommateurs. Les quatre roles recoivent une tache AJOUTEE, placee avant leur stat de cache — si le depot sert, le stat le voit et la tache amont se saute d elle-meme. Aucune tache existante n a change. P70 exige que tout dest ecrit sous un cache_local figure au depot. Une liste qui suit une autre prend du retard ; celle-ci est nee avec sa garde. Deux marches payees en chemin : - failed_when: false REECRIT le verdict, donc la premiere garde de signature ne gardait rien. Elles mesurent le fichier desormais. - file: state=directory cree les parents en 0750 : apt-cacher-ng, qui ne tourne pas en root, rendait 403 sur chaque fichier. Un chemin se traverse en entier. Verifie sur l infrastructure : 6/6 artefacts servis (200/206) depuis le runner du site ET depuis une machine du locataire a travers la frontiere ; les 6 empreintes SHA-256 sont identiques a celles qui ont construit Chezlepro ; second passage changed=0. make prouver : 69 OK, 0 echec, 1 saute. ansible-lint : 0 failure, profil production. Inclut aussi force: true sur cinq telechargements de cles : une reprise conditionnelle ne reprend rien (304 Not Modified, size 0, attempts 5). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-12 23:45:00 -04:00
{% if serveur_artefacts_directs_actif | bool %}
# --- LE DEPOT DES BINAIRES DIRECTS ---------------------------------------------------
#
# `LocalDirs` publie un repertoire du disque sous un prefixe. C'est la seule facon de
# servir Forgejo, Keycloak, Nextcloud et oauth2-proxy sans monter un second service :
# ils ne vivent dans aucun depot apt, et GitHub redirige vers une URL signee valable une
# heure — qu'aucun relais transparent ne peut mettre en cache (voir defaults/main.yml).
#
# CE CHEMIN EST DEJA COUVERT PAR LE PARE-FEU : c'est le meme port 3142, la meme regle
# `ingress pair: flotte`. Rien de neuf a ouvrir.
LocalDirs: {{ serveur_artefacts_directs_prefixe }} {{ serveur_artefacts_directs_dir }}
{% endif %}