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