XenServer: Plantillas – Templates

   Uno de los métodos para crear máquinas virtuales es el uso de templates (plantillas) creadas por los administradores de XenServer con los sistemas operativos y aplicaciones que sean necesarias para los usuarios de las máquinas virtuales. Esto permite un despliegue más rápido y consistente del entorno virtual.

MA icono manual(ACCEDE AQUÍ AL INDICE DEL MANUAL DE CITRIX XENSERVER)

 

CONTENIDO DE LA LECCION

  • Caso práctico
  • Las templates en XenServer
  • Uso de la utilidad sysprep en sistemas operativos Windows
  • Creación de una template con XenCenter
  • Creación de una plantilla con el comando xe
  • Creación de una plantilla con powershell
  • Despliegue de una máquina virtual a partir de una template con XenCenter
  • Despliegue de una máquina virtual a partir de una template con el comando xe

 

Caso práctico

   Nuestra empresa ficticia “L023 Formación” imparte en sus aulas cursos de variados temas IT. Los alumnos realizarán las prácticas sobre máquinas virtuales en ejecución dentro del entorno XenServer que se está implementando. Estas máquinas virtuales deben ser iguales para cada alumno del mismo curso. Para ello se creará una máquina virtual con el sistema operativo y las aplicaciones necesarias, y se utilizará como plantilla (template) para desplegar tantas máquinas virtuales exactamente iguales como fuesen necesarias. Esto es lo que se va a hacer en esta lección. Se creará una máquina virtual con Windows 8.1 Enterprise 32 bits instalado y actualizado y se convertirá en template, a partir de la cual se desplegarán las máquinas virtuales que utilizarán los alumnos.

 

   La template para Windows 8.1 se llamará W81ENT32B y las máquinas virtuales para cursos desplegadas a partir de ella se llamarán VIRT001, VIRT002,… Las máquinas virtuales VIRT001 a VIRT004 serán utilizadas por los alumnos del Aula 01 y desde la VITR005 a VIRT008 por los del Aula 02.

 

Las templates en XenServer

   En XenServer debemos distinguir entre las templates “por defecto” del sistema, que son las que hemos utilizado para desplegar máquinas virtuales hasta ahora (como por ejemplo las que hemos desplegado en la “lección 8: creación de máquinas virtuales”), y las creadas por el usuario. Las primeras son conjuntos de parámetros de XenServer optimizados para cada sistema operativo. No son plantillas con el sistema operativo instalado. Las segundas, las creadas por el usuario, normalmente son máquinas virtuales con un sistema operativo instalado, posteriormente convertidas en templates (veremos cómo se hace más adelante en este capítulo) que permiten un despliegue rápido de máquinas virtuales, configuradas a la medida y con la posibilidad de que también tengan todas las aplicaciones necesarias instaladas.

Uso de la utilidad sysprep en sistemas operativos Windows

   Si al generar una template de un sistema operativo Windows, se pretende que esta sea una imagen cuyo despliegue posterior genere IDs de instalación diferentes en cada máquina virtual generada, se debe ejecutar la utilidad sysprep en el sistema operativo invitado de la máquina virtual antes de convertirla en template. Esta utilidad elimina los datos específicos de la instalación de la máquina que se va a utilizar como plantilla. La utilidad sysprep, en los sistemas operativos de Microsoft más recientes, se encuentra en C:Windowssystem32sysprep. Esta utilidad también reactiva el período de activación de Windows.

   Si por el contrario no importa que todas las máquinas virtuales desplegadas a partir de la plantilla sean exactamente iguales (atención a las licencias del sistema operativo que se hayan adquirido), no sería necesario ejecutar sysprep.

   Para utilizar sysprep, se debe abrir una ventana de comandos cmd con privilegios de administrador y ejecutar C:Windowssystem32sysprepsysprep.exe.

 

En nuestro caso, elegimos los siguientes valores:

  • “Acción de limpieza del sistema”: “Iniciar la configuración rápida (OOBE) del sistema”
  • “Generalizar”: <marcado>
  • “Opciones de apagado”: “Apagar”

   Con estas opciones, al iniciar por primera vez las máquinas virtuales desplegadas con la template, aparecerán unos mínimos valores de configuración (aceptar la licencia, crear usuario,..), y se creará un ID de instalación nuevo (“Generalizar”).

Creación de una template con XenCenter

   Convertir una máquina virtual en template desde XenCenter es muy sencillo. Hemos creado una maquina virtual con Windows 8.1 Enterprise 32 bits a la que hemos llamado W81ENT32B. Sobre esta máquina hemos instalado todas las actualizaciones de Windows Update disponibles hasta la fecha y hemos ejecutado la utilidad sysprep tal y como se describe en el anterior apartado.

