Cómo administrar y acceder a la información de un servidor de virtualización VMware ESXi o a un clúster de servidores VMware ESXi con VMware vCenter Server. Mostramos cómo realizar tareas habituales (encender, apagar, reiniciar, resetear, snapshot, cambiar nombre, etc) a máquinas virtuales mediante VMware vSphere PowerCLI y una aplicación completa en C# C Sharp para ejemplo de uso de VMware VIX API, con el código fuente incluido: AjpdSoft Gestión VMware ESXi y vCenter.

Videotutorial AjpdSoft Acceso VMware ESXi y vCenter en funcionamiento

AjpdSoft Gestión VMware ESXi y vCenter, aplicación desarrollada en Visual Studio .NET 2013 (C# CSharp) con código fuente incluido 100% open source totalmente gratuito.

AjpdSoft Gestión VMware ESXi y vCenter permite acceder a servidores de virtualización ESXi y clúster de servidores ESXi con VMware vCenter y permite obtener las máquinas virtuales (aplicando filtros) con sus datos básicos: nombre, poweredstate, tiempo inicio, estado, vRAM, vCPU, vCores, estado Vmware Tools, hostname, IP, sistema operativo, UUID, path, ficheros, alarmas, anotaciones, número de discos, etc. La aplicación también permite (si disponemos de la licencia de VMware ESXi apropiada) realizar acciones sobre las máquinas virtuales: encender, apagar, pausar, snapshot de máquina virtual, apagar, reiniciar el sistema operativo, instalar VMware Tools, montar y desmontar CD VMware Tools, cambiar nombre de máquina virtual, exportar resultados a CSV.

A continuación mostramos un videotutorial sobre el uso y funcionamiento de AjpdSoft Gestión VMware ESXi y vCenter:

Requisitos para usar VMware PowerCLI y VIX API con C# C Sharp

En este tutorial explicaremos paso a paso cómo usar VMware vSphere PowerCLI para acceder a servidores VMware ESXi y VMware vCenter Server. A continuación detallamos los requisitos para poder usar esta aplicación:

  • Un equipo cliente con sistema operativo Microsoft Windows 7, Windows 8, Windows 10 con acceso a la misma red que los servidores de virtualización ESXi.
  • Servidor de virtualización VMware ESXi o bien grupo de servidores de virtualización en clúster con VMware vCenter ServerInstalar VMware ESXi 5.

Descarga e instalación de VMware vSphere PowerCLI y VIX API

En primer lugar descargaremos el software gratuito VMware vSphere PowerCLI, que nos permitirá acceder a un servidor VMware ESXi o un clúster de servidores VMware vCenter Server, con esta herramienta de la línea de comandos podremos realizar cualquier acción sobre una máquina virtual: encenderla, detenerla, reiniciarla, crear un snapshot, etc. y podremos obtener datos de las las máquinas virtuales: snapshot, listado de máquinas virtuales, sistema operativo, IP, vRAM y vCPU asignadas, etc.

Para descargar VMware PowerCLI accederemos a la web oficial de VMware, necesitaremos ser usuario registrado de VMware (es gratuito). Accederemos a la URL correspondiente para la descarga de VMware vShere PowerCLI:

https://www.vmware.com/support/developer/PowerCLI

Descarga e instalación de VMware vSphere PowerCLI y VIX API

En nuestro caso descargaremos VMware vSphere PowerCLI 5.5.0, pulsaremos en «Download Now»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Leeremos los términos de licencia para VMware vSphere Software Developmen Kit (SDK), si estamos de acuerdo marcaremos «I agree to the terms and conditions outlined in the End User License Agreement» y pulsaremos «Accept»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Descargaremos el fichero «VMware-PowerCLI-5.5.0-1295336.exe»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Una vez descargado el fichero lo ejecutaremos para iniciar la instalación de VMware vSphere Software Development Kit SDK (vSphere PowerCLI y VIX API):

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Pulsaremos en «Ejecutar»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

El asistente para instalar VMware vSphere PowerCLI nos indicará que se requieren los componentes VMware Remote Console Plug-in 5.1 y VMware VIX 1.12.1, pulsaremos «Install» para instalarlos:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Se iniciará el asistente para instalar VMware Remote Console Plug-in, pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Pulsaremos «Install»

Descarga e instalación de VMware vSphere PowerCLI y VIX API

La instalación de VMware Remote Console Plug-in concluirá, pulsaremos «Finish»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Se iniciará ahora la instalación de VMware VIX API, pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Leeremos los términos de licencia para VMware Software Development Kit (SDK), para Vmware VIX Application Programming Interface (VIX API), si estamos de acuerdo marcaremos «I accept the terms in the license agreement» y pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Indicaremos la carpeta donde se instalará VMware VIX API, pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Pulsaremos «Install»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

La instalación de VMware VIX API concluirá, pulsaremos «Finish»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

A continuación el asistente para instalar VMware vSphere PowerCLI nos indicará que se requiere una política de ejecución «RemoteSigned» para poder usar PowerCLI, posteriormente indicaremos cómo habilitarla, pulsaremos «Continue»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Con el texto: The PowerShell execution policy of this computer is not set to «RemoteSigned». This prevents execution of PowerShell scripts on your computer and will result in error when VMware vSphere PowerCLI is invoked. It is recommended that you set the execution policy to «RemoteSigned» in order to ve able to execute scripts. This can be done by invoking the command «Set-ExecutionPolicy RemoteSigned» from a PowerShell prompt. Press Continue to skip and continue install or Cancel to exit the installation.

Se iniciará el asistente para instalar VMware vSphere PowerCLI, pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Leeremos los términos de licencia de VMware vSphere PowerCLI, si estamos de acuerdo marcaremos «I accept the terms in the license agreement» y pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Se instalará vSphere PowerCLI y vCloud Director PowerCLI, pulsaremos «Next»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Pulsaremos «Install»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Tras la instalación, el asistente nos indicará que ha concluido satisfactoriamente, pulsaremos «Finish»:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

De esta sencilla forma ya tendremos disponibles las PowerCLI para administrar y consultar servidores VMware ESXi y VMware vCenter Server:

Descarga e instalación de VMware vSphere PowerCLI y VIX API

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Una vez instaladas las VMware vSphere PowerCLI (como indicamos aquí), pulsaremos en el botón Inicio de Windows, en la carpeta «VMware vSphere PowerCLI» ejecutaremos «VMware vSphere PowerCLI»:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

En el primer inicio de las shell de la línea de comandos de las PowerCLI nos indicará que debemos activar «RemoteSigned» para poder usarlas:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Con el texto: No se puede cargar el archivo c:/Program Files (x86)/VMware/Infrastructure/vSphere PowerCLI/Scripts/Initialize-PowerCLIEnvironment.ps1 porque en el sistema está deshabilitada la ejecución de scripts. Vea «get-help about_signing» para obtener más información. En línea: 1 Carácter 2. CategoryInfo; NotSpecified, PSSecurityException. FullQualifiedErrorId: RuntimeException.

Para activar RemoteSigned ejecutaremos el comando:

Nos avisará de que se va a cambiar una directiva de ejecución, introduciremos «s» y pulsaremos INTRO:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Con el texto: Cambio de directiva de ejecución. La directiva de ejecución le ayuda a protegerse de scripts en los que no confía. Si cambia dicha directiva podría exponerse a los riesgos de seguridad descritos en el tema de la Ayuda about_Execution_Policies. ¿Desea cambiar la directiva de ejecución?

Si la directiva se aplica correctamente se inciará el shel de comandos VMware vSphere PowerCLI:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Con el texto:

Welcome to the VMware vSphere PowerCLI.
Log in to a vCenter Server or ESX host: Connect-VIServer.
To find out what commands are available, type: Get-VICommand
To show searchable help for all PowerCLI commands: Get-PowerCLIHelp
Once you’ve connected, display all virtual machines: Get-VM
If you need more help, visit the PowerCLI community: Get-PowerCLICommunity

Lo primero que haremos será conectarnos a nuestro servidor VMware ESXi o bien a nuestro clúster de servidores VMware vCenter Server, para ello necesitaremos saber la IP de dicho servidor y un usuario y contraseña con permisos suficientes. El parámetro a ejecutar para establecer la conexión será:

Donde:

  • 192.168.1.101: será la IP de nuestro servidor VMware ESXi o la IP del servidor vCenter Server.
  • root: será el usuario con el que nos conectaremos al servidor de virtualización VMware.
  • xxx: será la contraseña del usuario anterior.

Si queremos usar el protocolo https y un puerto diferente, podremos ejecutar el comando:

Si todo es correcto el shell PowerCLI nos mostrará un mensaje indicando que se ha establecido la conexión con el servidor. Es posible que nos muestre alguna advertencia referente al certificado de seguridad:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

A partir de ahora podremos ejecutar comandos que serán lanzados contra el servidor ESXi o vCenter al que estemos conectados. Por ejemplo, para obtener todas las máquinas virtuales del servidor (tanto las iniciadas como las apagadas) ejecutaremos el comando:

Nos mostrará el nombre de la máquina virtual, el estado (PowerState), el número de vCPU asignados y la cantidad de vRAM asignada:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Podremos hacer filtros, por ejemplo para mostrar sólo las máquinas virtuales encendidas (con PowerState = PoweredOn) ejecutaremos:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para mostrar solo las máquinas virtuales apagadas:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Además de obtener datos también podremos interactuar con las máquinas virtuales. Por ejemplo, para iniciar una máquina virtual detenida ejecutaremos el comando:

El comando anterior iniciará la máquina virtual con nombre «Ubuntu 10»:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Nota importante: hay que tener en cuenta que las interacciones con las máquinas virtuales desde PowerCLI requieren de licencia en el servidor VMware ESXi, si tenemos licencia Free (gratuita) no podremos ejecutar comandos que realicen acciones sobre las máquinas virtuales (iniciarlas, pararlas, detenerlas, crear máquinas virtuales, eliminar máquinas virtuales, resetearlas, crear snapshot, eliminar snapshot, etc.). En caso de no disponer de la licencia adecuada en el servidor ESXi o vCenter al que estemos conectados, al ejecutar cualquier comando que la requiere mostrará el mensaje:

Fault.RestrictedVersion.summary.
CategoryInfo: NotSpecified, RestrictiveVersion
FullQualifiedErrorId: Client20_VMServiceImpl_StartVM_ViError,VMware.VimAutomation.ViCore.Cmdlets.Commands.StartVM

Para detener una máquina virtual ejecutaremos el comando:

Donde «XPDelphi» será el nombre de la máquina virtual a detener. Dependiendo de la acción puede que nos pida confirmación, de ser así introduciremos «s» y pulsaremos INTRO:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Otros ejemplos para obtener datos estadísticos, por ejemplo para obtener métricas de acceso a disco desde una fecha a una fecha, para una máquina virtual (por ejempo «SRVPROYECTOA», ejecutaremos el comando:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para métricas de memoria RAM:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para métricas de CPU:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para obtener todos los snapshot realizados a una máquina virtual ejecutaremos el comando:

Donde «SRVPROYECTOA» será la máquina virtual de la que mostraremos los snapshots realizados:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Si queremos desactivar los mensajes de aviso (warnings) al ejecutar determinados comandos ejecutaremos este otro comando:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Los resultados de la ejecución de comandos que devuelven datos se pueden formatear y personalizar. Por ejemplo, para mostrar los datos de los snapshot de una máquina virtual en forma de detalle ejecutaremos el comando:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para mostrar todos los snapshots de todas las máqunias virtuales del servidor al que estamos conectados, mostrando las columnas vm, name, iscurrent, sizegb:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para mostrar los snapshots de las máquinas virtuales de un Resource Pool determinado ejecutaremos el comando:

Donde «Uniland» será el nombre del Resource Pool.

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

También podremos guardar los resultados en un ficheor de texto. Por ejemplo, para guardar las máquinas virtuales del servidor al que estamos conectados en un fichero de texto ejecutaremos:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Nos guardará los datos en un fichero de texto plano:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Para guardar más datos de las máquinas virtuales (nombre, estado, vCPU, vRAM, espacio aprovisionado, espacio usado, notas, versión):

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Nos habrá guardado algo así en el fichero de salida:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

PowerCLI es una herramienta muy potente que nos permitirá realizar cualquier acción sobre un servidor VMware ESXi, sobre un grupo de servidores vCenter Server y sobre cualquiera de sus máquinas virtuales. Otro ejemplo, para eliminar un snapshot especificado de una máquina virtual determinada, sin que pida confirmación, ejecutaremos el siguiente comando PowerCLI:

El comando anterior eliminará el snapshot con descripción «Antes de Service Pack 2» de la máquina virtual «SRVCERCO»:

Cómo usar PowerCLI para obtener datos y realizar tareas en servidor VMware ESXi y vCenter Server

Cómo usar VMware VIX API para desarrollar aplicación Visual Studio .NET C# C Sharp para administrar ESXi y vCenter

VMware nos proporciona, junto con las VMware vSphere PowerCLI las VMware VIX API, que básicamente son los mismos comandos disponibles en las PowerCLI pero para plataformas .NET. Con VMware VIX API podremos desarrollar nuestras propias aplicaciones para gestión y administración de nuestros servidores VMware ESXi y VMware vCenter Server. A continuación mostraremos una aplicación completa con código fuente disponible (gratuito) como ejemplo de uso de VMware VIX API.

En primer lugar deberemos disponer de Microsoft Visual Studio .NET en alguna de sus versiones. A continuación mostramos alguinos tutoriales sobre cómo instalarlo y crear una aplicación con Visual Studio .NET:

Abriremos Microsoft Visual Studio .NET, en nuestro caso usaremos la versión 2013, y crearemos un nuevo proyecto C# C Sharp (el procedimiento será el mismo para Visual Basic VB.NET). En los tutoriales anteriores explicamos cómo crear un nuevo proyecto paso a paso.

Una vez creado el proyecto Visual Studio .Net (C#), agregaremos la referencia correspondiente a VMware VIX API. Para ello pulsaremos en el menú «PROYECTO» – «Agregar referencia»:

Cómo usar VMware VIX API para desarrollar aplicación Visual Studio .NET C# C Sharp para administrar ESXi y vCenter

Pulsaremos en «Examinar»:

Cómo usar VMware VIX API para desarrollar aplicación Visual Studio .NET C# C Sharp para administrar ESXi y vCenter

Accederemos a la carpeta de instalación de VMware VIX API, por defecto en:

C:/Archivos de programa (x86)/VMware/Infrastructure/vSphere PowerCLI

Y seleccionaremos la librería dll «VMware.Vim.dll», pulsaremos «Agregar»:

Cómo usar VMware VIX API para desarrollar aplicación Visual Studio .NET C# C Sharp para administrar ESXi y vCenter

Accederemos al código de nuestro formulario principal, donde usaremos VIX API, y añadiremos el using siguiente:

using VMware.Vim;

Cómo usar VMware VIX API para desarrollar aplicación Visual Studio .NET C# C Sharp para administrar ESXi y vCenter

A partir de ahora ya podremos usar VMware VIX API para gestionar y acceder a servidores VMware ESXi y VMware vCenter Server desde nuestra aplicación C# .NET. Como ejemplo hemos desarrollado una aplicación completa que permite obtener todas las máquinas virtuales (y realizar filtros) y muchos datos como: nombre máquina virtual, estado (PowerState), tiempo de inicio, estado conexión, vRAM, vCPU, cores por socket, estado VMware Tools, hostname, IP, sistema operativo , ruta ficheros MV, ID Guest, Uuid, WWN, anotaciones, número de discos, tamaño, ficheros que componen la MV, alarmas, etc.

Esta aplicación también permite realizar acciones sobre máquinas virtuales tales como: iniciar máquina virtual, apagar, pausar, resetear, reiniciar sistema operativo, apagar sistema operativo, actualizar VMware Tools, instalar VMware Tools, desmontar CD VMware Tools, cambiar nombre a máquina virtual, crear snapshot, etc.

Los componentes que usaremos para realizar la aplicación AjpdSoft Gestión VMware ESXi y vCenter:

Cómo usar VMware VIX API para desarrollar aplicación Visual Studio .NET C# C Sharp para administrar ESXi y vCenter

El enlace para descargar la aplicación completa con el código fuente en Visual C# .NET 2013:

La aplicación AjpdSoft Gestión VMware ESXi y vCenter en funcionamiento:

AjpdSoft Gestión VMware ESXi y vCenter

Anexo: listado código fuente completo de apliación de ejemplo VIX API en C Sharp

A continuación mostramos el código fuente (source code) completo de la aplicación AjpdSoft Gestión VMware ESXi y vCenter:

  • Formulario formAjpdSoftVMwareESX.cs:
  • GuardarConfiguracion.cs
  • CifrarAES.cs

Notas sobre la última versión de PowerCLI y algunos cambios en el código fuente para la conexión

En la última versión de las librerías de PowerCLI, las que se usan en este proyecto, hay que modificar la línea de código:

Por esta otra línea:

Dado que en esta última versión, VimClient ya no es una clase, es una interfaz, y por lo tanto no sirve la declaración anterior.

En caso de no hacer este cambio y de usar la versión 7.0 de las librerías de PowerCLI, en Visual Studio .Net C# se mostrará este error:

Error CS0144 No se puede crear una instancia de la interfaz o el tipo abstracto «VimClient»

Para la línea de código:

Además de esto, en el código fuente se han tenido que añadir unas líneas para ignorar los mensajes de error de certificado:

Quedando el código fuente de conexión como sigue:

Habiendo añadido las líneas:

En caso de no aplicar estos cambios, al conectar a un servidor VMware ESXi o clúster vCenter, podría mostrar el error:

No se pudo establecer una relación de confianza para el canal seguro SSL/TLS con la autoridad ‘192.168.1.100’.

Por otro lado, si la aplicación muestra un error como el siguiente al abrirse:

Error
Error al iniciar la aplicación:
No se puede cargar el archivo o ensamblado ‘VMware.Vim, Version=7.0.1.3060, Culture=neutral, PublicKeyToken=null’ ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Es debido a que falta alguna de las librerías DLL de PowerCLI necesarias, que son las siguientes (se incluyen en esta descarga):

  • VMware.Vim.dll
  • VMware.Binding.WsTrust.dll
  • VMware.Binding.Wcf.dll
  • InternalVimService50.Wcf.dll
  • InternalVimService70.Wcf.dll
  • InventoryService55.Wcf.dll
  • VimService.dll
  • Newtonsoft.Json.dll