Client NUT pour ESXi 5, 6 et 7

Dans un précédent article je vous présentait un client NUT natif pour éteindre automatiquement un serveur VMWare ESXi 4 sur une alerte onduleur. La solution présentée n’était pas compatible avec ESXi 5 dont l’architecture logicielle a évoluée. Voici une solution pour intégrer un client NUT natif à vSphere Hypervisor  (ESXi 5.0, 5.1, 5.5, 6.0, 6.5, 6.7, 7.0.0 testées). Le client NUT est désormais intégré et peut être contrôlé et paramétré depuis vSphere Client.

Mise à jour du 18/04/2020 : La version 2.1.0 du client NUT est compatible avec ESXi 7.0.0, son fonctionnement reste inchangé.

Mise à jour du 26/05/2019 : La version 2.1.0 du client NUT s’installe correctement dans une intégration ISO personnalisée de ESXi 6.x

Mise à jour du 29/01/2017 : La version 2.0 du client NUT a été largement repensé pour mieux s’intégrer dans l’architecture VMware ESXi. Les modifications suivantes ont été apportées :

  • Le client s’appelle désormais NutClient dans la liste des services
  • Les règles de firewall portent le nom de NutServer
  • Le fichier VIB respecte le standard CommunitySupported pour les versions 6.x de ESXi. Pour les versions 5.x il faudra toujours forcer l’installation avec l’option –no-sig-check
  • Le VIB est indépendant, il n’est plus nécessaire d’utiliser les scripts d’installation pour déployer le VIB. Vous pouvez utiliser les outils de déploiement de VMWare. Les scripts servaient à créer les variables UserVars.Nut* c’est désormais intégré dans le VIB.
  • Le client prend en charge les connexions SSL en utilisant la librairie LibreSSL 2.5.0 mais la validité du certificat du serveur NUT n’est pas contrôlé.
  • L’état du service est désormais correctement remonté dans l’interface d’administration vCenter ou le client HTML après un reboot de l’hyperviseur
  • Si les variables de configuration n’apparaissent pas dans l’interface d’administration après l’installation, lancez la commande /etc/init.d/hostd restart sur l’hyperviseur. Attention à ne pas avoir de jobs en cours si vous faites ça (prise de snapshot, VMotion, …).

Principe

La procédure consiste à installer dans l’hyperviseur les binaires et scripts nécessaires à la réception des alertes onduleur. Je reprend le schéma des connexions qui ne change pas.

Câblage Onduleur

Câblage Onduleur

Cette solution n’est pas officiellement supportée par VMWare et elle ne s’applique qu’à des hyperviseurs standalone. Elle ne peut pas convenir pour des fermes d’hyperviseurs sous le contrôle d’un VMWare vCenter. Seul le client NUT est ajouté à l’hyperviseur, l’onduleur doit être surveillé par un serveur NUT.

Évolutions par rapport à ESXi 4

Les différences qui font que la solution pour ESXi 4 ne fonctionne pas sous ESXi 5 :

  • La méthode d’installation utilise un fichier VIB (vSphere Installation Bundle). Les binaires qu’il contient correspondent à un client nut 2.7.4 (upsmon et upsc)
  • Dans /etc/passwd, l’utilisateur nobody n’existe plus. Le client tourne désormais avec le compte daemon.
  • Le module VIB ne respecte pas les préconisations de sécurité imposées par VMWare. Vous perdez le support de VMWare en installant ce package. Je bricole pour mes besoins personnels en utilisant une licence gratuite de ESXi sans support, j’ai donc ignoré cette restriction.

Téléchargement du module

L’installation se fait en ligne de commande sur l’hyperviseur : un fichier TAR compressé doit être déposé sur l’hyperviseur.

Téléchargez ici le fichier

Télécharger “NutClient-ESXi (binaires)” NutClient-ESXi-2.1.1.i386.tar.gz – Téléchargé 29073 fois – 856 KB

Téléchargez les sources

Télécharger “NutClient-ESXi (sources)” NutClient-ESXi-2.1.1-src.tar.gz – Téléchargé 567 fois – 21 KB

Installation

Activez l’accès ssh à votre host ESXi si ce n’est pas déjà fait. Cela est fait à partir du client vSphere ou de la console. A partir du client : dans l’inventaire choisissez votre hôte ESXi, onglet configuration, dans la liste Logiciel choisir profil de sécurité, dans services cliquez sur propriétés…, choisissez SSH puis options et enfin démarrer. Le service ssh sera actif jusqu’au prochain reboot de l’hyperviseur si vous ne le désactivez pas.

Copiez le fichier NutClient-ESXi-2.0.0.tar.gz dans le répertoire /tmp du host ESXi. Ici je vous  donne l’exemple  depuis une machine linux (remplacez 10.0.0.8 par l’adresse IP du host ESXi ou son nom FQDN). Depuis Windows vous pouvez utiliser l’outil gratuit WinSCP.

