Allez un petit truc rapide (avec nut installé dans proxmox ) :
On définit les régles dans /etc/nut/upssched.conf
CMDSCRIPT /etc/nut/proxmoxmgnt.sh
AT ONBATT * EXECUTE upsonbatt
AT ONBATT * START-TIMER stopvms 600
AT LOWBATT * EXECUTE stopnuc
AT ONLINE * EXECUTE startvms
AT ONLINE * CANCEL-TIMER stopvms
Ce qui se traduit par :
- En cas de panne on balance une alerte par mail et commence à compter (600 secondes) avant d’arrêter les VM
- Quand on arrive au niveau de batterie critique, on arrête proxmox
- Si entre-temps le courant est revenu : On relance les VM, on arrête de compter et on envoi l’info par mail
Pour traiter les actions en fonctions des états de l’onduleur :
le contenu de /etc/nut/proxmoxmgnt.sh
#!/bin/bash
case $1 in
stopvms)
for i in $(qm list | awk '{ print $1 }' | grep -v VMID); do
status=`qm status $i|awk '{ print $2 }'`
if [ "$status" = "running" ]
then
echo "Arrêt de la VM : $i"
qm shutdown $i -forceStop -skiplock
else
echo "Rien à faire sur la VM : $i, car déjà éteinte"
fi
done
;;
startvms)
for i in $(qm list | awk '{ print $1 }' | grep -v VMID); do
onboot=`qm config $i|grep onboot|awk '{ print $2 }'`
status=`qm status $i|awk '{ print $2 }'`
if [ "$onboot" = "1" ]
then
if [ "$status" = "stopped" ]
then
echo "Démarrage de la VM : $i"
qm start $i
else
echo "Rien à faire sur la VM : $i, car déjà allumée"
fi
else
echo "Rien à faire sur la VM : $i, car pas de lancement automatique"
fi
done
mail -s "Courant rétabli" your@email.com
;;
stopnuc)
shutdown -h +0
;;
upsonbatt)
mail -s "Panne de courant" your@email.com
;;
esac
Il y a encore moyen de faire mieux … mais c’est déjà un base, sachant qu’on:
- arrête les VMs que si elle fonctionnent
- on les relance que si elles sont en autostart et pas lancées
En complément il faut définir les mécanimes de notifications dans /etc/nut/upsmon.conf
SHUTDOWNCMD "/sbin/shutdown -h now"
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT "%s fonctionne sur batterie"
NOTIFYMSG ONLINE "%s fonctionne de nouveau sur secteur"
NOTIFYMSG LOWBATT "%s indique une batterie faible !"
NOTIFYMSG SHUTDOWN "Le système est entrain de d'éteindre !"
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
#ONDULEUR
MONITOR nom@serveur 1 user password master
Voilà ce que ça donne coté service si on débranche l’onduleur
root@nuc:~# /etc/init.d/ups-monitor status
● ups-monitor.service - LSB: Network UPS Tools monitor initscript
Loaded: loaded (/etc/init.d/ups-monitor; generated)
Active: active (running) since Fri 2021-07-30 22:10:34 CEST; 47s ago
Docs: man:systemd-sysv-generator(8)
Process: 42344 ExecStart=/etc/init.d/ups-monitor start (code=exited, status=0/SUCCESS)
Tasks: 4 (limit: 38311)
Memory: 1.1M
CPU: 517ms
CGroup: /system.slice/ups-monitor.service
├─42348 /lib/nut/upsmon
├─42349 /lib/nut/upsmon
└─42360 /sbin/upssched Eaton@nuc is on battery
Jul 30 22:10:34 nuc systemd[1]: Started LSB: Network UPS Tools monitor initscript.
Jul 30 22:10:34 nuc upsmon[42348]: Startup successful
Jul 30 22:10:34 nuc upsmon[42349]: Init SSL without certificate database
Jul 30 22:10:34 nuc upsmon[42349]: Eaton@nuc fonctionne sur batterie
Jul 30 22:10:34 nuc upssched[42357]: Executing command: upsonbatt
Jul 30 22:10:34 nuc upssched[42360]: Timer daemon started
Jul 30 22:10:35 nuc upssched[42360]: New timer: stopvms (600 seconds)
Jul 30 22:11:19 nuc upsmon[42349]: Eaton@nuc fonctionne de nouveau sur secteur
Jul 30 22:11:19 nuc upssched[42848]: Executing command: startvms
Jul 30 22:11:20 nuc upssched[42360]: Cancelling timer: stopvms