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 02/10/2021 : La version 2.1.6 du client NUT est une évolution mineure. Elle n’apporte aucune nouvelle fonctionnalité, elle utilise la librairie libressl 3.3.4. Un « offline bundle » est proposé au téléchargement pour la création d’une ISO personnelle d’installation de ESXi ou sa diffusion par vCenter.

Mise à jour du 18/04/2020 : La version 2.1.0 du client NUT est compatible avec ESXi 7.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ée 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.7.4-2.1.6.i386.tar.gz – Téléchargé 39413 fois – 869 Ko

Téléchargez ici le bundle pour une installation via vCenter ou la creation d’une ISO d’installation de ESXi

Télécharger “NutClient-ESXi (offline bundle)” NutClient-ESXi-2.7.4-2.1.6-offline_bundle.zip – Téléchargé 187 fois – 871 Ko

Téléchargez les sources

Télécharger “NutClient-ESXi (sources)” NutClient-ESXi-2.7.4-2.1.6-src.tar.gz – Téléchargé 1412 fois – 23 Ko

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.

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

      • Hmm. As far as I can tell, the NUT service is not started on the ESXi, when the server is running on a (not yet started) VM, even when set to automatically start with host. When I start it manually, it’s running just fine.

        • Oh, it does not start at all ? I made some tests a long time ago and the client started and just complaining that it was not able to connect to the server but keeping trying to connect periodically. But as I always say, I don’t advice to install the server in a VM. A very simple raspberry pi with a minimal Linux and a nut server running on it can do the job for a very limited power consumption. I’m going to test it…

        • I confirm that starting the client while the server is down is not an issue. The client will keep trying to connect to the server regularly until it succeed. Have you configured the service to start and stop automatically with the ESXi host ?

  1. Bonjour René

    Merci de fournir un produit merveilleux.

    Y a-t-il un effet si * .conf devient compatible avec le magasin de configuration après ESXi 7.0.2 ?

  2. Seems like my license got removed after installing this and needed to reassign it. can that be true?

    And Im not sure about the password and name how do I get to know that?

  3. Hello, and congratulations on the program
    I wanted to ask if it is possible to parameterize the SHUTDOWNCMD parameter?

    to allow via a script to shut down all virtual machines.
    Thank you

    • The default shutdown action will execute the configured behavior for VM shutdown. You have to configure the start/stop parameter in ESXi for VMs. There is no default (well, the default is an unclean power off, not the best).

  4. Thanks a lot! I have connected it to my Synology NUT Server, but I would like to ask if there is any way to know if it works.
    Could you please let us know how can we test if everything works?
    Thanks!

    • On ESXi you can use command ‘grep upsmon /var/log/syslog.log’ to get the messages related to the nut client. Then try to disconnect the server from the network. You should see a message complaining about lost communication with the server. Put it back again after the test.

  5. Salut René!

    Le client NUT avec ton tuto fonctionne impeccable sur la remontée. Cependant j’ai eu un bug assez étrange. A cause d’un disjoncteur, la maison s’est retrouvé sans courant la dernière fois. Mon NUC avec Esx dessus est passé sur onduleur et s’est éteint dès les 20% d’autonomie arrivé.

    Cependant après impossible de redémarrer le NUC, il s’allumait puis s’éteignait quelques secondes après. J’ai l’impression que le client NUT ordonné de nouveau l’arrêt à chaque fois. J’ai dû débrancher le câble USB et attendre que londuleur repasse au dessus de 20%. As-tu déjà eu ce bug ?

    Merci 🙂

    • Jamais rien vu de tel. ESXi a besoin de quelques minutes pour démarrer et que le service client NUT soit opérationnel. Si ESXi s’éteint après quelques secondes il n’a peut-être pas encore eu le temps de démarrer complètement. C’est peut-être l’onduleur qui flanche. Le client NUT ne fait que ce que le serveur NUT lui demande. En gros on distingue 4 états :
      – Online (OL) : l’onduleur est sur secteur et la batterie est changée, tout va bien, le client est autorisé à tourner
      – Onbatt (OB) : perte de secteur et la batterie est chargée, le client est toujours autorisé à tourner
      – Onbatt Lowbatt (OB+LB) : perte de secteur et batterie faible, le client doit s’éteindre dès que possible
      – Online Lowbatt (OL+LB) : l’onduleur est sur secteur et la batterie est déchargée (après une panne de courant), le client est autorisé à tourner, la batterie est en charge mais le système est fragile.

      Tu es certain que le secteur a été rétabli quand tu as relancé ton ESXi ? Le serveur NUT, n’envoie-t-il pas par erreur Lowbatt sans dire Online après le retour du courant ? Dans ce dernier car c’est plutôt un bug dans le driver NUT de ton onduleur.

      Les onduleurs ont des design et des comportements différents selon les constructeurs. Il faut regarder aussi du côté des paramètres du serveur NUT.

      • Salut,

        Merci pour ton retour! Aucun soucis niveau alimentation ce jour là. Je passe à travers mon Synology pour ordonner l’arrêt vu que j’ai un Eaton 1200 Pro (qui par ailleurs fait du bruit niveau ventilation, si tu souhaites remplacer un jour). En faisant quelques tests ce matin, je ne reproduits pas le soucis et mes VM s’arrêtent bien ainsi que l’ESXi en lui-même.

        Je me demande si c’est pas le Synology qui ne renvoi pas bien le message.

        J’essayerai de reproduire le phénomène en déchargeant complétement l’onduleur pour voir dans la semaine.

  6. Super guide!

    Serait-il possible d’ajouter une variable pour fermer l’hôte dès qu’on embarque sur batterie? Pour prolonger l’autonomie des mes serveurs plus essentiels, j’aimerais fermer mon serveur VDI/Rendu vidéo 30 secondes après qu’on tombe sur batterie et ne pas attendre l’avertissement batterie faible.

    Merci!

    • Bonjour, c’est une demande qui a déjà été faite et à laquelle j’ai répondu négativement. Le service nécessaire pour éteindre après un laps de temps (upsched) n’est pas inclu dans le module.

  7. It appears there’s an issue with ESXi v7.0.3. This is a fresh install:

    [root@esx1:/vmfs/volumes/Synology/Utilities/NutClient-ESXi-2.7.4-2.1.6] sh upsmon-install.sh
    [ValueError]
    Expected 1 component, found 2
    Please refer to the log file for more details.

    Here’s the log file (/var/run/esxupdate.log). Apologies for how verbose it is but this is the relevant section:

    2021-11-11T17:30:10Z esxupdate: 2102095: vmware.runcommand: INFO: runcommand called with: args = ‘[‘/sbin/esxcfg-advcfg’, ‘-q’, ‘-g’, ‘/UserVars/EsximageNetTimeout’]’, outfile = ‘None’, returnoutput = ‘True’, timeout = ‘0.0’.
    2021-11-11T17:30:10Z esxupdate: 2102095: vmware.runcommand: INFO: runcommand called with: args = ‘[‘/sbin/esxcfg-advcfg’, ‘-q’, ‘-g’, ‘/UserVars/EsximageNetRetries’]’, outfile = ‘None’, returnoutput = ‘True’, timeout = ‘0.0’.
    2021-11-11T17:30:10Z esxupdate: 2102095: vmware.runcommand: INFO: runcommand called with: args = ‘[‘/sbin/esxcfg-advcfg’, ‘-q’, ‘-g’, ‘/UserVars/EsximageNetRateLimit’]’, outfile = ‘None’, returnoutput = ‘True’, timeout = ‘0.0’.
    2021-11-11T17:30:10Z esxupdate: 2102095: root: INFO: Command = vib.list
    2021-11-11T17:30:10Z esxupdate: 2102095: root: INFO: Options = {‘depot’: None, ‘viburl’: None, ‘nameid’: None, ‘profile’: None, ‘baseimageversion’: None, ‘addon’: None, ‘softwarespec’: None, ‘level’: None, ‘updateonly’: False, ‘noliveinstall’: False, ‘nomaintmode’: False, ‘force’: False, ‘dryrun’: False, ‘oktoremove’: False, ‘proxy’: None, ‘nosigcheck’: False, ‘pending’: None, ‘rebooting’: False, ‘downgrade’: None, ‘nohwwarning’: False}
    2021-11-11T17:30:12Z esxupdate: 2102095: HostImage: INFO: Installers initiated are {‘live’: , ‘boot’: , ‘locker’: }
    2021-11-11T17:30:13Z esxupdate: 2102095: imageprofile: INFO: Adding VIB VMware_locker_tools-light_11.3.0.18090558-18644231 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:30:13Z esxupdate: 2102095: imageprofile: DEBUG: Adding Component VMware-VM-Tools_11.3.0.18090558-18644231 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:30:13Z esxupdate: 2102095: imageprofile: DEBUG: Removing reserved Component VMware-VM-Tools_11.3.0.18090558-18644231 in ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:30:13Z esxupdate: 2102095: root: DEBUG: Finished execution of command = vib.list
    2021-11-11T17:30:13Z esxupdate: 2102095: root: DEBUG: Completed esxcli output, going to exit esxcli-software
    2021-11-11T17:50:08Z esxupdate: 2102172: vmware.runcommand: INFO: runcommand called with: args = ‘[‘/sbin/esxcfg-advcfg’, ‘-q’, ‘-g’, ‘/UserVars/EsximageNetTimeout’]’, outfile = ‘None’, returnoutput = ‘True’, timeout = ‘0.0’.
    2021-11-11T17:50:08Z esxupdate: 2102172: vmware.runcommand: INFO: runcommand called with: args = ‘[‘/sbin/esxcfg-advcfg’, ‘-q’, ‘-g’, ‘/UserVars/EsximageNetRetries’]’, outfile = ‘None’, returnoutput = ‘True’, timeout = ‘0.0’.
    2021-11-11T17:50:09Z esxupdate: 2102172: vmware.runcommand: INFO: runcommand called with: args = ‘[‘/sbin/esxcfg-advcfg’, ‘-q’, ‘-g’, ‘/UserVars/EsximageNetRateLimit’]’, outfile = ‘None’, returnoutput = ‘True’, timeout = ‘0.0’.
    2021-11-11T17:50:09Z esxupdate: 2102172: root: INFO: Command = vib.install
    2021-11-11T17:50:09Z esxupdate: 2102172: root: INFO: Options = {‘depot’: None, ‘viburl’: [‘/vmfs/volumes/Synology/Utilities/NutClient-ESXi-2.7.4-2.1.6/upsmon-2.7.4-2.1.6.i386.vib’], ‘nameid’: None, ‘profile’: None, ‘baseimageversion’: None, ‘addon’: None, ‘softwarespec’: None, ‘level’: None, ‘updateonly’: False, ‘noliveinstall’: False, ‘nomaintmode’: False, ‘force’: False, ‘dryrun’: False, ‘oktoremove’: False, ‘proxy’: None, ‘nosigcheck’: True, ‘pending’: None, ‘rebooting’: False, ‘downgrade’: None, ‘nohwwarning’: False}
    2021-11-11T17:50:11Z esxupdate: 2102172: HostImage: INFO: Installers initiated are {‘live’: , ‘boot’: , ‘locker’: }
    2021-11-11T17:50:11Z esxupdate: 2102172: imageprofile: INFO: Adding VIB VMware_locker_tools-light_11.3.0.18090558-18644231 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:11Z esxupdate: 2102172: imageprofile: DEBUG: Adding Component VMware-VM-Tools_11.3.0.18090558-18644231 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:11Z esxupdate: 2102172: imageprofile: DEBUG: Removing reserved Component VMware-VM-Tools_11.3.0.18090558-18644231 in ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:11Z esxupdate: 2102172: HostImage: DEBUG: Deferring initiating installers
    2021-11-11T17:50:13Z esxupdate: 2102172: HostImage: INFO: Installers initiated are {‘live’: , ‘boot’: , ‘locker’: }
    2021-11-11T17:50:13Z esxupdate: 2102172: imageprofile: INFO: Adding VIB VMware_locker_tools-light_11.3.0.18090558-18644231 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:13Z esxupdate: 2102172: imageprofile: DEBUG: Adding Component VMware-VM-Tools_11.3.0.18090558-18644231 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:13Z esxupdate: 2102172: imageprofile: DEBUG: Removing reserved Component VMware-VM-Tools_11.3.0.18090558-18644231 in ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:13Z esxupdate: 2102172: Transaction: DEBUG: Metadata is provided, skip download
    2021-11-11T17:50:13Z esxupdate: 2102172: Transaction: INFO: Skipping installed VIBs
    2021-11-11T17:50:13Z esxupdate: 2102172: Transaction: INFO: Final list of VIBs being installed: Margar_bootbank_upsmon_2.7.4-2.1.6
    2021-11-11T17:50:13Z esxupdate: 2102172: imageprofile: INFO: Adding VIB Margar_bootbank_upsmon_2.7.4-2.1.6 to ImageProfile (Updated) DEL-ESXi-703_18644231-A00
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: Traceback (most recent call last):
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /usr/lib/vmware/esxcli-software », line 773, in
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: main()
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /usr/lib/vmware/esxcli-software », line 764, in main
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: ret = CMDTABLE[command](options)
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /usr/lib/vmware/esxcli-software », line 601, in VibInstallCmd
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: res = t.InstallVibsFromSources(viburls, [], nameids,
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /lib64/python3.8/site-packages/vmware/esximage/Transaction.py », line 965, in InstallVibsFromSources
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: inst, removed, exitstate = self._installVibs(curprofile,
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /lib64/python3.8/site-packages/vmware/esximage/Transaction.py », line 1207, in _installVibs
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: hasConfigDowngrade = checkFdmConfigDowngrade(curProfile, newProfile)
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /lib64/python3.8/site-packages/vmware/esximage/Transaction.py », line 1122, in checkFdmConfigDowngrade
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: compDowngrades = curProfile.GetCompsDowngradeInfo(newProfile)
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /lib64/python3.8/site-packages/vmware/esximage/ImageProfile.py », line 2416, in GetCompsDowngradeInfo
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: curComp = self.components.GetComponent(name)
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: File « /lib64/python3.8/site-packages/vmware/esximage/Bulletin.py », line 1276, in GetComponent
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: raise ValueError(‘Expected 1 component, found %u’
    2021-11-11T17:50:13Z esxupdate: 2102172: root: ERROR: ValueError: Expected 1 component, found 2

Laisser un commentaire

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