Desplegar una plantilla OVF desde CLI con ovftool

El otro día hice un artículo sobre como desplegar plantillas OVA y OVF a través de vSphere Client en VMware. Esta técnica es totalmente válida pero nos hace depender de la sesión activa de vSphere Client durante todo el despliegue. Ante cualquier problema de conectividad de red o fallo en nuestra máquina el despliegue se parará y tendremos que volver a empezar.

Para solucionar este inconveniente en despliegues grandes podemos hacer uso de la herramienta ovftool que permite desplegar las plantillas OVF y OVA desde línea de comandos, tanto Windows como Linux y Mac OS X. De este modo podremos ejecutar la tarea en background y en un equipo remoto.

Lo primero que hacemos es descargar el bundle de instalación de la herramienta. Es necesario usuario y contraseña para iniciar sesión en el sitio web de VMware y descargarlo:

https://my.vmware.com/web/vmware/details?productId=352&downloadGroup=OVFTOOL350

En este caso instalamos el bundle en un sistema GNU/Linux de 64 bits así que descargo el archivo «VMware-ovftool-3.5.0-1274719-lin.x86_64.bundle».

Una vez descargado, lo instalamos ejecutando el bundle tal cual (con permisos de ejecución):

# chmod 755 VMware-ovftool-3.5.0-1274719-lin.x86_64.bundle
# ./VMware-ovftool-3.5.0-1274719-lin.x86_64.bundle

Installing VMware OVF Tool component for Linux 3.5.0
    Configuring...
[######################################################################] 100%
Installation was successful.

Una vez instalado verificamos que el comando «ovftool» está en el path y que podemos ejecutarlo sin problemas:

# ovftool --help
 Usage: ovftool [options] []
 where
 <source> : Source URL locator to an OVF package, VMX file, or virtual machine in
 vCenter or on ESX Server.
 <target> : Target URL locator which specifies either a file location, or a
 location in the vCenter inventory or on an ESX Server.
If is not specified, information about the source is displayed to the
 console.

Lo más básico para la ejecución del despliegue es indicar el origen (archivo OVF a desplegar) y el destino (ESXi o cluster de VMware sobre el que desplegar la plantilla). Luego conviene conocer ciertos parámetros como los que indico en el siguiente ejemplo de despliegue:

# ovftool --disableVerification \
--acceptAllEulas \
--noSSLVerify \
--network="VM Network" \
--datastore=vmware01 \
plantilla.ovf \
vi://root@ESXi_destino

Opening OVF source: plantilla.ovf
The manifest does validate
Enter login information for target vi://ESXi_destino/
Username: root
Password: ********
Opening VI target: vi://root@ESXi_destino:443/
Deploying to VI: vi://root@ESXi_destino:443/
Progress: 5%

Básicamente evitamos que aparezca un warning de que la conexión SSL no está verificada, aceptamos el Disclaimer de forma automática ya que no lo vamos a leer, indicamos la red sobre la que se configurará la máquina virtual final, el datastore donde se almacenará, la plantilla a desplegar y el ESXi de destino.

Si la plantilla no está en local sino directamente en el ESXi o en un datastore, podemos especificar la ruta completa del siguiente modo:

# ovftool --disableVerification \
--acceptAllEulas \
--noSSLVerify \
--network="VM Network" \
--datastore=vmware01 \
"https://ESXi_destino/folder/plantilla.ova?dcPath=ha%2ddatacenter&dsName=vmware01" \
vi://root@ESXi_destino

Como veis, podemos encontrar el path directo al archivo .OVA navegando por el ESXi a partir de:

https://ESXi_destino/folder/

Y de este modo ya hemos conseguido desplegar una plantilla a una máquina virtual desde CLI sin necesidad de disponer de acceso a vCenter o vSphere Client.