Cómo crear un entorno de prueba para PowerCLI con govcsim

Un gran problema al que nos enfrentamos cuando realizamos cualquier tipo de desarrollo es el de tener una infraestructura de test contra la que probar nuestros avances (a no ser que tengamos ganas de hacer algún destrozo en una infraestructura productiva). En un desarrollo en PowerCLI puede resultar especialmente complicado puesto que deberemos disponer de servidores ESXi, vCenter y máquinas virtuales sobre las que testear, lo que nos supone una gran cantidad de recursos que no siempre es sencillo tener a mano. En la entrada de hoy vengo a presentaros govcsim (vCenter Server Simulator), un desarrollo que nos permitirá crear un entorno de prueba para PowerCLI muy liviano y portable.

Cómo crear un entorno de prueba para PowerCLI con govcsim

¿Qué es govcsim (vCenter Server Simulator)?

vCenter Server Simulator (govcsim) es un simulador open source de la API de vCenter y ESXi desarrollado en Go utilizando la librería govmomi. Lo que nos ofrece govcsim es un entorno vCenter/ESXi totalmente funcional sobre el que desarrollar nuestros scripts de PowerCLI sin la necesidad de desplegar todos los elementos citados en la introducción.

En este simulador encontraremos desde el primer momento los elementos típicos que componen dichas infraestructuras: datacenter, hosts, cluster, resource pools, redes y datastore. Podemos utilizar estos elementos para realizar todo tipo de operaciones que necesitemos como:

  • Desarrollar nuevos proyectos en PowerCLI u otro lenguaje que ataque contra la API de vSphere.
  • Realizar tests de nuestros desarrollos.
  • Probar desarrollos de terceros en un entorno seguro.
  • Aprender a utilizar PowerCLI de forma segura.

Cómo instalar vCenter Server Simulator

La forma más sencilla para instalar govcsim es utilizando un contenedor docker con la aplicación ya instalada. Gracias a ello podremos tener nuestro entorno de desarrollo en cualquier plataforma y de forma muy sencilla.

En esta entrada me centraré en el uso de govcsim mediante Docker Desktop for Windows, la forma más “nativa” de tener el entorno corriendo en sistemas Windows. Si no lo tienes instalado puedes seguir estas sencillas instrucciones.

Una vez tengamos nuestra plataforma Docker corriendo ejecutaremos el siguiente comando que ejecutará nuestro contenedor:

docker run --rm -d -p 443:443/tcp nimmis/vcsim:latest

Vamos a desgranar la línea:

  • docker run: Ejecutamos el contenedor.
  • –rm: Eliminamos el contenedor después de pararlo. (Esto es opcional pero nos ayudará a tener un entorno limpio cada vez que ejecutemos el contenedor)
  • -d: Ejecutamos el contenedor en modo “detached”, es decir, que corra en background.
  • -p 443:443/tcp: Exponemos el puerto 443TCP del host de docker al contenedor.
  • nimmis/vcsim:latest: Utilizamos la última versión de la imagen nimmis/vcsim para crear nuestro contenedor.

Una vez ejecutado el comando, si es nuestra primera vez, deberíamos ver algo parecido a la siguiente captura, en la que antes de ejecutar el contenedor descargamos la imagen:

Descarga contenedor govcsim

Con la ejecución del comando completada ya podemos ejecutar docker ps para ver que nuestro contenedor está corriendo en background:

docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
141543f1548c nimmis/vcsim:latest "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 0.0.0.0:443->443/tcp gallant_rosalind

Utilizando nuestro entorno de prueba para PowerCLI

Antes de comenzar a utilizar nuestro contenedor debemos saber la IP de nuestro servidor docker. En nuestra instalación de Docker Desktop for Windows la forma más fácil de hacerlo es, como no, con PowerShell:

(Get-NetIPAddress -InterfaceAlias *docker* -AddressFamily IPv4).IPAddress

10.0.75.1

Con esto ya lo tenemos todo para conectarnos a nuestro flamante vCenter simulado:

Conectara govcsim con PowerCLI

Como podemos ver las credenciales por defecto de govcsim son:

  • Usuario: u
  • Password: p

Si investigamos un poco lo que nos ofrece este vCenter simulado veremos que tenemos todo lo que podamos imaginar de un vCenter normal:

Recursos govcsim

Y podemos realizar acciones que afecten al estado del “servidor” como parar una máquina virtual:

Apagar VM de govcsim

O poner un “nodo” en mantenimiento:

Nodo en mantenimiento govcsim

Conclusión

Desarrollar y testear nuestros scripts directamente contra una infraestructura VMware productiva nunca es una buena idea, por lo que os recomiendo muchísimo que le deis una oportunidad a vCenter Server Simulator, y generéis vuestro entorno de prueba para PowerCLI desde ya. Es sin duda la manera más segura de desarrollar en PowerCLI y con la que seguro que os ahorraréis más de un disgusto.

¡Nos vemos en la próxima!

Deja un comentario