Files
proxmox/scripts/npmplus/keepalived/keepalived-notify.sh
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

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