Files
proxmox/scripts/npmplus/keepalived/keepalived-notify.sh

40 lines
1.4 KiB
Bash
Raw Permalink Normal View History

#!/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