#!/bin/bash # GENERE par Set-OPS (role serveur_cache_site). Ne pas editer a la main. # # SONDE « cache-site-racine » — ce cache est-il toujours la racine, et remplit-il ? # # PAS UNE ENVELOPPE DE GREFFON, ET C'EST ASSUME. `check_http` sait dire « ce service # repond » — c'est deja la sonde `cache-apt` de `serveur_artefacts`. La verite d'ici est # propre a Set-OPS : « ce cache-la est la RACINE de la chaine du site ». Aucun greffon # standard ne connait cette notion. # # DEUX CONTROLES, DEUX ECHECS DISTINCTS. set -uo pipefail PORT={{ serveur_artefacts_port | default(3142) }} INDEX='{{ serveur_cache_site_sonde_index }}' CONF={{ serveur_cache_site_sonde_config }} # 1. LA RACINE N'A PAS D'AMONT. `tasks/main.yml` l'exige au deploiement et personne ne le # revoit ensuite. Un `Proxy:` ajoute a la main referme la chaine sur elle-meme, et le # cache continue de servir ce qu'il a — donc rien ne casse avant le premier paquet # qu'il n'a pas. amont=$(grep -rhiE '^[[:space:]]*Proxy:[[:space:]]*\S' "${CONF}" 2>/dev/null | head -1) if [[ -n "${amont}" ]]; then echo "Ce cache est declare cache du SITE, mais il a un amont : ${amont}. La chaine se referme sur elle-meme." exit 2 fi # 2. LA RACINE REMPLIT ENCORE. On demande au cache un index amont REEL a travers son # mode passe-plat. # # CE QUE CE CONTROLE PROUVE, ET CE QU'IL NE PROUVE PAS — a lire avant de s'y fier. # Un 200 peut venir du cache lui-meme : apt-cacher-ng sert ce qu'il a deja, et refuse # qu'on le force a revalider (mesure du 2026-09-14 : une chaine de contournement en # parametre est rejetee en 403, `Cache-Control: no-cache` est ignore). # # CE QU'IL ECARTE VRAIMENT, c'est le 503 — celui que rend un amont injoignable, une # resolution morte ou un `Remap` casse. C'est exactement la panne du 2026-08-28, ou # `ops-01` atteignait le cache et restait bloquee sur ce qu'il devait aller chercher. # Un temoin dit ce qui est PARTI, jamais ce qui est ARRIVE : celui-ci dit que la porte # de sortie existe encore, pas que Debian a repondu a l'instant. code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 20 "http://127.0.0.1:${PORT}${INDEX}" 2>/dev/null) case "${code}" in 200) echo "Cache du site : racine sans amont, et l'index ${INDEX} se sert (HTTP 200)." exit 0 ;; 5*) echo "La racine ne remplit plus : ${INDEX} rend HTTP ${code}. Le premier apt update d'un ecosysteme neuf echouera." exit 2 ;; *) echo "Reponse inattendue du cache pour ${INDEX} : HTTP ${code:-aucune}." exit 1 ;; esac