Files
skrypty_narzedzia/pve-ha-maint.sh
2025-10-17 11:36:29 +02:00

64 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# pve-ha-maint.sh
# Włącza/wyłącza maintenance i bezpiecznie zatrzymuje/uruchamia usługi HA.
set -euo pipefail
usage() {
echo "Użycie: $0 enable|disable [NODE]"
echo "Domyślnie NODE = \$(hostname)"
exit 1
}
[[ $# -ge 1 ]] || usage
ACTION="$1"
NODE="${2:-$(hostname)}"
if [[ $EUID -ne 0 ]]; then
echo "Uruchom jako root." >&2
exit 2
fi
# Pomocnicze
is_active() { systemctl is-active --quiet "$1"; }
start_if_needed() { is_active "$1" || systemctl start "$1"; }
stop_if_running() { is_active "$1" && systemctl stop "$1" || true; }
case "$ACTION" in
enable)
echo "[INFO] Włączam maintenance na węźle: $NODE"
# 1) Włącz maintenance w HA (zatrzyma migracje/restarty HA dla tego węzła)
ha-manager node-maintenance enable "$NODE"
# 2) Zatrzymaj lokalne demony HA + watchdog (unikniesz fence przy utracie quorum)
# Kolejność: najpierw LRM, potem CRM, na końcu watchdog-mux
stop_if_running pve-ha-lrm
stop_if_running pve-ha-crm
stop_if_running watchdog-mux
echo "[OK] Maintenance włączony, usługi HA zatrzymane."
;;
disable)
echo "[INFO] Wyłączam maintenance na węźle: $NODE"
# 1) Najpierw uruchom watchdog i demony HA (kolejność odwrotna)
start_if_needed watchdog-mux
start_if_needed pve-ha-crm
start_if_needed pve-ha-lrm
# 2) Wyłącz maintenance w HA
ha-manager node-maintenance disable "$NODE"
echo "[OK] Maintenance wyłączony, usługi HA działają."
;;
*)
usage
;;
esac
echo
echo "[STATUS] ha-manager status:"
ha-manager status | sed -n '1,120p'