Client NUT pour ESXi 5, 6, 7 et 8

Dans le but de pouvoir stopper proprement un hyperviseur VMware et ses machines virtuelles en cas d’alerte onduleur, voici une solution pour intégrer un client NUT (Network UPS Tools) natif à vSphere Hypervisor (ESXi 5.0, 5.1, 5.5, 6.0, 6.5, 6.7, 7.0, 8.0 testés). Le client NUT est installé dans l’hyperviseur et peut être contrôlé et paramétré depuis l’interface de configuration de ESXi ou depuis le vCenter s’il est géré.

Mise en garde 01/11/2023 : Sous ESXi 8.0 et à partir de la version 2.5.0 du client Nut, dans l’interface client HTML, vous ne verrez pas les descriptions associées aux UserVars du client NUT à jour tant que le host ESXi n’aura pas rebooté.

Mise à jour du 19/10/2022 : ESXi 8.0 est sorti ce 11/10/2022, seules les versions du module avec un numéro de version supérieur à 2.3.2 pourront s’installer sur cette nouvelle version de ESXi (abandon du support des binaires 32-bits et checksum SHA256 requis dans la signature du module).

Principe

La procédure consiste à installer dans l’hyperviseur les binaires et scripts nécessaires à la réception des alertes onduleur. Le schéma classique minimal des connexions entre les éléments d’un réseau électrique protégé par un onduleur est le suivant :

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 en cluster de haute disponibilité sous le contrôle d’un vCenter. Seul le client NUT est ajouté à l’hyperviseur, l’onduleur doit être surveillé par un serveur NUT indépendant.

Caractéristiques et fonctionnalités

  • La méthode d’installation utilise un fichier VIB (vSphere Installation Bundle). Il n’y a rien d’autre ce qui permet une installation rapide et sûre et une désinstallation propre en utilisant les standards de VMware.
  • La compatibilité du module a été assurée pour qu’il fonctionne sur toutes les versions de ESXi entre 5.0 et 8.0. Cependant pour les versions 5.x l’installation automatique par déploiement de ViB n’est pas possible, il faut l’installer manuellement en suivant les instructions ci-dessous et passer outre les avertissements de sécurité. A partir de la version 6.0 de ESXi il n’y a plus ce soucis.
  • C’est un client NUT 2.8.1 qui est inclus dans le paquetage. Il peut se connecter aux serveurs avec une version plus ancienne (disons 2.6.4 mais je n’ai pas testé les serveurs plus anciens).
  • Actuellement seule la version pour processeur x86 est disponible. Il n’y a pas de version pour ESXi ARM (je n’ai ni le besoin ni la plateforme de test/développement pour ça).
  • Le client (secondary dans la terminologie NUT) peut se connecter au serveur (primary) en privilégiant une connexion SSL/TLS si elle est disponible. Il ne sera pas fait de vérification de validité de certificat serveur et il n’y a pas de certificat client configurable.
  • Le client peut envoyer un mail très succinct à une adresse configurable lors de la réception d’un évènement onduleur (perte du secteur, batterie faible, engagement de l’arrêt, retour du secteur). L’outil mail est très simple et il récupère les informations pour l’envoi des messages du DNS (enregistrements MX). Vous pouvez aussi utiliser un relais SMTP personnel.
  • Le client peut se connecter à plusieurs serveurs NUT s’il y a plusieurs onduleurs (cas des serveurs avec une redondance d’alimentation). Il utilisera le même compte et le même mot de passe pour se connecter aux différents serveurs NUT. A vous de déclarer ce compte sur tous les serveurs NUT.
  • Normalement il est possible de préciser le port TCP de connexion au serveur NUT sous la forme onduleur@serveur:port mais ESXi impose des règles de firewall pour le trafic sortant et seul le port 3493 est autorisé. C’est le port par défaut des serveurs NUT.
  • Il est possible de demander l’arrêt du système ESXi après un laps de temps sur batterie configurable. Le client reste à l’écoute de l’évènement batterie faible et le système entamera sa procédure d’arrêt soit après le temps imparti soit sur évènement de batterie faible, au premier des deux qui surviendra quand le système est sur batterie. L’attente est interrompue si le courant secteur est rétabli entre temps, mais si la procédure d’arrêt a déjà été initiée, elle ira jusqu’à l’extinction du host ESXi.
  • Le redémarrage du serveur après une coupure de courant est aussi une phase importante mais c’est à vous de le prévoir avec d’autres outils. Personnellement (mais ce n’est qu’une suggestion) j’aime bien l’idée d’un chef d’orchestre qui redémarre automatiquement. Il surveille le retour des services tels que le réseau, le serveur NUT etc… et il envoie des trames WOL pour réveiller les machines dans l’ordre désiré. Configurez votre serveur NUT pour qu’il ordonne à l’onduleur de couper effectivement le courant pendant un petit laps de temps même si le courant est revenu pendant la procédure d’arrêt. La plupart des onduleurs ont cette fonction avec les libellés « Interval to wait after shutdown with delay command » et « Interval to wait before (re)starting the load ». Certains onduleurs ont aussi une valeur « Minimum battery level for restart after power off » qui est interessante pour attendre que l’onduleur ait suffisamment rechargé ses batteries avant de faire redémarrer le système. Le risque est de se retourner dans une situation où un second arrêt propre serait impossible si une nouvelle coupure de secteur se produit juste après le redémarrage (ce qui est plutôt fréquent).
  • Le client tourne avec le compte root. C’est habituellement déconseillé par la documentation du projet NUT mais l’hyperviseur a un nombre très limité de comptes locaux. Ce nombre de compte s’est beaucoup réduit au fil des versions. Des comptes restants, root est le seul encore utilisable.