[root@linux ~]# scp NutClient-ESXi-2.1.0.tar.gz root@10.0.0.8:/tmp
The authenticity of host '10.0.0.8 (10.0.0.8)' can't be established.
RSA key fingerprint is 89:49:ce:6d:... ...:40:76:7a:4a:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.8' (RSA) to the list of known hosts.
Password: (saisir le mot de passe administrateur ESXi)
NutClient-ESXi-2.1.0.tar.gz          100%  671KB  1.9MB/s   00:00

Passez votre hyperviseur au niveau d’acceptance Communauté si ce n’est pas déjà fait !

Connectez-vous root en ssh à l’hôte ESXi et tapez la suite de commandes suivantes pour installer le VIB (l’opération peu être longue si votre système est installé sur une clé USB lente) :

~ # cd /tmp
/tmp # tar -xzf NutClient-ESXi-2.1.0.tar.gz
/tmp # sh upsmon-install.sh
Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: Margar_bootbank_upsmon_2.7.4-2.1.0
   VIBs Removed:
   VIBs Skipped:

Vous n’avez pas besoin de rebooter pour commencer à utiliser le client NUT sur votre système. Vous devez toutefois le configurer avant son premier lancement.

Vous pouvez supprimer les fichier qui ont été créés dans /tmp et désactiver le service SSH

Configuration

A l’aide de vSphere Client, rendez-vous dans l’onglet configuration de l’hôte ESXi. Sélectionnez les paramètres avancés et sélectionnez les UserVars. Vous avez 6 variables à configurer :

Configuration du client NUT sous ESXi 5

Configuration du client NUT sous ESXi 5

  • UserVars.NutUpsName : Nom de l’onduleur sur le serveur NUT (sous la forme nom_onduleur@nom_ou_ip_serveur). Plusieurs onduleurs peuvent être saisis séparés par un espace. Il n’y aura pas d’arrêt système tant que le dernier onduleur encore debout n’aura pas donné l’ordre d’arrêt.
  • UserVars.NutUser : Nom du compte de connexion au serveur NUT
  • UserVars.NutPassword : Mot de passe du compte de connexion au serveur NUT
  • UserVars.NutFinalDelay : Secondes qu’il faudra attendre après la réception de l’événement batterie faible pour procéder à l’arrêt du système
  • UserVars.NutSendMail : A mettre à 1 pour que le client NUT envoie un e-mail à chaque évènement important de l’onduleur
  • UserVars.NutMailTo   : Adresse e-mail à laquelle envoyer les évènements de l’onduleur

Notez qu’à chaque modification de ces paramètres il sera nécessaire de faire un arrêt/relance du service pour leur prise en compte.

Lancement du service

A l’aide de vSphere Client, rendez-vous dans l’onglet configuration de l’hôte ESXi. Sélectionnez les profils de sécurité et les propriétés des services :

Services-ESXi5

Client NUT dans les services ESXi 5

Dans les options du service Network UPS Tools Client, choisissez le mode de démarrage (Démarrer et arrêter avec l’hôte me semble un bon choix). Vous pouvez également le démarrer immédiatement ou l’arrêter.

NutClientService-ESXi5

Configuration du lancement de NUT Client

Astuces

Utilisez l’onglet de configuration du host ESXi dans vSphere Client pour décider de l’ordre de démarrage et d’arrêt (ou suspension) des machines virtuelles. Cet ordre sera respecté par la procédure d’arrêt sur alerte onduleur.

L’arrêt propre des OS dans les machines virtuelles n’est possible que si les vmware tools sont installées.

Pour désinstaller le client NUT, utilisez le script upsmon-remove qui se trouve dans le fichier que vous avez téléchargé :

/tmp # sh upsmon-remove

Pour estimer le temps nécessaire au serveur pour s’éteindre sur alerte onduleur tapez la commande « /opt/nut/sbin/upsmon -c fsd » sur le host ESXi (par ssh ou sur la console). La procédure d’arrêt est immédiatement lancée.

