PrettyPrint

vendredi 23 mai 2014

PySphere, play with vSphere via it's webservices.

Le quotidien d'un SysAdmin est de mettre en place des scripts pour automatiser les actions répétitives, lui permettant ainsi d'avoir du temps libre le vendredi pour prendre une ou quelques bières.
Une des tâches les plus énervante est la production des rapports. N+1 m'a demandé un certains nombres d'états sur les machines virtuelles, à fournir après une certaines périodes; la galère; solution --> scripter.

VMware vSphere fournit un grand nombre de webservices, permettant d'interagir avec sa plateforme de virtualisation; malheureusement pas très comestible. Il fournit donc un SDK plus digest, mais pour les amoureux de Java.
PySphere est un module python; projet opensource permettant de jouer avec les webservices vSphere et très facile d'utilisation. Il permet de :
  • d'interroger et se connecter sur les hôtes VMWare's ESX, ESXi, Virtual Center, VMs
  • d'effectuer les actions: d'alimentation (Activer, arrêt, ...),  rétablir un instantané, cloner, migrer, mettre à jour les outils vmwares, obtenir les propriétés, envoyer un signal (start/stop/list) aux processus, et les statistiques d'une VM. 

Installation: (test sur centos6)

#pip install -U pysphere
ou
#wget https://pysphere.googlecode.com/files/pysphere-0.1.8.zip
#unzip pysphere-0.1.8.zip
#python setup.py install

Utilisation:

Petit exemple sur l'affichage de la liste des VMs d'une infrastructure, avec quelques propriétés; nom de la vm, adresse ip, mémoire en ko, nombre cpu, OS de la vm.

>>> from pysphere import *
>>> server = VIServer()
>>> server.connect("vcenter.intra.local","test","motDePasse")
>>> vms = server.get_registered_vms()
>>> for vm in vms:
...     vmi = server.get_vm_by_path(vm)
...     print vmi.get_property("name")
...     print vmi.get_property("ip_address")
...     print vmi.get_property("memory_mb")
...     print vmi.get_property("num_cpu")
...     print vmi.get_property("guest_full_name")