Bonjour à toutes et tous c’est TaG. Cela faisait longtemps que je n’avais pas écrit un article. C’est maintenant corrigé. J’ai du me consacrer à des problématiques personnelles, mais j’ai aussi profiter de quelques heures de temps libres pour m’occuper de terminer un objectif que je m’étais fixé il y a plus d’1 an à savoir réaliser un Plugin pour Jeedom. Le plugin VMWARE.

J’avais plusieurs défis à relever pour mener à bien cet objectif :

  • Avoir une idée (Le pilotage de nos Machines Virtuelles me semblait une bonne idée)
  • Avoir un usage de ce plugin (On verra l’idée principale plus bas dans l’article et son application concrète)
  • Comprendre comment fonctionne un plugin Jeedom (oui, il y avait un peu de boulot)
  • Assimiler différents languages de programmation

Une fois ces points pris en compte, j’ai pu commencer et finalement terminer le plugin VMWARE. Il y aura eu plusieurs pistes explorées, plusieurs retours en arrière et plusieurs heures de tests. J’en profite pour remercier les beta-testeurs du plugins pour toutes leurs remontées très pertinentes qui m’ont fait gagner un temps très précieux et une sortie du plugin tout en douceur.

Introduction

Comme demandé en commentaire, qu’est-ce qu’une machine virtuelle et ESXi ? Un serveur ESXi est un hyperviseur, un hyperviseur est un système d’exploitation qui a pour fonction de proposer les ressources matériels (processeur / ram / disque dur / port réseau / port usb / etc) à des machines virtuelles. Il existe plusieurs hyperviseurs possibles, pas uniquement ESXi (ProxMox / KVM sont d’autres exemples d’hyperviseur).
Pour essayer de schématiser, au lieu d’avoir 10 ordinateurs pour 10 besoins différents, vous pouvez installer ESXi sur un gros ordinateur afin d’installer et configurer 10 machines virtuelles qui s’occuperont de faire tourner vos 10 besoins respectifs.
Et en plus de faire tourner vos 10 machines virtuelles, il y a des fonctionnalités intégrées à l’hyperviseur, comme les snapshots (prise d’une photo à un instant T de l’état de votre machine) ce qui vous permet en cas de problème de faire un retour arrière.

Un peu plus d’information sur la configuration / installation / création d’une machine virtuelle ici :

Installation du plugin

Passons aux choses sérieuses et parlons de l’installation du plugin. Rien de plus simple, on est sur un plugin classique Jeedom, il est sur le market donc on va sur le market, on indique VMWARE dans le champs de recherche et on clique sur l’icone du plugin.

Attention, il y a un prérequis qui est d’avoir activé la connexion SSH sur votre serveur ESXi, vous pourrez trouver la procédure ici si besoin : https://kb.vmware.com/s/article/2004746

Installation plugin VMWARE

On clique sur le bouton Installer Stable

Installation plugin VMWARE

On clique ensuite sur D’accord pour se rendre sur la page de configuration du plugin

Installation plugin VMWARE 3

La page du plugin est assez classique, on peut y voir que 3 crons sont utilisés

  • cron5 -> Met à jour l’usage RAM et CPU des VMs et ESXi (permet d’obtenir un graphique pour le suivi. Valeurs historisées par défaut dans Jeedom)
  • cronHourly -> Met à jour les informations des VMs et l’ESXI
  • cronDaily -> Vérifie la présence d’une mise à jour de la version d’ESXi sur internet
plugin vmware configuration

Ajout d’un équipement de type Serveur ESXI

On va maintenant se rendre sur le plugin via le menu : Plugins / Monitoring / Vmware et ajouter notre ESXi (pour rappel, vous pouvez rajouter plusieurs serveurs ESXi)

Plugin vmware ajouter equipement

On saisit un nom et on clique sur D’accord

plugin_vmware_ajouter_equipement