NOTA: recordemos que es necesario tener instalada la actualización de XenServer XS62ESP1 para obtener compatibilidad con máquinas virtuales Windows 8.1 y Windows Server 2012 R2.

   Para convertir esta máquina virtual en una template, en el panel izquierdo de XenServer la seleccionamos y con el botón derecho elegimos “Convert to Template…”. Se abrirá un cuadro de diálogo de advertencia en el que se avisa de que esta operación no se puede deshacer.

   Si hacemos clic en “Convert” la máquina virtual se convertirá en template instantáneamente. Si en la parte superior del panel izquierdo de XenCenter cambiamos la vista de los objetos a “Folder View” en el desplegable “Views”, se confirma que ya tenemos disponible la nueva template para Windows 8.1 en las plantillas personalizadas.

 

 

 

 

Creación de una plantilla con el comando xe

   Según la documentación de XenServer (XenServer 6.2 Administrator´s Guide, pg. 183), una template es esencialmente una máquina virtual con el parámetro “is-a-template” establecido a valor “true”. Para convertir una máquina virtual a template con el comando xe, por tanto, deberíamos ejecutar xe vm-param-set is-a-template=true uuid=<UUID>, donde uuid es el identificador de la máquina virtual que queramos convertir.

   Como ejemplo, vamos a convertir en template la máquina virtual W81ENT32B_1. Nos conectamos por ssh como root al servidor pool master l023xse01 y seguimos los siguientes pasos:

1.- Obtenemos el uuid de la máquina virtual W81ENT32B_1:

[root@l023xse01 ~]# xe vm-list name-label=W81ENT32B_1 params=name-label,uuid

Resultado:

uuid ( RO)          : 3f4930f9-e0ef-7df7-8680-e5f593ca4f89
name-label ( RW): W81ENT32B_1

2.- La convertimos en template:

[root@l023xse01 ~]# xe vm-param-set is-a-template=true uuid=3f4930f9-e0ef-7df7-8680-e5f593ca4f89

 

Creación de una plantilla con powershell

   De manera análoga al apartado anterior, si queremos cambiar el valor del parámetro “is-a-template” de una máquina virtual (por ejemplo, la W81ENT32B_2) a “true”, debemos seguir los siguientes pasos:

1.- Cargar el Snappin de XenServer en nuestra sesión powershell:

PS C:Usersgdrivia> Add-PSSnapin XenServerPSSnapIn

2.- Conectar como root al pool master:

PS C:Usersgdrivia> Connect-XenServer -server l023xse01

3.- Convertir la máquina virtual en template:

PS C:Usersgdrivia> Set-XenVM -Name W81ENT32B_2 -IsATemplate $True

 

Despliegue de una máquina virtual a partir de una template con XenCenter

   El procedimiento para desplegar máquinas virtuales a partir de una template en XenCenter es muy sencillo. Veamos los pasos:

1.- En XenCenter seleccionamos la template a utilizar en el panel izquierdo, y con el botón derecho del ratón elegimos la opción “New VM wizard…”. Esto abre el asistente “New VM”.

2.- Ventana “Select a VM Template”: elegimos la plantilla que queremos desplegar. En nuestro caso, W81ENT32B.

Clic en “Next”.

3.- Ventana “Name the new virtual machine”: se escribe el nombre y opcionalmente una descripción para la máquina virtual que estamos desplegando. Como nombre, en nuestro despliegue de la primera máquina virtual para cursos, escribimos “VIRT001”.

   Clic en “Next”.

4.- Ventana “Locate the operating system installation media”: podemos seleccionar “empty” ya que no nos hace falta ningún medio de instalación.

   Clic en “Next”.

5.- Ventana “Select a home server”: no seleccionamos ninguno de los del pool, de manera que la máquina virtual se iniciará en cualquiera de los servidores que disponga de suficientes recursos.

   Clic en “Next”.

6.- Ventana “Allocate processor and memory resources”: se deben establecer el número de CPUs virtuales y memoria RAM de los que dispondrá la máquina virtual.

   Clic en “Next”.

7.- Ventana “Configure storage for the new vm”: son opciones para el VDI del que dispondrá la máquina virtual. Tendrá un tamaño y un nombre iguales al de la plantilla. Conviene cambiar este último. Para ello, hacemos hacemos clic en el botón “Properties” y se abre la ventana “Edit Disk”. En el recuadro del valor para “Name” escribimos un nombre que esté relacionado con el nombre de la máquina virtual (por ejemplo). En nuestro caso escribimos “VIRT001_0”. Hacemos clic en “OK”.

   Clic en “Next”.

8.- Ventana “Configure networking on the new VM”: opciones de red para la máquina virtual que estamos desplegando. Se deben elegir los objetos Network a los que se conectará. Con esto se crean los objetos VIF (interfaces de red virtuales) de los que dispondrá la máquina virtual. En nuestro caso, las máquinas virtuales para los alumnos de Aula 01 se conectarán a la “Red Aula 01”. Si se quiere conectar a un objeto Network diferente, se puede eliminar la que aparece haciendo clic en “Delete” y elegir otro haciendo clic en “Add”.

   Clic en “Next”.

