Conseils pour fiabiliser mon installation (automatisation des redémarrages)

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 :

  1. En cas de panne on balance une alerte par mail et commence à compter (600 secondes) avant d’arrêter les VM
  2. Quand on arrive au niveau de batterie critique, on arrête proxmox
  3. 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
1 « J'aime »