More

    ESXi | Mettre automatiquement sous tension une VM spécifique qui est mise hors tension

    Dans cet article nous allons mettre en place un script permettant de vérifier l’état d’une VM toutes les jours à 7 heures (via crontabs) et de la mettre sous tension si elle est hors tension.

    Prérequis:

    Avoir activé le service SSH sous l’hôte ESXi

    Création du script

    Avec l’aide de crontab, le script recherchera l’état de la VM toutes les 1 heure pour vérifier si les VM sont sous tension ou non.

    1- Créez un script shell (power-on.sh) qui doit être placé dans un datastore vmfs, puis copiez-collez le script ci-dessous

    vmname=”nom-vm″
    vmid=$(vim-cmd vmsvc/getallvms | grep “$vmname” | awk ‘{print $1}’)
    stat1=$(vim-cmd vmsvc/power.getstate “$vmid” | grep “off”)
    if [ “$stat1” == “Powered off” ]
    then
    vim-cmd vmsvc/power.on “$vmid”
    fi
    

    Remplacez « nom-vm » par le nom de la VM. Vous pouvez obtenir la liste des vm ainsi que leur nom en tapant la commande suivante une fois connecté à l’ESXi en SSH:

    vim-cmd vmsvc/getallvms

    Ce qui dans notre exemple donnera comme nom de VM srv-vpn ou W10:

    2- Enregistrez le script et donnez-lui les droits d’exécution avec la commande suivante. Cette commande est à titre indicatif, le nom de votre datastore dépendra de votre installation.

    chmod 755 /vmfs/volumes/SSD1/power-on.sh

    Création de la tâche Cron

    1- Ouvrer le fichier crontabs avec VI via la command suivante:

    vi /var/spool/cron/crontabs/root

    2- Ajouter la ligne suivante:

    0 7 * * * /vmfs/volumes/SSD1/power-on.sh

    Dans cet exemple nous voulons exécuter notre script tout les jours à 7h ce qui en crontab représente la valeur: « 0 7 * * * »

    Pour une autre période, vous pouvez utiliser ce générateur.

    3- Lancez la commande suivante pour trouver le numéro du processus crond en cours d’exécution (par exemple 12345) :

    cat /var/run/crond.pid

    4- Puis pour tuer le processus, utilisez la commande:

    kill 12345

    Remarque: Les modifications ci-dessus ne seront pas persistantes après un redémarrage de l’ESXi. Nous allons donc devoir ajouter quelques lignes à etc/rc.local.d/local.sh pour que l’ESXi les régénère après un redémarrage.

    5- Ouvrer le fichier local.sh avec VI via la commande suivante:

    vi /etc/rc.local.d/local.sh

    6- À la fin du fichier juste au-dessus de « exit 0 », ajoutez les 3 lignes suivantes. La première tue le processus crond, la seconde ajoute notre tâche cron au fichier crontab et la troisième redémarre le service crond:

    / bin / kill $ (cat /var/run/crond.pid)
    / bin / echo '0 7 * * * /vmfs/volumes/lun1/power-on.sh' >> / var / spool / cron / crontabs / racine
    crond

    Notez que nous avons repris la valeur  « 0 7 * * * » pour exécuter notre script tout les jours à 7h.

    7- Enregistrez le fichier et quittez avec :wq

    8- Pour finir exécutez la commande « auto-backup.sh » pour que les changements de /etc/ rc.local.d/local.sh soit conservés après un redémarrage.

    Jonathan
    Jonathanhttps://pratiquepc.fr/
    Technicien, responsable atelier dans une ESN (Entreprise de services du numérique) de la région Paloise (64). Fondateur de Pratique PC. Je souhaite partager ma passion et mon expérience.

    Laisser un commentaire

    Saisissez votre commentaire
    Saisissez votre nom

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

    Derniers Articles

    Suivez-nous!

    145FansJ'aime
    56SuiveursSuivre
    141SuiveursSuivre
    7,790AbonnésS'abonner