serveur_backup : ce qu un depot peut affirmer sans pouvoir lire
Les instantanes sont chiffres cote client : ce serveur heberge des octets qu il
ne peut pas ouvrir, donc pas juger. La verification suit la cle, et
client_backup la fait deja depuis chaque noeud.
Ce que la sonde ajoute : elle voit TOUT DE SUITE, et depuis la cause, ce que les
clients ne decouvriront qu a leur prochaine execution. Lecture seule apres une
erreur disque, volume plein, droits derives — le depot refuse alors tout le
monde, et neuf rouges epars ne designent pas une cause commune.
Elle ECRIT vraiment, sous l identite qui depose. Un test -w ment sur un montage
en lecture seule et sur un quota atteint.
Corrige aussi l en-tete de setops-sauvegardes.conf.j2, qui nommait encore
backup-01 comme pousseur — retire le 2026-09-02, et c est tout le sujet. Le code
avait suivi la decision, l en-tete non.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 09:58:54 -04:00
|
|
|
#!/bin/bash
|
|
|
|
|
# GENERE par Set-OPS (role serveur_backup). Ne pas editer a la main.
|
|
|
|
|
#
|
|
|
|
|
# SONDE « depot » — le depot accepte-t-il encore qu'on y depose ?
|
|
|
|
|
#
|
doc : rangee par lecteur, trois portes d'entree (architecture, setup, usage) et un index
README reduit au role du projet et au demarrage rapide. docs/architecture.md (schemas
Mermaid), docs/setup.md, docs/usage.md (154 cibles en 13 familles), docs/README.md (index).
Documents ranges en conception/, exploitation/, hebergement/, projet/ ; 598 chemins suivis.
QUICKSTART.md, SOLUTION.md, architecture-set-ops.md et la carte fondus puis retires.
Preuves : P48 lit l'index et conception/mecanismes.md ; les gardes parcourent docs/ sous-
dossiers compris (_documents) ; usage.md suit le Makefile dans les deux sens.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:01:34 -04:00
|
|
|
# Contrat : docs/conception/supervision-conception.md (API des greffons Nagios) — une ligne, 0/1/2.
|
serveur_backup : ce qu un depot peut affirmer sans pouvoir lire
Les instantanes sont chiffres cote client : ce serveur heberge des octets qu il
ne peut pas ouvrir, donc pas juger. La verification suit la cle, et
client_backup la fait deja depuis chaque noeud.
Ce que la sonde ajoute : elle voit TOUT DE SUITE, et depuis la cause, ce que les
clients ne decouvriront qu a leur prochaine execution. Lecture seule apres une
erreur disque, volume plein, droits derives — le depot refuse alors tout le
monde, et neuf rouges epars ne designent pas une cause commune.
Elle ECRIT vraiment, sous l identite qui depose. Un test -w ment sur un montage
en lecture seule et sur un quota atteint.
Corrige aussi l en-tete de setops-sauvegardes.conf.j2, qui nommait encore
backup-01 comme pousseur — retire le 2026-09-02, et c est tout le sujet. Le code
avait suivi la decision, l en-tete non.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 09:58:54 -04:00
|
|
|
# Mise en defaut PAR PARAMETRE : `serveur_backup_sonde_racine` (chemin non inscriptible).
|
|
|
|
|
#
|
|
|
|
|
# CE QU'ELLE NE MESURE PAS, ET C'EST LA DOCTRINE LA PLUS STRICTE DE CE DEPOT.
|
|
|
|
|
#
|
|
|
|
|
# Elle ne juge RIEN du contenu. Les instantanes sont chiffres cote client : ce serveur
|
|
|
|
|
# heberge des octets qu'il ne peut pas ouvrir, donc qu'il ne peut pas juger. « Cet
|
|
|
|
|
# instantane est-il recent, complet, restaurable ? » se demande a qui detient la cle, et
|
|
|
|
|
# `client_backup` le fait deja depuis chaque noeud. LA VERIFICATION SUIT LA CLE.
|
|
|
|
|
#
|
|
|
|
|
# CE QU'ELLE MESURE, ET QUE PERSONNE D'AUTRE NE VOIT A TEMPS : que l'endroit accepte une
|
|
|
|
|
# ECRITURE. Un systeme de fichiers remonte en lecture seule apres une erreur disque, un
|
|
|
|
|
# volume plein, des droits qui ont derive — dans les trois cas le depot refuse tout, et
|
|
|
|
|
# les clients ne l'apprennent qu'a leur prochaine execution, chacun de son cote.
|
|
|
|
|
#
|
|
|
|
|
# NEUF ROUGES EPARS NE DESIGNENT PAS UNE CAUSE COMMUNE. C'est la seule raison d'etre de
|
|
|
|
|
# cette sonde : dire UNE fois, ici, ce que neuf machines diront plus tard sans savoir
|
|
|
|
|
# qu'elles disent la meme chose.
|
|
|
|
|
#
|
|
|
|
|
# ON ECRIT VRAIMENT, ET SOUS L'IDENTITE QUI DEPOSE. Un `test -w` ment sur un montage en
|
|
|
|
|
# lecture seule et sur un quota atteint. Seule une ecriture reelle, faite par le compte
|
|
|
|
|
# que les clients empruntent, prouve que le depot prend encore.
|
|
|
|
|
set -uo pipefail
|
|
|
|
|
|
|
|
|
|
RACINE={{ serveur_backup_sonde_racine }}
|
|
|
|
|
UTIL={{ serveur_backup_utilisateur }}
|
|
|
|
|
|
|
|
|
|
[[ -d "${RACINE}" ]] || { echo "Le depot ${RACINE} n'existe pas."; exit 2; }
|
|
|
|
|
|
|
|
|
|
temoin="${RACINE}/.setops-temoin-sonde"
|
|
|
|
|
if ! sudo -u "${UTIL}" install -m 0600 /dev/null "${temoin}" 2>/dev/null; then
|
|
|
|
|
echo "Le depot ${RACINE} refuse l'ecriture pour ${UTIL} — plein, en lecture seule, ou droits derives."
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
sudo -u "${UTIL}" rm -f "${temoin}" 2>/dev/null
|
|
|
|
|
|
|
|
|
|
# CE CHIFFRE EST UN CONSTAT, PAS UN SEUIL. L'occupation appartient a Prometheus ; on la
|
|
|
|
|
# publie ici en donnee de performance pour que le graphe existe, sans jamais en faire un
|
|
|
|
|
# verdict. Icinga repond a une seule question — est-ce casse ?
|
|
|
|
|
lisible=$(df -h --output=avail "${RACINE}" 2>/dev/null | tail -1 | tr -d ' ')
|
|
|
|
|
octets=$(df -B1 --output=avail "${RACINE}" 2>/dev/null | tail -1 | tr -d ' ')
|
|
|
|
|
depots=$(sudo -u "${UTIL}" find "${RACINE}" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | wc -l)
|
|
|
|
|
|
|
|
|
|
echo "Le depot accepte l'ecriture — ${depots} depot(s) heberge(s), ${lisible} libres.|libre=${octets:-0}B depots=${depots}"
|
|
|
|
|
exit 0
|