Recopie des scripts d amorcage depuis 16e5d1c907f6274066c7ce25b2ce41471daa4203

This commit is contained in:
CI miroir
2026-09-04 06:56:22 +00:00
parent 0cb08679bd
commit 6147e51e88
+91 -9
View File
@@ -12,11 +12,20 @@ export LC_ALL=C
# dans la supervision FAIT (pas d agent, pas de paquet fait-zabbix, pas # dans la supervision FAIT (pas d agent, pas de paquet fait-zabbix, pas
# d updater) : pour ca, lancer bootstrap.sh separement sur la meme machine. # d updater) : pour ca, lancer bootstrap.sh separement sur la meme machine.
# #
# Variables surchargeables : # L identite du proxy n a pas de defaut : elle est demandee au terminal, ou
# ZBX_PROXY_HOSTNAME nom du proxy, doit correspondre EXACTEMENT au nom # passee en variable. Les deux valeurs doivent correspondre au caractere pres
# declare cote serveur (defaut zbx-proxy.audiency.fr) # a ce qui est declare cote serveur.
# ZBX_PSK_IDENTITY identite PSK, idem cote serveur #
# (defaut "PSK zbx-proxy audiency") # ZBX_PROXY_HOSTNAME nom du proxy (demande ; defaut propose : le FQDN)
# ZBX_PSK_IDENTITY identite PSK (demandee ; defaut propose : "PSK <nom>")
#
# Sans terminal (cron, provisionnement), ces deux variables sont obligatoires :
#
# curl -fsSL https://.../setup_proxy.sh \
# | sudo ZBX_PROXY_HOSTNAME=zbx-proxy.client.fr \
# ZBX_PSK_IDENTITY="PSK zbx-proxy client" bash
#
# Variables a defaut :
# ZBX_SERVER serveur Zabbix a joindre (defaut sup.fabout.it) # ZBX_SERVER serveur Zabbix a joindre (defaut sup.fabout.it)
# ZABBIX_MAJOR branche Zabbix (defaut 7.0) # ZABBIX_MAJOR branche Zabbix (defaut 7.0)
# ZBX_PSK_FILE chemin de la cle PSK (defaut # ZBX_PSK_FILE chemin de la cle PSK (defaut
@@ -30,10 +39,15 @@ export LC_ALL=C
ZABBIX_MAJOR="${ZABBIX_MAJOR:-7.0}" ZABBIX_MAJOR="${ZABBIX_MAJOR:-7.0}"
ZBX_SERVER="${ZBX_SERVER:-sup.fabout.it}" ZBX_SERVER="${ZBX_SERVER:-sup.fabout.it}"
ZBX_PROXY_HOSTNAME="${ZBX_PROXY_HOSTNAME:-zbx-proxy.audiency.fr}"
ZBX_PSK_IDENTITY="${ZBX_PSK_IDENTITY:-PSK zbx-proxy audiency}"
ZBX_PSK_FILE="${ZBX_PSK_FILE:-/etc/zabbix/zabbix_proxy.psk}" ZBX_PSK_FILE="${ZBX_PSK_FILE:-/etc/zabbix/zabbix_proxy.psk}"
# Pas de defaut : l identite du proxy est propre a chaque site. Un defaut ici
# ferait installer silencieusement un proxy portant le nom d un autre client,
# qui ne se raccorderait jamais — et la panne serait attribuee au reseau bien
# avant qu on pense a relire le Hostname.
ZBX_PROXY_HOSTNAME="${ZBX_PROXY_HOSTNAME:-}"
ZBX_PSK_IDENTITY="${ZBX_PSK_IDENTITY:-}"
PROXY_CONF=/etc/zabbix/zabbix_proxy.conf PROXY_CONF=/etc/zabbix/zabbix_proxy.conf
PROXY_DB=/var/lib/zabbix/zabbix_proxy.sqlite3 PROXY_DB=/var/lib/zabbix/zabbix_proxy.sqlite3
@@ -43,6 +57,44 @@ err() { echo "ERROR: $*" >&2; exit 1; }
[[ "${EUID}" -eq 0 ]] || err "A lancer en root (sudo)." [[ "${EUID}" -eq 0 ]] || err "A lancer en root (sudo)."
# --- identite du proxy --------------------------------------------------------
# Lit sur /dev/tty et non sur stdin : sous "curl ... | sudo bash", stdin est le
# code source du script, et un read classique en avalerait la suite. /dev/tty
# vise le terminal reel, qui reste disponible derriere le pipe.
#
# Sans terminal (cron, provisionnement, CI), il n y a personne pour repondre :
# le script exige alors les variables plutot que de deviner. Un defaut invente
# ici produirait un proxy qui s installe proprement et ne se raccorde jamais.
demander() {
local invite="$1" defaut="${2:-}" reponse=""
if [[ ! -r /dev/tty ]]; then
return 1
fi
if [[ -n "${defaut}" ]]; then
printf '%s [%s] : ' "${invite}" "${defaut}" > /dev/tty
else
printf '%s : ' "${invite}" > /dev/tty
fi
IFS= read -r reponse < /dev/tty || return 1
printf '%s' "${reponse:-${defaut}}"
}
if [[ -z "${ZBX_PROXY_HOSTNAME}" ]]; then
ZBX_PROXY_HOSTNAME="$(demander "Nom du proxy (Hostname, identique au serveur)" \
"$(hostname -f 2>/dev/null || hostname)")" \
|| err "Aucun terminal pour la saisie : passer ZBX_PROXY_HOSTNAME en variable."
fi
[[ -n "${ZBX_PROXY_HOSTNAME}" ]] || err "Le nom du proxy est obligatoire."
if [[ -z "${ZBX_PSK_IDENTITY}" ]]; then
# Defaut derive du nom : l identite n a pas a etre inventee, elle doit juste
# etre stable et identique des deux cotes.
ZBX_PSK_IDENTITY="$(demander "Identite PSK (TLSPSKIdentity, identique au serveur)" \
"PSK ${ZBX_PROXY_HOSTNAME}")" \
|| err "Aucun terminal pour la saisie : passer ZBX_PSK_IDENTITY en variable."
fi
[[ -n "${ZBX_PSK_IDENTITY}" ]] || err "L identite PSK est obligatoire."
[[ -r /etc/os-release ]] || err "/etc/os-release introuvable, distribution non supportee." [[ -r /etc/os-release ]] || err "/etc/os-release introuvable, distribution non supportee."
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. /etc/os-release . /etc/os-release
@@ -146,6 +198,15 @@ Hostname=${ZBX_PROXY_HOSTNAME}
# --- Base SQLite (creee automatiquement au 1er demarrage) --- # --- Base SQLite (creee automatiquement au 1er demarrage) ---
DBName=${PROXY_DB} DBName=${PROXY_DB}
# --- Fichier PID ---
# L unite systemd du paquet est de Type=forking : elle attend ce fichier pour
# considerer le service demarre. Sans cette directive, zabbix_proxy tourne
# normalement mais n ecrit aucun PID, et le service reste bloque en
# "activating" jusqu au timeout — un demarrage qui parait fige alors que le
# proxy fonctionne. La conf du paquet la contient ; la reecrire sans elle la
# perd.
PidFile=/run/zabbix/zabbix_proxy.pid
# --- Resilience liaison internet --- # --- Resilience liaison internet ---
# Garde les donnees jusqu a 24h si ${ZBX_SERVER} est injoignable (coupure WAN) # Garde les donnees jusqu a 24h si ${ZBX_SERVER} est injoignable (coupure WAN)
ProxyOfflineBuffer=24 ProxyOfflineBuffer=24
@@ -188,8 +249,29 @@ preparer_db() {
demarrer() { demarrer() {
systemctl enable zabbix-proxy >/dev/null 2>&1 || warn "Echec de l activation au demarrage." systemctl enable zabbix-proxy >/dev/null 2>&1 || warn "Echec de l activation au demarrage."
# Le premier demarrage cree le schema SQLite, ce qui prend quelques secondes. # Le premier demarrage cree le schema SQLite, ce qui prend quelques secondes.
systemctl restart zabbix-proxy \ #
|| err "Le proxy n a pas demarre. Voir : journalctl -u zabbix-proxy -n 50" # --no-block rend la main tout de suite : sans lui, un proxy qui n arrive pas
# a joindre le serveur laisse systemctl attendre son timeout, et l installation
# parait figee juste apres la derniere ligne affichee. On verifie l etat nous
# memes ensuite, avec un message qui dit ou regarder.
systemctl restart --no-block zabbix-proxy \
|| warn "La demande de demarrage a echoue."
local i=0
while [[ $i -lt 15 ]]; do
if systemctl is-active --quiet zabbix-proxy; then
log "Service zabbix-proxy actif."
return 0
fi
if systemctl is-failed --quiet zabbix-proxy; then
warn "Le service a echoue. Voir : journalctl -u zabbix-proxy -n 50"
return 0
fi
sleep 1
i=$((i + 1))
done
warn "Le service n est pas encore actif apres 15s (creation de la base ?)."
warn "Suivre : journalctl -u zabbix-proxy -f"
} }
resume() { resume() {