Add NUT UPS client installation for new cluster nodes
When freshStart.sh runs on a new PVE node, it now installs nut-client, configures MODE=netclient, and writes upsmon.conf pointing to monitor-02 as slave — prompts for NUT_PASSWORD during setup. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -465,4 +465,75 @@ elif [[ "$PLATFORM" == "pve" ]]; then
|
||||
fi
|
||||
if [[ ! -s /etc/hwmonDaemon/.env ]] || grep -q "your_api_key_here" /etc/hwmonDaemon/.env 2>/dev/null; then
|
||||
echo "⚠️ REMINDER: Configure your API key in /etc/hwmonDaemon/.env"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# NUT UPS Client — connects to monitor-02 (10.10.10.9) for UPS awareness
|
||||
# =============================================================================
|
||||
if [[ "$PLATFORM" == "pve" ]]; then
|
||||
echo "Installing NUT UPS monitoring client..."
|
||||
|
||||
apt-get install -y nut-client
|
||||
|
||||
mkdir -p /etc/nut
|
||||
|
||||
# Fetch the NUT password from the server
|
||||
NUT_ENV_URL="http://10.10.10.63:3000/LotusGuild/nut-ups/raw/branch/main/upsmon-client.conf.template"
|
||||
|
||||
# Fetch the NUT password from monitor-02 (server holds the canonical password)
|
||||
# We pull the client conf template and substitute the password inline.
|
||||
# The password must be set manually or fetched here if you store it securely.
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo " NUT UPS Client Configuration"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo " Enter the NUT password (from /etc/nut/nut.env on monitor-02):"
|
||||
read -r -s -p " NUT_PASSWORD: " NUT_CLIENT_PASS
|
||||
echo ""
|
||||
|
||||
if [[ -n "$NUT_CLIENT_PASS" ]]; then
|
||||
# Write nut.conf (client mode)
|
||||
cat > /etc/nut/nut.conf << 'NUTEOF'
|
||||
MODE=netclient
|
||||
NUTEOF
|
||||
|
||||
# Fetch upsmon-client.conf.template and substitute password
|
||||
if curl --max-time 15 --retry 2 -s "$NUT_ENV_URL" -o /tmp/upsmon-client.conf.template; then
|
||||
sed "s/NUT_PASSWORD_PLACEHOLDER/${NUT_CLIENT_PASS}/g" \
|
||||
/tmp/upsmon-client.conf.template > /etc/nut/upsmon.conf
|
||||
rm -f /tmp/upsmon-client.conf.template
|
||||
else
|
||||
# Fallback: write inline
|
||||
cat > /etc/nut/upsmon.conf << UPSMONEOF
|
||||
MONITOR apcups@10.10.10.9 1 upsmon_remote ${NUT_CLIENT_PASS} slave
|
||||
MINSUPPLIES 1
|
||||
SHUTDOWNCMD "/sbin/poweroff"
|
||||
POLLFREQ 5
|
||||
POLLFREQALERT 2
|
||||
RBWARNTIME 43200
|
||||
NOCOMMWARNTIME 300
|
||||
FINALDELAY 5
|
||||
NOTIFYFLAG ONLINE SYSLOG+WALL
|
||||
NOTIFYFLAG ONBATT SYSLOG+WALL
|
||||
NOTIFYFLAG LOWBATT SYSLOG+WALL
|
||||
NOTIFYFLAG FSD SYSLOG+WALL
|
||||
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
|
||||
NOTIFYFLAG NOCOMM SYSLOG+WALL
|
||||
UPSMONEOF
|
||||
fi
|
||||
|
||||
chown root:nut /etc/nut/upsmon.conf 2>/dev/null || true
|
||||
chmod 640 /etc/nut/upsmon.conf
|
||||
|
||||
systemctl enable nut-monitor
|
||||
if systemctl start nut-monitor 2>/dev/null; then
|
||||
echo "✓ NUT client connected to UPS monitor on monitor-02"
|
||||
else
|
||||
echo "⚠️ NUT client installed but could not connect yet (monitor-02 may not be running NUT server)"
|
||||
echo " It will connect automatically once nut-server is running on monitor-02."
|
||||
fi
|
||||
else
|
||||
echo "⚠️ NUT password not provided — skipping NUT client setup."
|
||||
echo " Run manually: apt install nut-client && configure /etc/nut/upsmon.conf"
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user