Il faut maintenir saisir les informations comme ci-dessous (pour les numéros 1 et 2 vous êtes libre d’en faire ce que vous souhaitez bien entendu 🙂 ).

Les informations à saisir pour adresse ip / login et mot de passe sont celle de votre serveur ESXi pour vous connecter en SSH sur votre ESXI

Recherche automatique des VMs

On sort de la page de configuration de l’équipement ESXI Serveur et on se retrouve sur la page d’accueil du plugin. On visualise maintenant ceci, il faut donc cliquer sur le bouton synchroniser.
Le bouton synchroniser va se charger d’interroger le serveur ESXi à la recherche des machines virtuelles que vous avez créées sur ce dernier. Le plugin va créer un équipement par machines virtuelles avec les commandes associées (Informations et actions).

plugin_vmware_synchroniser

La synchronisation terminée (ça prend quelques secondes à dizaine de secondes en fonction de votre matériel et du nombre de VMs), vous obtenez le rendu suivant

plugin_vmware_post_synchronisation

Modale Santé et Widgets – Vmware

Vous disposez d’une modale pour avoir un état de la santé sur la page d’accueil du plugin

plugin_vmware_bouton_sante

Qui vous donne ceci en terme de rendu

Voici le rendu, sans aucune personnalisation du widget d’une VM avec toutes les commandes à votre disposition :

plugin_vmware_widget_vm

Voici le rendu sans personnalisation pour l’ESXI :

plugin_vmware_widget_ESXI

Application possible

Vous pourrez trouvez dans la DOCUMENTATION du plugin des idées de mise en applications. Mais comme prévu je vais détailler l’usage qui est à l’origine du plugin. Oui, on est feignant ou non et je trouvais ça fastidieux de répéter les opérations ci-après lors d’une mise à jour du core Jeedom ou d’un plugin Jeedom. En effet je ne pars jamais à l’aveuglette lorsque je dois appliquer une mise à jour. Par conséquent, on assure le coup en faisant ceinture et bretelle avant une mise à jour.

Voici les actions que je faisais lorsqu’une mise à jour était disponible :

  • Sauvegarde de Jeedom
  • Connexion sur mon ESXi
  • Création d’un snapshot
  • Application de la mise à jour Jeedom (Plugin(s) et/ou Core)
  • Validation du fonctionnement pendant une période donnée (souvent 2 jours pour valider que tout semble ok)
  • Connexion sur mon ESXi
  • Suppression du snapshot

Comme vous avez pu le voir, il y a parmi les commandes des Machines Virtuelles des commandes pour prendre et supprimer un snapshot. Donc on doit surement pouvoir faire quelque chose pour automatiser tout ça. Allez, on passe au paragraphe suivant en basculant coté Jeedom.

Scénario Jeedom – Prérequis et explications

Je pars du principe que vous avez le plugin Jeelink en place sur votre serveur Jeedom afin d’auto monitorer votre Jeedom. Lien vers sa documentation

Il va nous falloir deux scénarios distincts sur notre Jeedom afin de le mettre à jour car lorsque l’on met à jour Jeedom via Jeelink, on ne dit pas si on met à jour le core, ou les plugins ou les deux, ça lance toutes les mises à jours d’un coup. Lorsque le core se met à jour, ça coupe tous les scénarios, par conséquent on ne peut pas fonctionner avec un seul scénario.

J’utilise une interaction Jeedom pour appeler le premier scénario. Le deuxième scénario est appelé lui lorsque l’événement Fin de sauvegarde est envoyé par Jeedom. Vous trouverez plus de détail dans la documentation des scénarios sur les événements à votre disposition.

Scénario Jeedom – Interaction Vmware