Téléchargement du module

Pour toutes les versions de ESXi, l’installation peut se faire 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.8.2-2.6.2.x86_64.tar.gz – 821,90 Ko

A partir de ESXi 6.0 vous pouvez utiliser le bundle offline pour une installation en ligne de commande en appelant la commande « esxcli software vib install -d » . Ou par le manager de mises à jour du vCenter si vous en avez un.

Téléchargez ici le bundle offline.
Télécharger “NutClient-ESXi (offline bundle)” NutClient-ESXi-2.8.2-2.6.2-offline_bundle.zip – 823,83 Ko

Vous pouvez créer votre propre package personnalisé à partir des sources. Elles sont distribuées sous licence GPLv3 (GNU Public License version 3). Utilisez un environnement de développement linux 64 bits tel que CentOS 7 avec les outils de compilation et développement C habituels. Un fichier INSTALL décrit la procédure. Les sources sont disponibles également dans un dépot git publique : NutClient-ESXi

Téléchargez ici les sources
Télécharger “NutClient-ESXi (sources)” NutClient-ESXi-2.8.2-2.6.2-src.tar.gz – 121,64 Ko

Installation

Activez l’accès ssh à votre host ESXi si ce n’est pas déjà fait. Cela est fait à partir de l’interface d’administration ESXi ou de la console DCUI. A partir de l’interface d’administration : dans la rubrique gérer de votre hôte, onglet services, dans la liste sélectionnez TSM-SSH et démarrez le service. Le service ssh sera actif jusqu’au prochain reboot de l’hyperviseur ou pendant un temps limité selon la version de votre ESXi.

Copiez le fichier NutClient-ESXi-2.8.2-2.6.2.x86_64.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.8.2-2.6.2.x86_64.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.8.2-2.6.2.x86_64.tar.gz          100%  869KB  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.8.2-2.6.2.x86_64.tar.gz
/tmp # sh upsmon-install.sh
Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: Margar_bootbank_upsmon_2.8.2-2.6.2
   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 fichiers qui ont été créés dans /tmp et désactiver le service SSH

Configuration

A l’aide de l’interface d’administration du ESXi, rendez-vous dans la rubrique gérer de l’hôte. Sélectionnez les paramètres avancés de l’onglet Système et filtrez la liste sur UserVars.Nut, vous avez 8 variables à configurer :

ESXi7-NutParam

