pyVmomi es un SDK desarrollado en lenguaje Python para la API de VMware vSphere que permite gestionar hosts de máquinas virtuales ESX, ESXi y vCenter. De esta forma podemos apuntar a automatizar tareas y gestionar clusters y máquinas virtuales VMware de manera programática.

En este primer artículo dedicado a pyVmomi voy a demostrar cómo instalarlo partiendo desde un sistema FreeBSD como base. Aunque los pasos son similares para cualquier distribución GNU/Linux.

El proyecto pyVmomi es open source y está desarrollado y mantenido de manera oficial por VMware. Es posible descargar los fuentes desde el repositorio en GitHub, aunque VMware recomienda instalar la releas estable a través del gestor de paquetes de Python: pip.

Primero es necesario contar con un entorno Python en funcionamiento. En FreeBSD es tan simple como ejecutar pkg install python py27-pip (o pkg install python3 py36-pip para instalar Python 3.6.5). En Devuan/Debian y derivados es tan simple como ejecutar apt-get install python python-pip.

Contando con el gestor de paquetes Python pip instalado y en funcionamiento, el iguiente paso consiste en simplemente instalar pyvmomi:

root@hal9000:/usr/home/emi # pip install pyvmomi

El paquete queda instalado dentro del directorio /usr/local/lib/python2.7/site-packages/:

root@hal9000:/usr/home/emi # ls -d1 /usr/local/lib/python2.7/site-packages/pyV*
/usr/local/lib/python2.7/site-packages/pyVim
/usr/local/lib/python2.7/site-packages/pyVmomi

Comenzar a desarrollar un script o aplicación desde cero tiene una curva de aprendizaje bastante inclinada. Sin embargo existe un proyecto de ejemplos de uso de la librería pyVmomi desarrollados por la comunidad:

pyvmomi-community-samples

Este es el punto de partida ideal para aprender a trabajar con la librería nativa de Python pyVmomi, que provee enlaces al SDK de Gestión de vSphere.

Los ejemplos en este proyecto son contribuidos por desarrolladores de la comunidad VMware. La calidad y validez de los ejemplos varía, pero si se encuentra un eventual problema es posible reportarlo y/o contribuir un fix.

Para instalar los ejemplos, cambiar a una locación conveniente y clonar el repositorio:

root@hal9000:/usr/home/emi # cd /usr/local/
root@hal9000:/usr/local # git clone https://github.com/vmware/pyvmomi-community-samples.git

Cambiar al directorio del repositorio, el cual posee un directorio "samples" donde se encuentran los ejemplos:

root@hal9000:/usr/local # cd pyvmomi-community-samples/
root@hal9000:/usr/local/pyvmomi-community-samples # ll
total 44
drwxr-xr-x  8 root  wheel    512 May 15 13:42 .git/
-rw-r--r--  1 root  wheel    649 May 15 13:42 .gitignore
-rw-r--r--  1 root  wheel    305 May 15 13:42 .travis.yml
-rw-r--r--  1 root  wheel  11309 May 15 13:42 LICENSE
-rw-r--r--  1 root  wheel   1883 May 15 13:42 README.md
-rw-r--r--  1 root  wheel    131 May 15 13:42 requirements.txt
drwxr-xr-x  4 root  wheel   2560 May 15 13:42 samples/
-rwxr-xr-x  1 root  wheel   1631 May 15 13:42 setup.py*
-rw-r--r--  1 root  wheel     28 May 15 13:42 test-requirements.txt

Por caso, hay diferentes ejemplos para listar información:

root@hal9000:/usr/local/pyvmomi-community-samples # cd samples/
root@hal9000:/usr/local/pyvmomi-community-samples/samples # ll list*
-rwxr-xr-x  1 root  wheel  2776 May 15 13:42 list_datastore_cluster.py*
-rwxr-xr-x  1 root  wheel  6227 May 15 13:42 list_datastore_info.py*
-rwxr-xr-x  1 root  wheel  3047 May 15 13:42 list_dc_datastore_info.py*
-rwxr-xr-x  1 root  wheel  2146 May 15 13:42 list_host_alarms.py*
-rwxr-xr-x  1 root  wheel  3963 May 15 13:42 list_vm_storage_policy.py*
-rwxr-xr-x  1 root  wheel  2539 May 15 13:42 list_vmwaretools_status.py*

Antes de continuar se recomienda crear un usuario de sólo lectura (miembro del grupo "vCenter Users") en el host ESX/ESXi o servidor vCenter.

Los ejemplos suelen tener una ayuda (-h) similar a cualquier herramienta de línea de comandos:

root@hal9000:/usr/local/pyvmomi-community-samples/samples # ./list_datastore_info.py
usage: list_datastore_info.py [-h] -s HOST [-o PORT] -u USER -p PASSWORD [-j]
                              [-S]
list_datastore_info.py: error: argument -s/--host is required

Este script en particular permite listar todos los datastores junto con información adicional de cada uno de ellos:

root@hal9000:/usr/local/pyvmomi-community-samples/samples # ./list_datastore_info.py -s 192.168.35.7 -u usr_readonly -p trustno1 -S | head -n 10
ESXi Host:      192.168.35.12

Datastore:      ds-local-12
UUID:           saraza-coso-1234
Capacity:       62.8GB
VMFS Version:   5.54
Is Local VMFS:  False
SSD:            False
Extent[0]:      naa.xxxx

¿Cuál es el objetivo de empezar a trabajar con pyVmomi? Desarrollar mis propios scripts para gestionar vCenter de manera programática, generar reportes personalizados automáticamente, y muchas cosas más...

Referencias


Tal vez pueda interesarte


Compartí este artículo