Crear Una VM en Xenserver

Objetivo

Levantar una VM en Xenserver usando solo linea de comandos.

Requisitos

Instrucciones 

Acceso de linea de comando a Xenserver y que ya este configurado el almacenamiento de imágenes ISO que contenga la imagen del disco de instalación del sistema que se desea instalar.

Vamos a crear una nueva maquina virtual con Ubuntu. Sin embargo el procedimiento funcionara para cualquier sistema operativo soportado por Xenserver, lo que significa que tal vez exista una plantilla con el sistema operativo a instalar dentro de Xenserver. Lo primero que haremos sera buscar dicha plantilla.

En este caso buscaremos Ubuntu 16.04:

# xe template-list | grep name-label | grep -i 16.04
          name-label ( RW): Ubuntu Xenial Xerus 16.04

Luego, creamos la maquina virtual usando el nombre de la plantilla:

# xe vm-install template="Ubuntu Xenial Xerus 16.04" new-name-label="Ubuntu 16.04.1 Desktop amd64"
784b1b7f-0c13-4e9a-9d06-6a3edd9c90c2

Guardamos el UUID y un nombre para la VM en una variable de entorno para usarlas luego. Usar variables de entorno en estos comandos los hace mas fáciles de leer y entendibles.

# UUID=784b1b7f-0c13-4e9a-9d06-6a3edd9c90c2
# NAME="Ubuntu 16.04.1 Desktop amd64"

Luego, usar cd-list para ver el listado de todas la imágenes disponibles y almacenar la imagen ISO que usaremos en una variable, ejm.:

# xe cd-list
# ISO="ubuntu-16.04.1-desktop-amd64.iso"

Ahora hay que conectarla a una red. listamos las redes de Xenserver y almacenamos el UUID a la que deseamos conectar la VM:

# xe network-list
uuid ( RO)                : 23e21c78-dfa0-e6f4-9dcd-73da08870fe8                                                                                                                                                      
          name-label ( RW): Host internal management network
    name-description ( RW): Network on which guests will be assigned a private link-local IP address which can be used to talk XenAPI
              bridge ( RO): xenapi


uuid ( RO)                : ae1299a0-c0db-bf00-7702-7e4ab09e1abd
          name-label ( RW): Pool-wide network associated with eth0
    name-description ( RW): 
              bridge ( RO): xenbr0

Almacenamos el UUID:

# NETWORK=ae1299a0-c0db-bf00-7702-7e4ab09e1abd

Opcionalmente podemos especificar una dirección MAC para la interfaz de red de la VM. almacenamos la dirección MAC en una variable:

# MAC="4a:4d:42:ac:b3:7b"

Obtenemos el UUID del disco virtual el cual luego podemos actual su tamaño:

# xe vm-disk-list vm="$NAME"
Disk 0 VBD:
uuid ( RO)             : 01ff5ffe-bde2-becc-ada1-9d1289e017a2
    vm-name-label ( RO): Ubuntu 16.04.1 Desktop amd64
       userdevice ( RW): 0


Disk 0 VDI:
uuid ( RO)             : 5eac954c-d6ce-4e0d-91de-85f9bd70123b
       name-label ( RW): 0
    sr-name-label ( RO): Local storage
     virtual-size ( RO): 10737418240

Almacenar el UUID del VDI:

# VDI=5eac954c-d6ce-4e0d-91de-85f9bd70123b

Configurar la Maquina Virtual

Ahora que tenemos toda la información necesaria, es el momento de configura la nueva VM. Primero añadir la imagen ISO como un nuevo dispositivo a la VM y hacer que la maquina virtual inicie desde la ISO:

# xe vm-cd-add uuid=$UUID  cd-name=$ISO device=1
# xe vm-param-set HVM-boot-policy="BIOS order" uuid=$UUID

Crear la interfaz de red. Sino se incluye la MAC como opción en el comando. la dirección MAC se generara automáticamente:

# xe vif-create vm-uuid=$UUID network-uuid=$NETWORK mac=$MAC device=0
b5177fa9-81a2-3233-99c6-e545854dce8c

Especificar la cantidad de RAM que sera usada por la maquina virtual. Puede modificar el comando con la cantidad de RAM que se ajuste a sus necesidades:

# xe vm-memory-limits-set dynamic-max=4000MiB dynamic-min=512MiB static-max=4000MiB static-min=512MiB uuid=$UUID

Por ultimo, actualizar el tamaño del disco virtual. En este caso el tamaño sera de 15GB:

# xe vdi-resize uuid=$VDI disk-size=15GiB

Lo anterior son algunas de las configuraciones básicas requeridas para iniciar la nueva maquina virtual. También puedes considerar actualizar el numero de procesadores a usar, sin embargo puedes hacerlo en cualquier momento luego de la instalación de OS.

Iniciar la Maquina Virtual

Ahora estamos listo para iniciar la maquina virtual:

# xe vm-start uuid=$UUID

Conectar a el instalador de la VM

En esta etapa usaremos un cliente VNC para conectar con la nueva maquina virtual. Primero necesitamos obtener el numero de puerto al cual conectarnos:

# DOMID=`list_domains | grep $UUID | awk '{ print $1 }'`
# xenstore-read /local/domain/$DOMID/console/vnc-port
5901

El comando anterior nos da como resultado el puerto al que vamos a conectarnos en este caso es el 5901 para ellos usamos el siguiente comando:

$ vncviewer -via [email protected]_IP localhost:5901