Client NUT pour ESXi 5 et 6

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 et 6.5 testées). Le client NUT est désormais intégré et peut être contrôlé et paramétré depuis vSphere Client.

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.0.tar.gz – Téléchargé 24118 fois – 798 KB

Téléchargez les sources

Télécharger “NutClient-ESXi (sources)” NutClient-ESXi-2.1.0-src.tar.gz – Téléchargé 111 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.

421 réflexions sur « Client NUT pour ESXi 5 et 6 »

  1. Hi,
    On esxi 6.7 update 2 notification doesn’t work :
    in syslog :
    2019-05-03T17:02:10Z upsmon[2099497]: UPS UPS@172.31.31.250 on battery
    2019-05-03T17:02:10Z upsmon[2099497]: Can’t fork to notify: Operation not permitted
    2019-05-03T17:02:40Z upsmon[2099497]: UPS UPS@172.31.31.250 on line power
    2019-05-03T17:02:40Z upsmon[2099497]: Can’t fork to notify: Operation not permitted

    Thanks.

  2. Salut Rêne,

    I would like to change the upsmon.conf to trigger other scripts;
    SHUTDOWNCMD « /scratch/call/my/sript.sh »
    NOTIFYCMD « /opt/nut/etc/notify.sh »

    but the files get reset every to
    SHUTDOWNCMD « poweroff »
    NOTIFYCMD « /opt/nut/etc/notify.sh »
    time I boot. Is there a location where I can change it to press through boots?

    • The only way to change those settings in upsmon.conf is to edit upsmon.conf.template in the VIB file. You need to extract the files, do your changes, rebuild the VIB and reinstall the VIB. All changes made to upsmon.conf in ESXi are lost on next reboot since this file is created at boot time from the template.

        • Well, in my opinion, there is no need to use this script. The auto start/shutdown configuration in ESXi host will do the trick on a simple poweroff call. Of cause, if you want a clean shutdown VMware tools have to be installed in each VM. Personally I prefer to suspend a VM when the embedded application allows it. I don’t see the interest to put the host in maintenance mode. A power failure is not really a maintenance operation. And, most important, when power comes back I want the ESXi to be able to power on my virtual servers automatically. If ESXi is booting in maintenance mode, VM can’t start.

  3. Hi Rêne,
    Thanks for your help to get my installation working.
    Perhaps a naïve question, but how do I test that my VMs are being gracefully shutdown? I expected to be able to watch VmSphere, see the machines shutdown and then be disconnected. My impression is it disconnects and then (hopefully) powers each machine down.
    Even after looking in the logs (vmkernel.log) I’m not sure things are behaving as they should do.
    Any pointers as how to check this?

    Thanks!

    • To be gracefully shutdown you will need your VM to configure the autostart section of your ESXi. Don’t rely on the default, configure each virtual machine to shutdown or suspend on power off. To use shutdown you will have to install the VMware tools in the VM. If you don’t install the VMware tools or if you don’t configure the autostart the VM will be stopped brutally. Personally I prefer the suspend solution as it does not need vmware tools but somme application don’t like this.

      Regards

  4. Thanks! Yes, I’ve configured each machine and installed the VMware tools. What I’m trying to test if whether it is working as predicted. In other words, while the settings seem to be right how can I make sure it is actually gracefully (versus brutally) shutting things down? Is there something in one of the Vmware logs for example that will help me confirm?

    Best, James

  5. I followed all the steps, set FinalDelay to 20, then I unplugged the UPS. I waited 1 minute and nothing happens.
    When I run cat /etc/ups/upsmon.conf,
    no such directory or file
    When I run upsc ups@10.0.1.22
    -sh: upsc: not found

    • Configuration file is under /opt/nut/etc/upsmon.conf and you also need to specify full path to /opt/nut/bin/upsc
      Don’t forget that the final delay starts when the client receives the low battery event and the shutdown script has ended. Maybe is you are on ups for only one minute the battery is not low enough to get this event.

Laisser un commentaire

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