Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
40 lines
1.4 KiB
Bash
Executable File
40 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Handle Keepalived state changes
|
|
# Deploy to /usr/local/bin/keepalived-notify.sh on Proxmox hosts (no project root needed)
|
|
|
|
set -euo pipefail
|
|
|
|
# Default VIP (used when not run from repo)
|
|
VIP="${VIP:-192.168.11.166}"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|
VIP="${VIP:-${IP_NPMPLUS_ETH0:-192.168.11.166}}"
|
|
|
|
STATE="${1:-unknown}"
|
|
LOGFILE="/var/log/keepalived-notify.log"
|
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
# Ensure log directory exists
|
|
mkdir -p "$(dirname "$LOGFILE")"
|
|
|
|
case "$STATE" in
|
|
"master")
|
|
echo "[$TIMESTAMP] Transitioned to MASTER - This node now owns VIP $VIP" >> "$LOGFILE"
|
|
# Optionally: Start services, send alerts, etc.
|
|
# Example: Send alert
|
|
# echo "NPMplus HA: Node $(hostname) is now MASTER" | mail -s "NPMplus HA Master" admin@example.com
|
|
;;
|
|
"backup")
|
|
echo "[$TIMESTAMP] Transitioned to BACKUP - Standby mode" >> "$LOGFILE"
|
|
;;
|
|
"fault")
|
|
echo "[$TIMESTAMP] Transitioned to FAULT - Health check failed" >> "$LOGFILE"
|
|
# Optionally: Send critical alerts
|
|
# echo "NPMplus HA: Node $(hostname) is in FAULT state!" | mail -s "NPMplus HA Fault" admin@example.com
|
|
;;
|
|
*)
|
|
echo "[$TIMESTAMP] Unknown state: $STATE" >> "$LOGFILE"
|
|
;;
|
|
esac
|