Recopie des scripts d amorcage depuis 16e5d1c907f6274066c7ce25b2ce41471daa4203
This commit is contained in:
+91
-9
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user