VMware - Gestion de l'alimentation d'une VM avec ANSIBLE

Dans certains cas, il peut être intéressant de gérer l'alimentation d'une machine virtuelle sans passer par le Planificateur de tâches Windows ou crontab.

Prérequis

Vous devez disposer d'un serveur ANSIBLE fonctionnel ainsi que d'un compte sur votre serveur VMware ESXI /vCenter ayant les privilèges nécessaires.
Votre serveur ANSIBLE doit pouvoir communiquer avec votre serveur VMware ESXi / vCenter.

Création du playbook ANSIBLE

OS : CentOS 7
Version : Ansible 2.9.2

1) Se connecter sur votre serveur ANSIBLE en SSH

2) Installation des paquets nécessaires

# yum install python python-pyvmomi python-pip python2-winrm

3) Créer un nouveau playbook avec le nom de votre choix

Dans mon cas, je souhaite indiquer le nom power_vmware_vm.yml

# nano /etc/ansible/playbooks/power_vmware_vm.yml

4) Insérer le contenu suivant :

- hosts: localhost
  tasks:
   - name: Set the state of a virtual machine {{ guest_name }} to {{ guest_power }}
     vmware_guest_powerstate:
        hostname: sfeyvp02.homelab.local
        username: administrator@vsphere.local
        password: MoNpAsSwOrD
        validate_certs: no
        name: "{{ guest_name }}"
        state: "{{ guest_power }}"
        state_change_timeout: 200

Modifier les variables hostname / username / password par les informations de connexion à votre serveur VMware ESXi / vCenter

Utilisation du playbook power_vmware_vm.yml

Les états d'alimentation possible sont :
- powered-off : Correspond à une mise hors tension
- powered-on : Correspond à une mise sous tension
- reboot-guest : Redémarre le système d'exploitation invité proprement
- restarted : Correspond à un reset de l'alimentation
- shutdown-guest : Arrête proprement le système d'exploitation invité
- suspended : Met en pause le système d'exploitation invité

Dans mon exemple, je souhaite démarrer la machine virtuel CFEYWP08 (nom de la machine virtuelle dans l'inventaire vCenter)

1) Se connecter sur votre serveur ANSIBLE en SSH

2) Saisir la commande suivante pour démarrer la machine virtuelle CFEYWP08 :

# ansible-playbook /etc/ansible/playbooks/power_vmware_vm.yml -e guest_name="CFEYWP08" -e guest_power="powered-on"

 

Amélioration possible

Pour finir cet article, voici quelques idées d'améliorations :
- Utilisation de Ansible Vault pour ne pas stocker en clair les informations de connexion à votre/vos serveurs VMware
- Passer en argument le nom du serveur sur lequel est hébergé la VM à gérer

 

Laisser un commentaire

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