9.- Ventana “Ready to create the new virtual machine”: resumen de la configuración de la máquina virtual que se va a desplegar. Se revisa y se hace clic en “Create Now”.

   Una vez creada la máquina virtual, se podrá terminar el proceso de configuración de su sistema operativo a través de un pequeño número de pantallas (OOBE).

   En nuestro caso práctico, y del mismo modo, desplegaremos seis máquinas virtuales más (hasta la VIRT007).

 

Despliegue de una máquina virtual a partir de una template con el comando xe

   En este caso crearemos la máquina virtual VIRT008 haciendo uso de la misma template que en el apartado anterior mediante el comando xe.

   El procedimiento es parecido al del despliegue de una máquina virtual a partir de una de las plantillas predeterminadas de XenServer. Por ello, los pasos serán similares a los seguidos en la  “lección 8: creación de máquinas virtuales”, en el apartado “Creación de una máquina virtual Windows 8.1 con xe”.

   Los pasos para desplegar la nueva máquina virtual a partir de la template W81ENT32B son:

1.- Abrimos una sesión ssh como root en el host que sea pool master.

2.- Se crea la máquina virtual VIRT008 a partir de la template W81ENT32B:

[root@l023xse01 ~]# xe vm-install new-name-label=”VIRT008″ template=”W81ENT32B”

y como resultado obtenemos el uuid de la máquina virtual recién creada.

d063e057-5024-5efb-7782-3eaca8c4143b

3.- Se renombra el disco VDI. Debemos primero averiguar el uuid del disco VDI asociado a la nueva máquina virtual con el comando xe vm-disk-list:

[root@l023xse01 ~]# xe vm-disk-list vm=”VIRT008″

Resultado:

Disk 0 VBD:
uuid ( RO)             : a526bffb-b121-681e-c7f6-931ecb8f58ee
vm-name-label ( RO): VIRT008
userdevice ( RW): 0

Disk 0 VDI:
uuid ( RO)             : 2db479de-935c-413c-a32c-03b39f01d87e
name-label ( RW): W81ENT32B_0
sr-name-label ( RO): L023nas01_iscsi01
virtual-size ( RO): 53687091200

   Se cambia el nombre del VDI (siguiendo con la nomenclatura lo llamaremos “VIRT008_0”) con el comando xe vdi-param-set. Se necesita el uuid del VDI obtenido en el resultado del anterior comando.

[root@l023xse01 ~]# xe vdi-param-set name-label=”VIRT008_0″ name-description=”VDI de la template Windows 8.1 32 bits” uuid=2db479de-935c-413c-a32c-03b39f01d87e

4.- La máquina virtual VIRT008 va a corresponder a los alumnos del Aula 02. Por tanto, la conectaremos al switch virtual “Red Aula 02”. La template ya tiene una interfaz conectada a “Red Aula 01” que será necesario eliminar.

   Listamos los objetos VIF de la máquina virtual VIRT008:

[root@l023xse01 ~]# xe vif-list vm-uuid=d063e057-5024-5efb-7782-3eaca8c4143b

donde vm-uuid es el uuid de la máquina virtual VIRT008, que obtuvimos en el primer paso, al crear la máquina virtual.

Resultado:

uuid ( RO)            : 5fe96f30-ded9-b866-d32c-e08dc072f0a8
vm-uuid ( RO): d063e057-5024-5efb-7782-3eaca8c4143b
device ( RO): 0
network-uuid ( RO): 3e869df0-b21d-47c9-926d-9446b5b656c4

   Ahora, haciendo uso del uuid del objeto VIF existente, resultado del anterior comando, procedemos a eliminarlo:

[root@l023xse01 ~]# xe vif-destroy uuid=5fe96f30-ded9-b866-d32c-e08dc072f0a8

   Procedemos a crear el nuevo objeto VIF, conectándolo a “Red Aula 02”: primero obtenemos el uuid de dicho objeto Network con el comando xe network-list:

[root@l023xse01 ~]# xe network-list name-label=”Red Aula 02″ params=name-label,uuid

Resultado:

uuid ( RO)          : d80c9001-71ce-24e0-00cf-06ad34a55136
name-label ( RW): Red Aula 02

   Después se crea el objeto VIF (la interfaz de red virtual que se ofrece a la máquina virtual que estamos desplegando) con el comando xe vif-create:

[root@l023xse01 ~]# xe vif-create vm-uuid=d063e057-5024-5efb-7782-3eaca8c4143b device=0 network-uuid=d80c9001-71ce-24e0-00cf-06ad34a55136

Resultado:

565c4d43-538c-5c6b-834e-5fe0a8807b2d

5. Por último, iniciamos la máquina virtual y concluimos la instalación de su sistema operativo desde la consola en XenCenter.

xe vm-start vm=VIRT008

 

MA icono siguiente Siguiente: Lección 10 – XenServer: XenMotion