Voici rapidement la partie interaction, on lui donne un nom (Mise à jour Jeedom, une demande (Mise à jour), une réponse (J’appelle le scénario de mise à jour de Jeedom

plugin_vmware_interaction

Dans l’onglet Actions on appelle le scénario de mise à jour de Jeedom (MAJ_JEEDOM)

plugin_vmware_interaction_action

Bien entendu l’interaction peut être appelée par le biais que vous souhaitez : Google Home / Alexa / Telegram / SMS / …

Scénario Jeedom – Scénario 1

Rien d’extraordinaire sur la page d’accueil du scénario, pour le premier lancement, afin de s’assurer que tout se déroule correctement sans attendre la fin du scénario, je vous conseille de passer le log en Temps Réel.
Pour l’appel depuis l’interaction, laisser le scénario sur le mode Provoqué, l’interaction fait le travail.
Mais vous pouvez aussi prévoir un bouton sur votre dashboard, le mettre en programmé, etc.

plugin_vmware_scenario_1_page_accueil

Ci-dessous le scénario, oui il est un peu conséquent pour juste lancer la mise à jour. Pour rappel j’aime bien savoir ce qu’il se passe et vu que l’idée c’est de le lancer via une interaction telegram le retour est appréciable.

plugin_vmware_scenario_1_actions

Un peu d’explication sur les actions du scénario 1

  • SI la variable snapshotCreated ne vaut pas Oui alors on peut lancer le scénario (ça permet d’éviter un double lancement)
    • Création d’un snapshot de la VM via le plugin VMWARE
    • Pause
    • Appel du refresh de la VM en question
    • Pause
    • SI le snapshot créé juste avant est présent ALORS
      • Message telegram avec un petit résumé des informations que l’on souhaite envoyer avant de lancer la mise à jour
      • On modifie la variable snapshotCreated
      • On lance un backup pré-update via le plugin jeelink
      • Pause
      • On lance la mise à jour via le plugin jeelink
    • SI snapshot absent, on prévient via un message telegram et on sort

Maintenant il ne reste plus qu’à patienter le temps que la mise à jour se termine et que le second scénario démarre.

Scénario Jeedom – Scénario 2

Comme indiqué plus haut, le scénario 2 va s’exécuter lorsque l’événement de fin de mise à jour sera envoyé par Jeedom. On peut le voir en déclencheur sur la copie d’écran ci-dessous et toujours le log en Temps Réel de manière temporaire, pensez- bien à le modifier une fois que le processus est validé de votre coté :

plugin_vmware_scenario_2_general

Ce scénario sera vu en deux parties pour plus de lisibilité. La première est simple.

Le bloc action permet juste d’envoyer un message pour confirmer que le processus continue et que l’on vient de rentrer dans le second scénario. Puis je fais une pause pour laisser un peu de temps aux différents démons de se relancer et avoir un statut correct.

Le bloc SI fait ceci

  • SI la variable snapshotCreated est égale à Oui c’est donc que la mise à jour a été lancée par le scénario AND la variable reCallPostUpdateViaScenario est égale à Empty donc que c’est la première fois que l’on rentre dans le scénario donc on continue pour cette mise à jour
    • On met à jour les informations de notre objet Jeedom du plugin Jeelink
    • Pause
    • Message telegram avec un petit résumé des informations que l’on souhaite envoyer post mise à jour (permet de comparer le avant après

On passe à la seconde partie du scénario. Cette partie va permettre de savoir si on souhaite supprimer le snapshot, le conserver et aussi traiter le cas ou l’on ne répond pas

plugin_vmware_scenario_2_actions_2
  • Si variable snapshotCreated égale à Oui
    • On crée un bloc DANS afin d’envoyer un ASK dans 2 jours (2880 minutes) pour savoir si on peut supprimer le snapshot (Pour l’exemple, j’ai réglé le délai à 1 minute), la réponse sera stockée dans la variable AskStatutMajJeedom
  • SI la variable AskStatutMajJeedom est égale à Oui
    • Suppression du snapshot
    • On modifie la variable snapshotCreated en Empty
    • On modifie la variable reCallPostUpdateViaScenario en Empty
    • Pause
    • On met à jour les infos de la VM
    • Pause
    • On envoi un résumé de la partie snapshot via telegram

Ensuite

  • SI la variable AskStatutMajJeedom est égale à Non
    • Confirmation de la réception du Non via telegram
    • On modifie la variable snapshotCreated en Empty
    • On modifie la variable reCallPostUpdateViaScenario en Empty
  • SI la variable AskStatutMajJeedom est égale à Aucune Réponse
    • On envoi un message telegram pour informer que l’on n’a répondu et qu’une nouvelle demande va arriver
      • Dans 1 min (pour l’exemple, dans la réalité, augmenter ce délai est plus logique)
        • On modifie la variable reCallPostUpdateViaScenario en Oui
        • On rappel le scénario 2

Rendu coté télégram

Voici le rendu de toutes les commandes indiquées sur Telegram dans mes scénario. Cela permet, comme expliqué, d’avoir quelque chose d’assez lisible et surtout on sait que la mise à jour avance et que les mises à jours sont bien appliquées. Le message qui liste les sauvegarde est dans un autre scénario ça n’est pas une fonctionnalité du Core qui me fait ce message telegram.

plugin_vmware_rendu_telegram_2

J’ai volontairement non répondu à la demande, donc j’obtiens ceci :

Informations diverses

Ce plugin Vmware est compatible V3 et V4 de Jeedom.
Il peut gérer 1 ou plusieurs serveurs ESXi, les VMs seront associées à leur ESXi.

Si vous supprimez 1 serveur ESXi du plugin Jeedom par inadvertance, les VMs ne sont pas perdues, elles passent dans une catégorie VMs Orphelines, mais si vous créez de nouveau l’équipement ESXi avec le même nom, elles lui seront rattachées de nouveau.

Conclusion

J’espère que ce plugin Vmware pourra être utile même si je sais que tout le monde n’a pas de serveur ESXi chez lui, ça en motivera peut-être quelqu’un(e)s d’entre-vous à tenter l’aventure.



Partager sur :

Infos de l'auteur

Je m'appelle Pierre-Yves, Je suis dans l'informatique de profession, dans la domotique par hasard pour voir un peu si je pouvais relever le défis de piloter deux trois trucs chez moi. Je crois maintenant que j'ai réussi à me faire attraper par la domotique vu tout ce que j'ai à la maison. Je fais également un peu de VTT, de moto quand le temps le permet.

14 commentaires

  1. Ce qui serait bien c’est dans l’intro de rappeler le principe d’une VM, l’intérêt et les utilisations possibles. Car sinon on lit et on cherche désespérément un indice. Enfin on lit au début puis on lit la conclusion sans être plus avancés.
    Merci pour nous pauvres ignorants :-))

    • Hello,

      Merci pour le retour.
      J’ai effectivement dans la première version intégré du powercli sur Linux, donc sur le jeedom ou est installé le plugin, c’était fonctionnel et plus simple à manier, mais les requêtes étaient affreusement longues.
      L’installation de powercli peut faire peur car il faut installer powershell pour linux.
      Mais c’était fonctionnel.

      Concernant l’implémentation de ghettoVCB. vu que ça passe en crontab pour l’automatisation, je ne vois pas l’apport de cette partie dans le plugin.
      Le lancement manuel serait le seul apport que je peux y voir, mais se lancer dans de la restauration de VM à distance me semble pas approprié (il faut être devant la machine).

      Et chacun utilise sa solution pour sauvegarder les VMs, par exemple j’utilise ça : http://sarakha63-domotique.fr/nas-synology-active-backup-sauvegarder-une-machine-virtuelle-automatiquement/

      A priori tu aurais juste besoin en manuel d’une commande de ce type :
      /opt/ghettovcb/bin/ghettoVCB.sh -f /etc/ghettovcb/vm_backup_list -g /etc/ghettovcb/ghettoVCB.conf

      Ou il faut remplacer le -f par le nom de la VM au lieu du nom du fichier qui contient ta liste de VMs à sauvegarder.
      En soit si c’est faisable, c’est envisageable, mais j’ai peur de perdre les utilisateurs du plugin avec cette commande si elle n’est pas globale

  2. Perso j’adore le principe mais je me refuse a installer une mise a jour sans savoir ce qu’elle apporte… Aussi bien le core, que les plugins, que les apps sur mon tel.
    Je ne demande pas un roman a lire (je suis pas contre non plus…) mais juste les informations basics telles que « corrections de bugs », « optimisations », « telle fonction ajoutée » ,…

    Donc dans ton exemple il y a 6 mise a jour dispo mais tu sais pas lesquelles ni ce qui change et ca c’est un reel manque selon moi. Si t’as une solution pour avoir ces infos dans les interactions je suis preneur et serai plus que ravi d’installer ton plugin.

    • Hello,

      On peut je pense avoir la liste des plugins/core qui doivent être mis à jour. En fouillant sur le core et en trouvant les fonctions qui vont avec.
      Mais aller interroger le changelog pour avoir juste les dernières informations ça va être compliqué ou du moins très très lourd à gérer et suivre dans le temps, car il faudrait parser le contenu de chaque changelog, celà n’étant pas imposé au niveau du format, il faut se bagarrer avec chaque type de changelog, certains ont un rendu propre, d’autres te font pointer sur leur github… donc ça me parait compliqué.

      Mais c’est plus un problème auquel devrait répondre le Core de jeedom et non pas mon plugin. On peut savoir en alerte mail/telegram/sms quand une mise à jour est disponible, mais ça ne donnera pas pour autant le contenu de cette mise à jour.
      Au pire du pire, ça pourrait être un message formatté de cette manière :
      nom du plugin/core – Lien vers le changelog et à toi de le consulter pour chacun des plugins.

      Après ça n’est pas la seule possibilité du plugin, tu peux aussi te faire une alerte si tu laisse trainer des snapshots sur tes vms trop longtemps par exemple.
      Relancer une machine virtuelle si tu sais pertinement qu’il y a un problème dessus.

  3. Wow, excellent boulot ! Je ne pense pas m’en servir, mais pour soutenir ce genre d’initiative et un peu le projet Jeedom aussi, je vais l’acheter quand même (faut dire que j’ai un ESXi et 23 VM, ça pourrait me servir un jour)

  4. Je suis desolé mais je n’ai pas compris l’utilité de ce plugin. Le plugin monitoring qui est gratuit surveille déjà le raspberry et meme mon NAS.

    Et si c’est juste pour mettre a jour automatiquement jeedom, je préfère ne pas prendre de risque. Je fais la mise a jour en manuel car si je ne suis pas chez moi et que jeedom se met a jour tout seul et devient HS je fais comment pour le faire redémarré?

    • Ce plugin ne sert pas à juste mettre à jour Jeedom.
      C’est une des possibilités qu’il offre.
      Chacun peut en avoir son usage, mais l’usage premier n’est pas la surveillance des VMs au sens ram ou cpu, mais de pouvoir les contrôler et s’alerter sur différents points. Exemple, des snapshots présent depuis plus de X jours, pouvoir relancer une VM si on estime qu’un problème existe sur tel ou tel paramètres (plus de réponses HTTP/ plus de réponses au ping / etc). là il faut voir selon votre infrastructure systèmes.

      Cet article est un exemple de scénario possible. et il n’est fait mention nulle part qu’il est obligé de mettre à jour en étant à l’autre bout du monde sur l’article, c’est votre interprétation.

      Mais quand je mets à jour, j’en avais marre de faire le snapshot sur vmware, aller lancer les majs sur jeedom, supprimer le snapshot x jours après. avec les logins que celà implique de faire à chaque fois, je ne vais quasiment jamais sur mon jeedom, il tourne et vie sa vie tranquillement.

      La je gagne en souplesse et en confort, en plus de pouvoir avoir d’autres informations.
      Les commandes évoluent au fur et à mesure de la demande

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.