VMware ha sido durante mucho tiempo pionero y referente de la virtualización, ya sea en la industria de estaciones de trabajo con VMware Workstation o en entornos de servidor con VMware ESXi Server. Desde la adquisición de Broadcom, las nuevas políticas implementadas, como la eliminación de las licencias permanentes y el aumento del coste de las suscripciones basado en el número de núcleos de CPU, las organizaciones están reevaluando su infraestructura y las soluciones que la componen. En esta búsqueda de soluciones alternativas, OpenStack aparece como una opción estratégica y altamente competitiva para empresas de todos los tamaños.

En comparación con VMware ESXi Server, OpenStack ofrece muchas ventajas:

  • Mayor flexibilidad de software y hardware
  • Reducción significativa de los costes (especialmente en las licencias de software)
  • Sin vendor lock-in (solución open source con estándares técnicos abiertos)
  • Interoperabilidad garantizada

Ahora vayamos al grano: cómo migrar una (o más) máquinas virtuales que utilizan la tecnología VMware ESXI Server a las infraestructuras OpenStack.

1. Requisito técnico

  • Una instancia en la infraestructura OpenStack de destino con un sistema operativo Rocky Linux o equivalente que se denominará en este artículo «Aplicación de migración». Durante las migraciones, esta instancia se usará como «montacargas» y necesita tener acceso directo a los volúmenes de destino de las máquinas virtuales que vamos a migrar. Personalmente, usaré el Public Cloud de Infomaniak, que es extremadamente competitivo frente a los servicios de AWS, GCP o Azure.
  • Un acceso SSH (solo puerto 22) a los servidores ESXi desde la aplicación de migración (ya sea por nombre de usuario y contraseña o por clave SSH).
  • Todas las acciones realizadas en este artículo deben realizarse con el usuario root

💡 Dos precisiones más importantes antes de pasar a la práctica:

  • Este procedimiento es sólo válido para VMware ESXi y no para vSphere. Al explorar la documentación de las soluciones utilizadas en este artículo, podrás adaptarla fácilmente cuando sea necesario.
  • Haz una copia de seguridad de tus máquinas virtuales antes del proceso de migración, ¡no quiero ser responsable de tus noches en vela si algo sale mal!

¡Eso es todo! Ahora pasemos a la configuración de nuestra aplicación de migración 🚀

2. Instalación de la aplicación de migración

Para que nuestra aplicación de migración sea funcional, necesitamos instalar algunos paquetes una vez que nos conectemos en SSH:

dnf install centos-release-openstack-caracal
dnf install python-openstackclient virt-v2v

3. Autenticación y conexión

Tenemos dos cosas que hacer antes de poder iniciar nuestra primera migración, para que nuestra aplicación de migración pueda conectarse a nuestro servidor ESXi y a nuestra plataforma OpenStack:

  • Para la autenticación en el servidor ESXi, hay dos soluciones posibles: por par de claves o con el nombre de usuario y la contraseña.
  • Para la autenticación con la plataforma OpenStack, habrá que recuperar el archivo de perfil openrc y enviarlo a nuestra aplicación de migración.

3.1 Autenticación con el servidor ESXi

Asumo que las reglas de firewall entre tu instancia de OpenStack y tu servidor ESXi están configuradas y funcionan, y que el servicio SSH está activado en el servidor ESXi.

Para aquellos que no desean implementar la autenticación de pares de claves, os invito a pasar directamente a la siguiente sección sobre la autenticación con la plataforma OpenStack.

Ahora vamos a implementar nuestra autenticación con pares de claves. Nada complicado, vamos a ir a nuestra aplicación de migración y vamos a ejecutar los siguientes comandos:

  • Comenzamos generando nuestro par de claves (el par de claves usa RSA para maximizar la compatibilidad con versiones anteriores de ESXi):ssh-keygen -t rsa -b 4096
  • Una vez que se haya generado tu par de claves, lo implementaremos en nuestro servidor ESXi :ssh-copy-id root@IP_SERVEUR_ESXIEste comando te pedirá que introduzcas la contraseña root de tu servidor de virtualización y copiará tu clave pública en él. De esta manera, ya no tendrás que introducir una contraseña para conectarte a tu servidor.

Dejo que compruebes que todo ha ido bien: conéctate a tu servidor ESXi directamente desde la aplicación de migración.

Para aquellos que quieran usar la autenticación con nombre de usuario y contraseña, solo tendrán que crear un archivo de texto que contenga la contraseña de su servidor ESXi en la aplicación de migración:

touch passwordfile
echo 'MOT_DE_PASSE_ESXI' > passwordfile