472 réflexions sur « Client NUT pour ESXi 5, 6 et 7 »

  1. Hi,

    thanks, i got it. It was actually installed. I was looking for « upsmon » at the bottom of the list generated by « esxcli software vib list » and it was one of the top 3 packages listed.
    Thanks for your fast feedback anyway!

    Regards,
    Denny

  2. Bonsoir,
    J’utilise votre client NUT sur mon infra Vmware.
    J’ai un cluster Vmware avec du HA, le problème c’est qu’une fois le HA activé ça désactive la fonction: « démarrage et arrêt de machine virtuelle ».
    J’ai trouvé une solution pour démarrer les VM’s, au démarrage par contre je ne trouve pas de solution pour les arrêter proprement.
    Auriez vous une solution ?
    Merci
    Laurent

    • Désolé pour la réponse tardive. J’ai tenté d’investiguer pour avoir une réponse mais je n’ai pas d’infrastructure HA pour tester. Ce package a été créé initialement pour les hyperviseurs standalone tels que j’utilise avec licence gratuite. J’imagine qu’en HA l’hyperviseur devrait migrer les VM sur un autre noeud avant de l’éteindre mais il y a peut-être des commandes à lancer pour évacuer le noeud avant son arrêt. Bref, je n’ai pas de réponse.

  3. Hello, I connected the UPS to my Synology (D918) and opened the USB service. ESXI can also read the UPS information through the “/opt/nut/bin/upsc ups@”. But when I cut off the power, esxi will continue to run until the power is exhausted, he will not automatically shut down, I have ensured that all services are turned on, can you help me?

    device: DS918, BK650M2, ESXI 6.7 (2019/12/05 version)

    • You need to understand how NUT works. First, on power loss, the NUT server (your synology box) will send to NUT clients (ESXi) a ONBATT event to tell that the power is now from the UPS battery. Then, at a configurable % value of remaining time or battery charge, the NUT server will send a LOWBATT event to clients. This is to inform the clients it is time to start a SHUTDOWN. The threshold level to send the LOWBATT event depends on the UPS. Some can be configured using the upsrw tool on the NUT server. Maybe sinology interface gives you an interface to do so. On your uspc output command you can see this value named battery.runtime.low (if UPS calculates the remaining runtime depending on the charge, mostly high-end UPSes) or battery.charge.low (if UPS only know about the battery charge and you have to estimate yourself the remaining runtime before complete power loss).

      If power is back before the reaching this low level. The server will send the ONLINE event and no shutdown will be started.

  4. Bonsoir,

    I have used you NUT distribution many years and it works perfectly. Merci !!!

    I am about to install ESXi 7.0.
    Have you tested the software on this version or do you have plans to?

    Best regards from Sweden

    • As far as I know ESXi 7 is not available for public download until May 1st 2020. Today I cannot say what’s different in the ESXi 7 structure that may prevent the current ViB from loading. But I will test it when available.

    • Hi,
      The nut client for ESXi has been successfully tested under ESXi 7.0.0 (build 15843807) without any changes to the current ViB. Don’t forget to set the acceptance level to « CommunitySupported » to be able to install the ViB without any warning (as in 6.x)

  5. Hi,
    thanks a lot for your work
    I have a Network APC and a free esxi 6.7.
    I installed all and NutClient is started. I put in UserVars.NutUpsName field something like UPS_IDEN@192.168.1.4 where 192.168.1.4 is the address of APC network management card.
    Do you think this configuration could work?
    Thanks again, Marco

    • I don’t know the APC network card but I think it uses its own (private) protocol. So it may not support natively the NUT protocol (which is open). You should investigate in the APC documentation. Then I know that there are ups-snmp drivers for NUT but you need a separate NUT server. The NUT client for ESXi must be connected to a NUT server.

  6. Hello Rene, thank you for creating this great ESXi plugin. Just for reference, in case other people run the same ESXi version: I am running ESXi 6.7.0 update 3 (Build 14320388), and NutClient version 2.1.0 works without a problem.

  7. Il y a une erreur dans le « Mail FROM » du script /opt/nut/bin/notify.sh

    L’adresse FROM utilisée devient «  », ce qui ne passe pas pour bien de relais de courriels, puisque ceux-ci s’attendent à un courriel valide.

    • Y’a des parties qui ont été enlevées…

      L’adresse FROM, dans la connexion SMTP, devient hostname@domain (ESXI on hostname).

      Le problème, c’est que « mail from: » pendant la transaction s’attends à une adresse valide.

      Il faudrait donc retirer le (ESXI on hostname)

      • Ok je vois le problème mais c’est un peu plus subtil que ça. FROM est utilisé 2 fois. La première, dans le header du mail, est correcte. La seconde dans le protocole SMTP pourrait poser problème en effet. J’utilise des relais postfix qui n’ont jamais été gênés par ce format. Je vais corriger ça. Merci

  8. Love this package, thanks for all the work.
    One quick question, What should the bios of my esxi server be set to for recovering after power outage ? Should it be set to always switch on after power outage?
    Thanks

    • I don’t think there is a straight answer to your question. In my configuration, I set the bios of my ESXi host to stay off after a power outage. There is another server, the one with NUT server running, that is configured to auto power on after power failure and this one will check at boot that everything is working as expected (mainly network and storage). Then it will send WOL (wake on lan) signals to selected servers to power them on when everything is ok. If your ESXi host has no dependencies you can enable bios to recover the previous power state after a power outage.

  9. Hello, it is now a low battery trigger event, and it will shut down after a certain delay. My machine consumes more power. I want to trigger an event as soon as the power is turned off, and shut down after a certain delay. How can I achieve this?

  10. Bonjour René,
    J’ai la version 2.1.0 d’intallé sur ESXi 6.7 … comment puis-je mettre à jour àa la version 2.1.1 sans tout briser.

    Merci à l’avance pour ton aide et merci pour ton bon travail !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *