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 et 6.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 16/04/2016 : Le client NUT prend désormais en charge les connexions SSL avec le serveur si ce dernier le supporte. Le client embarque la librairie LibreSSL 2.3.0 pour rester indépendante de la librairie OpenSSL de l’hyperviseur dont les versions varient en fonction des mises à jour de VMWare ESXi. La vérification des certificats serveur est désactivée.

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 NutClient-ESXi500-1.4.0.tar.gz (364)

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-ESXi500-1.4.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-ESXi500-1.4.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-ESXi500-1.4.0.tar.gz          100%  675KB  43.9KB/s   00:00

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-ESXi500-1.4.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-1.4.0vmw.500
   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 « upsmon -c fsd » sur le host ESXi (par ssh ou sur la console). La procédure d’arrêt est immédiatement lancée.

 

VN:F [1.9.22_1171]
Evaluation: 4.5/5 (19 votes exprimés)
Client NUT pour ESXi 5 et 6, 4.5 out of 5 based on 19 ratings

Suivre les commetaires avec le flux RSS 2.0. Vous pouvez laisser un comentaire, or trackback depuis votre site.

232 Commentaires »

 
  • avatar taxi dit :

    Qu’appelez-vous un refresh des services car là mon problème c’est au redémarrage.
    Y -a-t-il une commande que je puisse lancer directement sur l’esxi pour voir l’état de ce service ?
    Merci pour votre aide.
    Bon week end

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Dans l’interface client vCenter, les services apparaissent arrêtés alors que ce n’est pas vrai. Il faut, dans cette interface, forcer vCenter à relire l’état des services. C’est un vieux bug de l’interface d’admin toujours pas corrigé.
      Sinon pour lever le doute. Sur ESXi, lancer la commande ps et vérifier que le processus upsmon est bien présent.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
  • avatar taxi dit :

    Pour le coup j’ai fait un /etc/init.d/upsmon statuts depuis Putty et le serveur me renvoie bien « NUT client is running ». Donc il y a bien un problème de rafraîchissement dans l’interface sphere.

    Y a-t-il des réglages à effectuer dans /etc/ups/upsmon.conf ou bien le fait de suivre votre tuto suffit ?

    Merci encore pour votre aide précieuse.

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Le fichier /etc/ups/upsmon.conf est généré automatiquement au lancement du service en fonction de ce qui a été rentré dans les UserVar. Toute modification du fichier sera perdue a la prochaine relance du service (au prochain boot).

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
  • avatar taxi dit :

    Merci pour votre réponse et votre travail.

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
  • avatar Johnny dit :

    I am getting an error when I try to install

    [root@esxi6-1:/tmp] sh upsmon-install.sh
    [InstallationError]
    Failed to remediate the host: (None, "Failed to save Bootcfg to file /altbootbank/boot.cfg: [Errno 5] Input/output error: '/altbootbank/boot.cfg.tmp'")
    vibs = set(['VMware_bootbank_ima-qla4xxx_2.02.18-1vmw.600.0.0.2494585', 'VMware_bootbank_sata-sata-sil_2.3-4vmw.600.0.0.2494585', 'VMware_bootbank_lpfc_10.2.309.8-2vmw.600.0.0.2494585', 'VMware_bootbank_lsi-mr3_6.605.08.00-7vmw.600.1.17.3029758', 'VMware_bootbank_net-tg3_3.131d.v60.4-2vmw.600.1.26.3380124', 'VMware_bootbank_vsan_6.0.0-2.34.3563498', 'VMware_bootbank_ata-pata-via_0.3.3-2vmw.600.0.0.2494585', 'VMware_bootbank_scsi-megaraid-sas_6.603.55.00-2vmw.600.0.0.2494585', 'VMware_bootbank_net-igb_5.0.5.1.1-5vmw.600.0.0.2494585', 'VMware_bootbank_sata-ahci_3.0-22vmw.600.2.34.3620759', 'VMware_bootbank_lsu-lsi-mpt2sas-plugin_1.0.0-4vmw.600.1.17.3029758', 'VMware_bootbank_lsu-hp-hpsa-plugin_1.0.0-1vmw.600.0.0.2494585', 'VMware_bootbank_scsi-aacraid_1.1.5.1-9vmw.600.0.0.2494585', 'VMware_bootbank_esx-tboot_6.0.0-2.34.3620759', 'VMware_bootbank_rste_2.0.2.0088-4vmw.600.0.0.2494585', 'VMware_bootbank_net-ixgbe_3.7.13.7.14iov-20vmw.600.0.0.2494585', 'VMware_bootbank_block-cciss_3.6.14-10vmw.600.0.0.2494585', 'VMware_bootbank_net-e1000e_3.2.2.1-1vmw.600.1.26.3380124', 'VMware_bootbank_scsi-mptspi_4.23.01.00-9vmw.600.0.0.2494585', 'VMware_bootbank_ipmi-ipmi-devintf_39.1-4vmw.600.0.0.2494585', 'VMware_bootbank_ata-pata-atiixp_0.4.6-4vmw.600.0.0.2494585', 'VMware_bootbank_lsu-lsi-lsi-mr3-plugin_1.0.0-2vmw.600.0.11.2809209', 'VMware_bootbank_esx-xserver_6.0.0-0.0.2494585', 'VMware_bootbank_sata-sata-promise_2.12-3vmw.600.0.0.2494585', 'VMware_bootbank_qlnativefc_2.0.12.0-5vmw.600.0.0.2494585', 'VMware_bootbank_net-cnic_1.78.76.v60.13-2vmw.600.0.0.2494585', 'VMware_bootbank_net-bnx2x_1.78.80.v60.12-1vmw.600.0.0.2494585', 'VMware_bootbank_lsu-lsi-mptsas-plugin_1.0.0-1vmw.600.0.0.2494585', 'VMware_bootbank_ohci-usb-ohci_1.0-3vmw.600.0.0.2494585', 'VMware_bootbank_sata-sata-nv_3.5-4vmw.600.0.0.2494585', 'VMware_bootbank_lsu-lsi-lsi-msgpt3-plugin_1.0.0-1vmw.600.0.0.2494585', 'VMware_bootbank_net-vmxnet3_1.1.3.0-3vmw.600.2.34.3620759', 'VMware_bootbank_misc-cnic-register_1.78.75.v60.7-1vmw.600.0.0.2494585', 'VMware_bootbank_esx-dvfilter-generic-fastpath_6.0.0-0.0.2494585', 'VMware_bootbank_ata-pata-sil680_0.4.8-3vmw.600.0.0.2494585', 'VMware_bootbank_ata-pata-serverworks_0.4.3-3vmw.600.0.0.2494585', 'VMware_bootbank_nmlx4-en_3.0.0.0-1vmw.600.0.0.2494585', 'VMware_bootbank_net-nx-nic_5.0.621-5vmw.600.0.0.2494585', 'VMware_bootbank_ata-pata-hpt3x2n_0.3.4-3vmw.600.0.0.2494585', 'VMware_bootbank_scsi-mpt2sas_19.00.00.00-1vmw.600.0.0.2494585', 'VMware_bootbank_sata-sata-sil24_1.1-1vmw.600.0.0.2494585', 'VMware_bootbank_sata-sata-svw_2.3-3vmw.600.0.0.2494585', 'VMware_bootbank_elxnet_10.2.309.6v-1vmw.600.0.0.2494585', 'VMware_bootbank_xhci-xhci_1.0-3vmw.600.2.34.3620759', 'VMware_bootbank_vsanhealth_6.0.0-3000000.3.0.2.34.3544323', 'VMware_bootbank_nvme_1.0e.0.35-1vmw.600.2.34.3620759', 'VMware_bootbank_net-bnx2_2.2.4f.v60.10-1vmw.600.0.0.2494585', 'VMware_bootbank_scsi-hpsa_6.0.0.44-4vmw.600.0.0.2494585', 'VMware_bootbank_scsi-megaraid2_2.00.4-9vmw.600.0.0.2494585', 'VMware_bootbank_emulex-esx-elxnetcli_10.2.309.6v-0.0.2494585', 'VMware_bootbank_scsi-mptsas_4.23.01.00-9vmw.600.0.0.2494585', 'VMware_bootbank_ata-pata-amd_0.3.10-3vmw.600.0.0.2494585', 'VMware_bootbank_nmlx4-core_3.0.0.0-1vmw.600.0.0.2494585', 'VMware_bootbank_scsi-adp94xx_1.0.8.12-6vmw.600.0.0.2494585', 'VMware_bootbank_scsi-bnx2i_2.78.76.v60.8-1vmw.600.0.11.2809209', 'VMware_bootbank_ata-pata-pdc2027x_1.0-3vmw.600.0.0.2494585', 'VMware_bootbank_lsi-msgpt3_06.255.12.00-8vmw.600.1.17.3029758', 'VMware_bootbank_uhci-usb-uhci_1.0-3vmw.600.0.0.2494585', 'VMware_bootbank_sata-ata-piix_2.12-10vmw.600.0.0.2494585', 'VMware_bootbank_net-mlx4-core_1.9.7.0-1vmw.600.0.0.2494585', 'VMware_bootbank_esx-base_6.0.0-2.34.3620759', 'VMware_bootbank_esx-ui_1.0.0-3617585', 'VMware_bootbank_scsi-ips_7.12.05-4vmw.600.0.0.2494585', 'VMware_bootbank_net-forcedeth_0.61-2vmw.600.0.0.2494585', 'VMware_bootbank_cpu-microcode_6.0.0-0.0.2494585', 'VMWARE_bootbank_mtip32xx-native_3.8.5-1vmw.600.0.0.2494585', 'VMware_bootbank_net-enic_2.1.2.38-2vmw.600.0.0.2494585', 'VMware_bootbank_ehci-ehci-hcd_1.0-3vmw.600.2.34.3620759', 'VMware_bootbank_scsi-fnic_1.5.0.45-3vmw.600.0.0.2494585', 'VMware_bootbank_misc-drivers_6.0.0-2.34.3620759', 'VMware_bootbank_net-mlx4-en_1.9.7.0-1vmw.600.0.0.2494585', 'VMware_bootbank_scsi-qla4xxx_5.01.03.2-7vmw.600.0.0.2494585', 'VMware_bootbank_nmlx4-rdma_3.0.0.0-1vmw.600.0.0.2494585', 'VMware_bootbank_scsi-megaraid-mbox_2.20.5.1-6vmw.600.0.0.2494585', 'VMware_bootbank_lsu-lsi-megaraid-sas-plugin_1.0.0-2vmw.600.0.11.2809209', 'VMware_bootbank_scsi-aic79xx_3.1-5vmw.600.0.0.2494585', 'VMware_bootbank_scsi-bnx2fc_1.78.78.v60.8-1vmw.600.0.0.2494585', 'VMware_bootbank_ipmi-ipmi-msghandler_39.1-4vmw.600.0.0.2494585', 'VMware_bootbank_ata-pata-cmd64x_0.2.5-3vmw.600.0.0.2494585', 'VMware_bootbank_net-e1000_8.0.3.1-5vmw.600.0.0.2494585', 'VMware_bootbank_ipmi-ipmi-si-drv_39.1-4vmw.600.0.0.2494585'])
    Please refer to the log file for more details.

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Read the error message : input/output error. The install process cannot write to your boot device. What kind of device is it? Maybe it’s experiencing an hardware failure. The system log located in /var/log should give you details

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
  • avatar Marco dit :

    Hello René , thank for your guide, very usefull. I have installed nut with esxi 6 and work perfectly. 1 question.. what I have to do to have the killpower of my ups? I’m not expert of scripts or other. I would like the ups to kill down when system is shutdown, so my microserver gen8 can wake up when power return and restore last power state.

    thank you very much.

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
  • avatar Antoine dit :

    Bonjour,

    Merci pour votre tuto, je l’ai suivi et j’ai bien le message de l’installation terminée avec le même résultat après l’exécution à partir de /tmp # sh upsmon-install.sh
    Installation Result
    Message: Operation finished successfully.
    Reboot Required: false
    VIBs Installed: Margar_bootbank_upsmon_2.7.4-1.4.0vmw.500
    VIBs Removed:
    VIBs Skipped:

    En revanche quand je me rends dans UsersVars des paramètres avancées
    je n’ai pas les variables correspondant à NUT que vous citées. J’ai essayé de démarrer le service UPS mais ça ne change rien. Auriez vous une idée svp. Je suis en version ESXi 6.0.

    Merci.

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Effectivement il arrive que les variables ne soient pas immédiatement visibles. Si on est pressé et qu’une indisponibilité est admissible : rebooter l’hyperviseur ESXi.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
      • avatar Antoine dit :

        Bonsoir René,

        Merci ça a marché après un reboot effectivement.

        J’ai une question à laquelle vous pourrez peut être répondre : j’ai bien compris le but de la variable UserVars.NutFinalDelay, mais serait-il possible de définir une variable pour définir une durée avant l’arrêt de l’esx à partir du moment où il est rentre en mode batterie, et non seulement en batterie faible. Je demande ça car mon onduleur est relié en USB à mon serveur NUT physique, et mon serveur NUT s’éteignant au bout d’une minute après qu’il soit rentré en mode batterie, la communication réseau ne se fera plus entre lui et mon esx.

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          Hélas non c’est toujours le serveur NUT qui donne l’ordre aux clients de s’éteindre que ce soit sur batterie faible ou sur tout autre événement qui a été configuré sur le serveur. Le serveur NUT ne devrait pas s’éteindre avant d’avoir envoyé l’ordre de s’éteindre aux clients. Je pense qu’il faut revoir la configuration du serveur. L’événement batterie faible doit se produire quand il reste juste assez d’autonomie pour tout éteindre en correctement.

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
  • avatar Anonymous dit :

    Thanks for great app!
    There is minor issue with ESXi acceptance level after installing NUT client – if it was at higher level than CommunitySupported you cannot change it without removing vib’s installed with -f option:
    http://serverfault.com/questions/747342/how-can-i-lower-the-esxi-acceptance-level-when-a-forced-install-has-been-done

    Maybe it’s better to change the acceptance level in your installation scripts?

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Even lowering the acceptance level to minimal is not enough. I still need to use -f option to install the Vib because some files are written in directories that are not open for community add-ons. I would need a vmware signature on Vib for that. I don’t think they would agree…;)

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
      • avatar Anonymous dit :

        It can be « documentation fix » – a note in readme for next release to remind about potential issue with the acceptance level.

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
 

Laisser un commentaire

XHTML: Vous pouvez utiliser ces balises : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>