Configuration du client NUT sous ESXi7

  • 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.NutOnBatteryDelay : Délai en secondes après le début du passage sur batterie de l’onduleur pour stopper le système. Si la valeur est 0 alors le client NUT attendra l’évènement batterie faible pour stopper le système. La valeur par défaut est 0, c’est le fonctionnement normal pour garder le système en fonctionnement le plus longtemps possible. Si l’onduleur repasse sur secteur avant la fin du délai, le système ne sera pas stoppé.
  • UserVars.NutSendMail : A mettre à 1 pour que le client NUT envoie un e-mail à chaque évènement important de l’onduleur. La valeur 2 permet d’avoir dans le mail l’état des l’onduleurs lors de l’évènement.
  • UsersVars.NutSmtpRelay : Nom ou IP d’un relai SMTP pour y faire transiter le mail. Laisser vide ou saisissez none pour ne pas utiliser de relai (none par défaut).
  • UserVars.NutMailTo : Adresse e-mail à laquelle envoyer les évènements de l’onduleur
  • UserVars.NutMinSupplies : Pour les systèmes multi onduleurs. Le nombre d’onduleurs qui doivent être en capacité d’alimenter le système avant d’entamer un arrêt. Ce nombre doit être inférieur ou égal au nombre d’onduleurs définis dans UserVars.NutUpsName. Si vous ne respectez pas cette contrainte, le client ne démarrera pas. Avec un seul onduleur, laissez la valeur à 1.

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 l’interface d’administration du ESXi, rendez-vous dans la rubrique gérer de l’hôte. Sélectionnez l’onglet Services, trouvez et sélectionnez le service NutClient dans la liste:

Services-ESXi7

Client NUT dans les services ESXi7

Dans les actions du service, choisissez la stratégie 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-ESXi7

Configuration du lancement de NUT Client

Astuces

Utilisez la rubrique démarrage automatique de l’onglet Système de l’hôte ESXi 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. Un bug de ESXi fait que les valeurs par défaut ne sont pas respectées. Vous devez configurer ces paramètre pour chaque VM au moins une fois (quitte à la dé-configurer ce qui la fera réellement suivre les règles par défaut).

Important : L’arrêt propre des OS dans les machines virtuelles n’est possible que si les vmware tools sont installées. Sinon l’arrêt sera brutal, préférez alors une suspension dans la configuration d’arrêt de la VM.

Là encore je rappelle que cette solution n’est pas adaptées aux fermes cluster avec haute disponibilité. Si HA est activé sur la machine hôte le mécanisme d’arrêt propre des VM n’est plus respecté et l’arrêt sera brutal pour toutes les VM.

UEFI secure boot

Si votre hôte ESXi est configuré pour booter en mode UEFI secure boot, l’installation du ViB restera compatible avec cette configuration. En revanche vous ne pouvez pas descendre le niveau d’acceptation à CommunitySupported quand secure boot est activé. Vous devrez :

  • rebooter pour aller dans les paramètres UEFI de votre carte mère
  • désactiver le secure boot dans les paramètres UEFI de votre carte-mère
  • booter (sans secure boot)
  • descendre le niveau d’acceptation à CommunitySupported
  • Rebooter une seconde fois pour retourner dans les paramètres UEFI
  • réactiver le secure boot
  • booter (avec secure boot).

Vous aurez secure boot actif et le niveau d’acceptation minimal à CommunitySupported.

Désinstallation

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