Por supuesto, te dejo que compruebes que la información de conexión funciona: conéctate a tu servidor ESXi.

3.2 Autenticación con la plataforma OpenStack

Solo tenemos que autenticar nuestra aplicación con la plataforma OpenStack. Para ello, debes enviar a tu instancia el archivo de perfil openrc que recuperaremos en el cuadro de mando de Horizon antes de ejecutarlo.

Para confirmar que estás autenticado en la plataforma OpenStack, puedes ejecutar el siguiente comando:

OpenStack token issue
Deberías haber recibido un mensaje como el que figura más arriba. Si es así, es que todo está bien, felicidades 🙌

4. Lanzar las migraciones de máquinas virtuales

Para realizar las migraciones de nuestras máquinas virtuales, vamos a usar la utilidad virt-v2v desarrollada por RedHat que está pensada específicamente para este tipo de casos y que ya incluye todas las funciones y opciones necesarias. Sin entrar en detalles, virt-v2v creará un nuevo volumen en el proyecto OpenStack donde se encuentra tu aplicación de migración para copiar íntegramente tu máquina virtual ESXi. Una vez copiados los datos, virt-v2v preparará el volumen para que pueda iniciarse en un OpenStack.

Un último punto importante antes de comenzar (lo prometo, será el último 🙈): las máquinas virtuales a migrar deben estar apagadas. Deberás también verificar tus cuotas de volumen en la plataforma OpenStack para no quedar bloqueado durante la migración.

Ya está ¡allá que vamos! 😎

Este es el comando que nos permitirá migrar nuestras máquinas virtuales. ¡Asegúrate de adaptarlo a tu información!

Con autenticación con pares de claves

virt-v2v -i vmx -it ssh ssh://root@IP_SERVEUR_ESXI/vmfs/volumes/NOM_DATASTORE/NOM_DE_VM/NOM_DE_VM.vmx -o openstack -oo server-id=ID_INSTANCE_OPENSTACK

Con autenticación con nombre de usuario y contraseña

virt-v2v -i vmx -it ssh -ip FICHIER_MOT_DE_PASSE ssh://root@IP_SERVEUR_ESXI/vmfs/volumes/NOM_DATASTORE/NOM_DE_VM/NOM_DE_VM.vmx -o openstack -oo server-id=ID_INSTANCE_OPENSTACK

5. Ejecutar las máquinas virtuales migradas

Una vez completada la migración, todo lo que queda es reiniciar nuestra instancia a través de la función boot from volume de OpenStack. Esta función permite usar directamente un volumen bootable para una instancia en lugar de usar una imagen que se inyecta en un nuevo volumen.

Para empezar, vamos a recuperar el ID del volumen que se creó para nuestra migración. Así que comenzamos con una lista de los volúmenes de nuestro proyecto OpenStack:

Openstack volume list

En la lista de volúmenes devueltos, debería ver uno con el nombre de tu máquina virtual seguido de -sda (o sdb, sdc… si tu máquina virtual tiene más de un disco). Este volumen es el que contiene lo que nos interesa.

Copie el identificador (columna ID en el resultado del comando anterior) y luego escribe el siguiente comando:

openstack server create --flavor a2-ram4-disk0 –volume --network ext-net1

Ya está, tu instancia se está iniciando 😊 Puedes comprobar que todo funciona correctamente a través de la consola de VNC introduciendo la URL devuelta por el siguiente comando en tu navegador:

openstack console url show

También puedes conectarte con el protocolo habitual (SSH, RDP…) teniendo cuidado de tener abiertos los puertos necesarios en tu grupo de seguridad.

6. Especificidad con el Public Cloud de Infomaniak

Hay una pequeña especificidad con Infomaniak Public Cloud para que el volumen que acabamos de crear funcione. Al crear nuestro volumen, virt-v2v añade metadatos automáticamente a nuestro volumen. Estos especifican cómo configurar la máquina virtual que usará nuestro volumen en el hipervisor, pero algunos no son compatibles con todas las regiones de la plataforma (región dc3-a).

Para corregir esto, simplemente elimina la propiedad que actualmente no es compatible con la plataforma. La propiedad en cuestión es hw_machine_type=q35. Por lo tanto, vamos a eliminar la propiedad de nuestro volumen con el siguiente comando:

Openstack volume unset --image-property hw_machine_type

Una vez hecho esto, puedes iniciar tu instancia como se describió anteriormente con la función boot from volume de la plataforma.

Más información


Kevin Allioli es Arquitecto Cloud & System en Infomaniak y Experto OpenStack y AWS. Con más de 10 años de experiencia en cloud computing, contribuye al desarrollo de el Public Cloud de Infomaniak.