Onduleur, Proxmox et Peanut

Cet article vise à configurer un service nut sur un serveur Proxmox (valable pour Debian) et à le préparer pour lui permettre de remonter les informations à Peanut.

PVE

Vérifier que l’onduleur est bien reconnu dans les périphériques usb

lsusb

Pour ma part l’onduleur s’affiche ainsi :

Bus 001 Device 007: ID 0463:ffff MGE UPS Systems UPS

Installer nut :

apt update && apt install nut -y

nut.conf

Modifier le fichier /etc/nut/nut.conf pour changer le mode (none par défaut), mettre netserver (sera utile pour y avoir accès via le réseau par la suite) :

MODE=netserver

ups.conf

On configure ce qui a trait à l’onduleur en lui même dans /etc/nut/ups.conf (à rajouter à la fin du fichier) :

[onduleur]
   driver = usbhid-ups
   port = auto
   vendorid = 0463
   productid = ffff
   desc = "Onduleur Eaton"

upsd.conf

Dans /etc/upsd.conf, on ajoute une ligne pour dire à nut d’écouter le port 3493 sur l’interface réseau du serveur proxmox :

# =======================================================================
# LISTEN <IP address or name> [<port>]
# LISTEN 127.0.0.1 3493
# LISTEN ::1 3493
# LISTEN myhostname 83493
# LISTEN myhostname.mydomain
#
# With no LISTEN statement, the default is localhost and port 3493.
# In case of IP v4 or v6 disabled kernel, only the available one will
# be used.
# Note that it is not true for Windows platforms. You shouldn't use IPv6 in
# your configuration files unless you have IPv6 installed.
#
# As a special case, `LISTEN * <port>` (with an asterisk) will try
# to listen on "ANY" IP address for both IPv6 (::0) and IPv4 (0.0.0.0),
# subject to `upsd` command-line arguments, or system configuration.
# Note that if the system supports IPv4-mapped IPv6 addressing per RFC-3493,
# and does not allow to disable this mode, then there may be one listening
# socket to handle both address families.
#
# One or more LISTEN statements give the IP address (or name that
# resolves to such an address) for upsd to listen on, optionally with
# a port number.
#
# As an example, a machine with a LAN and a WAN interface that also
# functions as a router and firewall might be configured to listen
# only on the LAN interface.
#
# This will only be read at startup of upsd.  If you make changes here,
# you'll need to restart upsd, as reload will have no effect.
#

LISTEN 192.168.0.6 3493

upsd.users

 On crée les utilisateurs dont on aura besoin dans le fichier /etc/nut/upsd.users (à ajouter à la fin du fichier) :

[upsmon]
   password = <UPSMON_PASSWORD>
   upsmon primary
[peanut]
   password = <PEANUT_PASSWORD>
   upsmon slave
[upsroot]
   password = <UPSROOT_PASSWORD>
   actions = SET
   instcmd = ALL

upsmon : daemon de surveillance de proxmox

peanut : autorise une instance peanut à se connecter

upsroot : permet de modifier la configuration de l’onduleur

Permissions

Appliquer les permissions usb :

udevadm control --reload-rules
udevadm trigger

Vérifier les droits attribués au périphérique:

ls -l /dev/bus/usb/001/007

L’utilisateur ou le groupe doit afficher nut (ex : crw-rw---- 1 root nut ...).

Driver et services

Lancer le pilote et vérifier

systemctl start nut-driver@onduleur
upsdrvctl start

Retourne:

root@pve2:~# upsdrvctl start
Network UPS Tools - UPS driver controller 2.8.1
Network UPS Tools - Generic HID driver 0.52 (2.8.1)
USB communication driver (libusb 1.0) 0.46
Duplicate driver instance detected (PID file /run/nut/usbhid-ups-onduleur.pid exists)! Terminating other driver!
Using subdriver: MGE HID 1.46

Si le pilote s’initialise correctement, on relance les services et on interroge l’onduleur :

systemctl restart nut-server nut-client
upsc onduleur@localhost

On oublie pas d’enregistrer les services si on veut un redémarrage automatique au reboot (c’est mieux) :

systemctl enable nut-driver@onduleur nut-server nut-client

Réglage du seuil

Configuration supplémentaire, j’aime bien passer la limite de déclenchement de l’extinction des serveurs à 35% (au lieu de 20% par défaut) :

upsrw -s battery.charge.low=35 -u upsroot onduleur@localhost

Un mot de passe est demandé, saisir le mdp de l’utilisateur upsroot.

On a maintenant une configuration opérationnelle. Reste à remonter les infos dans Peanut.

Peanut

Il suffit de renseigner les paramètres de connexion dans l’interface de Peanut, à savoir le nom que l’on souhaite voir s’afficher dans peanut, l’ip du serveur nut (définie dans upsd.conf), l’identifiant et le mot de passe définis dans upsd.users.