Set-OPS-Public/roles/serveur_openldap/templates/sonde-annuaire.sh.j2
Daniel Allaire aab1bcc83a 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:54 -04:00

32 lines
1.8 KiB
Django/Jinja

#!/bin/bash
# GENERE par Set-OPS (role serveur_openldap). Ne pas editer a la main.
#
# SONDE « annuaire » — l'annuaire repond ET contient ses entrees
#
# Contrat : docs/conception/supervision-conception.md (API des greffons Nagios) — une ligne, 0/1/2.
# Mise en defaut PAR PARAMETRE : `serveur_openldap_sonde_minimum` (seuil impossible).
set -uo pipefail
BASE={{ serveur_openldap_sonde_base }}
MINIMUM={{ serveur_openldap_sonde_minimum }}
systemctl is-active --quiet slapd || { echo "L'annuaire (slapd) n'est pas actif."; exit 2; }
# ON COMPTE LES ENTREES, ON NE SE CONTENTE PAS D'UNE REPONSE. Un annuaire vide repond
# `success` a tout — c'est exactement le mensonge des sauvegardes vides : vert, et sans
# contenu. Sans ce comptage, la sonde dirait « tout va bien » sur un annuaire efface.
# `-Y EXTERNAL`, PAS `-x` (2026-09-13). La sonde lisait en ANONYME. Ca marchait tant que
# l'annuaire etait ouvert a tous — c'est-a-dire tant qu'il avait le defaut qu'on vient de
# corriger. Une fois la lecture anonyme fermee, un `-x` ne compte plus rien et la sonde
# annonce un annuaire VIDE : la panne la plus grave, sur un annuaire parfaitement sain.
#
# `EXTERNAL` sur le socket unix identifie le root local, a qui les droits accordent la
# lecture. Aucun secret, aucun reseau — ce que doit rester une sonde.
n=$(ldapsearch -Y EXTERNAL -H ldapi:/// -b "${BASE}" -s sub '(objectClass=*)' dn 2>/dev/null | grep -c '^dn:')
[[ "${n}" =~ ^[0-9]+$ ]] || { echo "L'annuaire ne repond pas sous ${BASE}."; exit 2; }
if (( n < MINIMUM )); then
echo "Annuaire a ${n} entree(s) sous ${BASE}, moins que le minimum attendu (${MINIMUM}) — plus personne ne s'authentifiera.|entrees=${n};${MINIMUM};;0;"
exit 2
fi
echo "Annuaire : ${n} entree(s) sous ${BASE}.|entrees=${n};${MINIMUM};;0;"