Test

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 (ne faites pas ça si vous n’aviez pas prévu d’arrêter votre machine).

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

  1. Thanks so much for the client and guide, René. Both this and the one for ESXi 4 work great. I used Google Translate, as I don’t speak French, but had no trouble following the guide anyway.

    I have two notes:
    1. Unfortunately the client isn’t compiled with SSL. This would be a great feature to have for security.
    2. NUT is released under the GPL, so remember that any redistribution requires you to also redistribute the source code.

    Thanks again!

    • 1. I’ve tried to compile nut client with SSL support but unfortunately it needs much more libraries than only SSL. ESXi Hypervisor is a very light OS, I would need to provide all those missing libraries. This would make the NUT VIB very thick.
      2. NUT source code has not been modified. It’s a « vanilla » nut client with no patch. I am using a CentOS 5 32bit linux with only CentOS packages to compile nut from official sources. The only changes are the parameters passed to the configure script to match the ESXi filesystem organization. If someone needs source code just download it from official NUT repository. I may write a « howto » text file to explain step by step how to create VIB package from scratch.

      • Thanks for the great answers, René!
        I was not aware that SSL support required so many libraries; I figured it would only need OpenSSL. If it requires many more, I suppose that it is sensible to leave it out.

  2. Bonjour René,

    Tout d’abord un grand merci pour cet article.
    Nous avons quelque serveur virtuel sous esxi 5.0 en license free.
    Est-ce qu’il est possible de créer une vm sur laquelle on installera le serveur nut ou faut-il obligatoirement avoir une machine physique?

    Cordialement,

    • Le serveur NUT doit avoir un accès direct à l’onduleur. Il est tout à fait possible d’utiliser un USB ou un RS232 physique depuis une machine virtuelle toutefois s’il donne l’ordre au serveur ESXi sur lequel il est installé de s’arrêter il faudra bien s’assurer que le servuer NUT pourra aller jusau’au terme de son processus d’arrêt car habituellement il ordonne à l’onduleur de couper le courant d’alimentation des serveurs quelques minutes après l’extinction du serveur NUT. Ceci permet le redémarrage automatique des serveurs lors du retour du courant sur secteur.
      En imaginant que la procédure d’arrêt ESXi est configurée pour figer les machines virtuelles, le serveur NUT n’ira pas jusqu’à son terme. Pire, il pourrait, lors de sa remise en route, continuer la procédure d’arrêt et ordonner l’extinction de l’onduleur alors que le secteur est redevenu opérationnel.

      Pour résumer : techniquement, oui c’est faisable. Fonctionnellement, attention à ne pas se retrouver sur la branche que l’on est en train de scier.

  3. Bonjour René,

    thanks for your ESXi-package.
    I tried with ESXi 5.1 and it installed without problems. I have not tested all functionality yet.

    2 questions:
    -can i add more then 1 ups for monitoring? How?
    -can you add upssched to your package and provide a way to store user created skripts for upssched that survive a reboot?

    Thanks!

    • For several nut servers you will need as many MONITOR lines as UPSes and a configurable MINSUPPLIES entry.
      This is not possible for the moment.
      UPSsched is a binary not provided in the package. I don’t know if it can be used in the hypervisor since only a limited number of libraries are available. Then, to survive a reboot script has to be stored in a permanent storage (a datastore ?). Actually, configuration files are recreated each time service is started. I use a template in firmware and some patterns are replaced with named values from the userValues database.
      Old style nut client for ESXi 4.x allowed to install anything you want but you can’t easily modify configuration files.

  4. J’ai installé le VIB et selon upsc ma configuration fonctionne. Mais, le serveur ne s’arrète pas lors d’une coupure.

    Je vois dans /etc/ups:

    notify.conf.template
    notify.sh
    upsmon.conf.template

    Alors, ils me manquent les fichiers de configuration, non?

    Quand je les ajoute (upsmon.conf et notify.conf) ils sont supprimés lors d’un redémarrage du service. Comment résoudre mon problème?

    Note: Mon UPS est un APC connecté a un NAS de Synology.

    Thomas

      • J’ai fait ça. vSphere Client indique que le service est actif. Si j’essaie de démarrer upsmon manuellement il indique que le service est déjà lancé.
        Est-ce qu’il y a autre moyen pour vérifier le fonctionnement du service?

        • Pour tester sur l’hyperviseur : service démarré, éditer le fichier /etc/ups/upsmon.conf et modifier les 2 premiers notifyflag de cette façon :
          NOTIFYFLAG ONLINE SYSLOG+EXEC
          NOTIFYFLAG ONBATT SYSLOG+EXEC

          Forcer upsmon à relire sa configuration :
          upsmon -c reload
          Sur l’onduleur appuyer sur le bouton de test batterie pour provoquer un message de basculement sur batterie.
          Si tout est ok, dans la log système de l’hyperviseur vous devriez voir des lignes de ce type :
          tail /var/log/syslog.log
          2012-11-13T21:14:07Z upsmon[639263]: Reloading configuration
          2012-11-13T21:14:42Z upsmon[639263]: UPS onduleur@serveur on battery
          2012-11-13T21:14:52Z upsmon[639263]: UPS onduleur@serveur on line power

  5. Rene,

    Thank you for your effort this is quite good!
    I would like to see the NUT server also as a VIB.
    This would be very useful in a single server / single UPS environment.

    At present, I use a VMWare VMA on which I install the NUT server, monitor and client. The VMA has the tools available to trigger the shutdown of the ESXi host, which in turn shuts down the virtual machines (in the configured order).

  6. Hello

    J’ai installé le client sans encombre … Par contre REBOOT obligatoire pour voir le settings dans vsphere.

    Pour info, en branchant un UPS compatible avec le NAS Synology … le NAS devient un serveur NUT 🙂

    le nom de l’ups est ups
    ce qui donne ups@ip_du_syno
    login pass d’un admin …

    Bref GENIAL

    • Le reboot ne me semblait pas obligatoire. Un refresh ne suffisait pas ? Attention maintenant car avec ce package présent dans ESXi il faut passer l’option -f (force) pour chaque prochaine mise à jour de ESXi (ou alors désinstaller le package nut avant la mise à jour et le réinstaller après, les paramètres ne sont pas perdus). C’est toujours à cause du non respect des regles de securité car le paquet n’est pas signé par vmware.

    • Dans vSphere client, sélection du host dans la liste à droite, onglet configuration, rubrique profil de sécurité puis Actualiser en haut à droite. Pour les paramètres avancés fermer et réouvrir la fenêtre si elle était ouverte lors de l’installation du package. Je viens de faire le test avec une instance ESXi 5.1 vierge et je n’ai pas eu besoin de rebooter.

  7. bonjour

    merci pour votre article ,
    je suis en train de tester votre solution
    je voudrais modifier le script notify.sh
    pour l’adapter ,surtout pour spécifier le serveur SMTP pour l’envoi de mails ,
    j’ ai reussi à la modifier avec vi ( avec difficulté . meme en changeant les droits du fichier , je n’avais toujours pas les droits d’écritures , j’ai pas compris … )
    mais le script est réécrit ,

    donc j’ai fait un autre script et mofifié upsmon.conf pour le spécifier d’appeler mon script ,
    mais tous les changement que je fais sont ecrasés ….
    si j’ai bien compris les fichiers de conf sont generes à partir des .templates mais meme ces templates sont réécrits ..

    comment puis je faire ? Merci

    • Considérez que le système est chargé dans un ramdisk à partir d’un ensemble d’archives stockés dans la partition de boot. A chaque reboot le système est entièrement recréé à partir de ces archives. Seuls les paramètres sont sauvegardés dans une base qui résiste au reboot.
      Pour ce qui est de la protection contre la modification c’est une conséquence du ViB. La liste des fichiers qui composent le package est décrit dans un XML. Les fichiers faisant partie d’un package ont une super-protection qui interdit toute modification.
      Pour modifier de façon permanente un fichier il faut extraire le contenu le ViB, modifier le fichier souhaité et refaire le ViB (puis réinstaller le ViB dans ESXi).

      Pour extraire ou recréer le ViB utilisez la commande ar sous Linux (3 fichiers seront extraits : descriptor.xml sig.pkcs7 upsmon):
      ar xo upsmon-2.6.5-1.1.0vmw.500.x86_64.vib

      Le fichier upsmon est un fichier au format tar.gz. Vous pouvez extraire/modifier/recréer cette archive a votre convenance mais sans ajouter/suppriemr de fichiers (ou alors il faut le répercuter dans descriptor.xml).

      Avant de recréer le ViB vous devrez calculer le checksum du tar avec la commande suivante et le reporter dans le fichier descriptor.xml :
      openssl sha256 < upsmon

      Recréez le ViB :
      ar r mon-package.vib descriptor.xml sig.pkcs7 upsmon

      • super .. grace a vos explications tres claires j’ai reussi a creer un nouveau paquet .vib plus adapté a mes besoins

        un grand MERCI ! ! !

  8. Awesome work Rene!

    There are some minor problems with the notify.sh script, mostly the fact that the message produces is not strickly RFC2822 compliant (the Date header was missing for example).

    I took the liberty to modify it. Feel free to include it in your distribution. Hopefully you could include the capability for the user to specify:
    * the mail server and
    * the message sender (From) ?


    #!/bin/sh
    # Rene GARCIA (rene@margar.fr)
    # Script executed on ups event

    . /etc/ups/notify.conf
    [ "${SEND_MAIL}" = 1 ] || exit 0

    DOMAIN="$(hostname -d)"
    FROM="$(hostname -s)@${DOMAIN}"
    FROM_BODY="\"VMWare ESXi on $(hostname -s)\" "

    [ -z "${TO}" ] && TO="root@${DOMAIN}"
    [ -z "${NOTIFYTYPE}" ] && NOTIFYTYPE="TEST"

    HOSTNAME="`hostname`"
    MESSAGE="$1"
    DATE="`date +"%Y/%m/%d %k:%M:%S %Z"`"
    DATE_SMTP="`date --rfc-2822`"
    echo "${TO}"
    (
    echo "From: ${FROM_BODY}"
    echo "Date: ${DATE_SMTP}"
    echo "To: \"Admin\" "
    echo "Subject: UPS Notification ${NOTIFYTYPE}"
    echo ""
    echo "$DATE - UPS event on ${HOSTNAME} : ${MESSAGE}"
    ) | \
    /bin/smtpblast -f "${FROM}" -t "${TO}"

    exit 0

    Once more, thank you for an awesome piece of work!

    • Sending the code again:

      #!/bin/sh
      # Rene GARCIA (rene@margar.fr)
      # Script executed on ups event

      . /etc/ups/notify.conf
      [ "${SEND_MAIL}" = 1 ] || exit 0

      DOMAIN="$(hostname -d)"
      FROM="$(hostname -s)@${DOMAIN}"
      FROM_BODY="\"VMWare ESXi on $(hostname -s)\" "

      [ -z "${TO}" ] && TO="root@${DOMAIN}"
      [ -z "${NOTIFYTYPE}" ] && NOTIFYTYPE="TEST"

      HOSTNAME="`hostname`"
      MESSAGE="$1"
      DATE="`date +"%Y/%m/%d %k:%M:%S %Z"`"
      DATE_SMTP="`date --rfc-2822`"
      echo "${TO}"
      (
      echo "From: ${FROM_BODY}"
      echo "Date: ${DATE_SMTP}"
      echo "To: \"Admin\" "
      echo "Subject: UPS Notification ${NOTIFYTYPE}"
      echo ""
      echo "$DATE - UPS event on ${HOSTNAME} : ${MESSAGE}"
      ) | \
      /bin/smtpblast -f "${FROM}" -t "${TO}"

      exit 0

  9. Bonjour,
    Merci pour ce tuto mais j’ai quelque question a posé avant de me lancer tête baisser 🙂
    1. concernant la compatibilité, est-ce que ça fonctionne aussi sur la version free de ESXi 5.1 ?
    2. Si oui cette méthode fonctionne avec n’importe quels ups ? ou en fonction de l’ups il faudra changé le software (par exemple hp power protector pour des ups hp ?)

    • Compatible 5.0 et 5.1 oui.
      C’est un client nut. Cela signifie qu’il doit pouvoir se connecter par le reseau à un serveur nut. C’est le serveur nut qui surveille l’état de l’UPS (par port série, USB ou en réseau par SNMP). Il faudra veiller à utiliser un UPS compatible. Le client nut ne communique pas directement avec l’UPS.

      • Hum je croit que j’ai besoin d’une petite confirmation, j’ai pas tout saisie -.-

        1. j’installe mon serveur nut sur une machine virtuelle (hppp dans mon cas)
        2. j’installe le client nut proposer plus haut sur le esxi
        3. je fais le tuto pour le client nut
        4. en cas de power failure il faut que je configure le serveur pour qu’il ordonne au client de tout éteindre ? Ou alors

        Est-ce qu’il y as un endroit ou je peux trouer la liste des compatibilité du client nut avec les différents serveur ? (Le client est fournir par vmware ?)

        Merci d’avance

        • Non, mon opinion est que le serveur nut doit être installé en dehors de l’ESXi. L’installer dans une machine virtuelle est risqué car il va donner l’ordre à l’hyperviseur qui l’héberge de s’arrêter : ça revient à scier la branche sur laquelle il est. Ce n’est pas impossible à faire mais il faut bien savoir et comprendre ce que l’on fait. Le retour à la normale est alors un peu plus délicat.

          En cas de power failure le serveur donnera l’ordre aux clients de s’arrêter quand le niveau de la batterie deviendra critique.

          Pour plus d’information sur NUT visitez le site web officiel : http://www.networkupstools.org

          • Hum un dernière précision 😉 : je conseille préciser à la fin dans la partie astuce qu’avec VMtools installé on peut arrêter proprement les os sans faire un power off des VMs

Laisser un commentaire

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