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:
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
- vmware/pyvmomi - VMware vSphere API Python Bindings
- pyvmomi-community-samples - Getting Started
- vSphere Management SDK Documentation
- VMware vSphere API Reference