restic check en relisant 10 pourcent des donnees, puis restauration reelle du dernier instantane avec --verify et comptage des fichiers. Service restauration, fraicheur de 8 jours, filtre du compte d API complete. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
2.7 KiB
Django/Jinja
49 lines
2.7 KiB
Django/Jinja
/*
|
|
* Gere par Set-OPS (role serveur_icinga). Ne pas editer a la main.
|
|
*
|
|
* Compte d'API par lequel un NOEUD depose ses resultats passifs.
|
|
*
|
|
* IL S'APPELLE ENCORE `setops-depot` (2026-09-09) : il servait d'abord au seul rapport de
|
|
* sauvegarde. Il porte desormais aussi le rapport de SANTE — un second compte serait plus
|
|
* pur, un secret par usage, mais exigerait une clef de voute de plus dans chaque
|
|
* ecosysteme, donc un geste manuel a chaque nouvel ecosysteme, pour une portee identique.
|
|
* Le renommer churnerait les voutes sans rien gagner. Le filtre ci-dessous reste etroit :
|
|
* trois noms de service, et aucun autre pouvoir.
|
|
* Portee minimale : uniquement `actions/process-check-result`, et uniquement sur les
|
|
* services de sauvegarde. Ce compte ne peut ni lire la configuration, ni agir ailleurs.
|
|
*/
|
|
object ApiUser "{{ serveur_icinga_api_utilisateur }}" {
|
|
password = "{{ serveur_icinga_api_motdepasse }}"
|
|
permissions = [
|
|
{
|
|
permission = "actions/process-check-result"
|
|
{#
|
|
DEUX FORMES DE NOM, PARCE QU'IL Y A DEUX MODELES (2026-09-02).
|
|
|
|
« sauvegarde: <noeud> » — l'ecosysteme a son propre depot, qui rapporte pour
|
|
tout le monde : les services vivent sur SON hote, le nom doit donc dire de quel
|
|
noeud on parle.
|
|
|
|
« sauvegarde » — l'ecosysteme depose chez son hebergeur, qui heberge du chiffre
|
|
et ne peut rien juger. Chaque noeud verifie le sien : le service vit SUR LUI, et
|
|
repeter son nom donnerait « idm-01 / sauvegarde: idm-01 ».
|
|
|
|
Le filtre n'acceptait que la premiere forme. Les noeuds recevaient
|
|
`{"error":404,"status":"No objects found."}` — le message d'un objet ABSENT,
|
|
alors qu'il existait et que c'etait la PERMISSION qui refusait. Une heure a
|
|
chercher un objet qui etait la.
|
|
|
|
La portee reste etroite : ce compte ne peut poser un resultat que sur un service
|
|
de sauvegarde, jamais ailleurs.
|
|
#}
|
|
{#
|
|
LES NOMS SONT DERIVES, PAS RECOPIES. Une sonde declaree par un role entre dans ce
|
|
filtre toute seule ; une sonde retiree en sort. Recopier la liste ici, c'etait la
|
|
garantie qu'un jour elle divergerait — et le symptome serait un 404 « No objects
|
|
found » sur un objet qui existe, comme le 2026-09-02. Une heure perdue.
|
|
La portee reste etroite : des NOMS, jamais un joker.
|
|
#}
|
|
filter = {{ '{{' }} match("sauvegarde: *", service.name) || service.name == "sauvegarde" || service.name == "restauration" || service.name == "sante"{% for role, sondes in (serveur_icinga_sondes | default({})) | dictsort %}{% for s in sondes %} || service.name == "{{ s.nom }}"{% endfor %}{% endfor %} {{ '}}' }}
|
|
}
|
|
]
|
|
}
|