Set-OPS-Public/roles/client_metrique/templates/setops-node-exporter-cert-sync.sh.j2

35 lines
1.7 KiB
Text
Raw Normal View History

#!/bin/sh
# Gere par Set-OPS (role client_metrique). Ne pas editer a la main.
# Synchronise le cert step_ca (client_pki, root:root) vers un emplacement lisible
# par 'prometheus' (l'user de node_exporter). Cle en 0600. Idempotent ; appele au
# deploiement ET au renouvellement (unite .path).
set -eu
SRC_CERT="{{ client_metrique_tls_source_cert }}"
SRC_KEY="{{ client_metrique_tls_source_cle }}"
DST="{{ client_metrique_tls_dir }}"
[ -f "$SRC_CERT" ] && [ -f "$SRC_KEY" ] || exit 0
install -o prometheus -g prometheus -m 0644 "$SRC_CERT" "$DST/node.crt"
install -o prometheus -g prometheus -m 0600 "$SRC_KEY" "$DST/node.key"
# REDEMARRAGE, pas rechargement. L'unite Debian declare `ExecReload=kill -HUP $MAINPID`,
# mais node_exporter ne sait PAS se recharger : il MEURT sur SIGHUP. `try-reload-or-restart`
# fait donc confiance a un ExecReload que le binaire n'honore pas, et laisse le service
# arrete — silencieusement, jusqu'au prochain deploiement.
#
# Mesure du 2026-08-09, sur backup-01 :
# systemctl reload alloy -> active
# systemctl reload prometheus-node-exporter -> INACTIVE
# et dans l'unite morte : `ExecStart ... code=killed ; status=1/HUP`.
#
# Consequence de l'ancien code : a chaque renouvellement de certificat (toutes les 24 h),
# la collecte de metriques s'arretait sur les quatorze hotes sans que rien ne le dise.
# Trouve par le passage d'idempotence — 13 hotes rapportaient `changed` sur
# « Activer et demarrer node_exporter », parce qu'Ansible le RESSUSCITAIT a chaque fois.
#
# Le commentaire precedent enoncait une hypothese (« relit le cert a chaud ») ; c'est
# elle qui etait fausse, pas le code.
systemctl restart {{ client_metrique_service }} 2>/dev/null || true