Plantillas de máquinas virtuales
Una plantilla de máquina virtual, o simplemente plantilla es una imagen preconfigurada de un sistema operativo que puede utilizarse para desplegar rápidamente máquinas virtuales. El uso de plantillas permite evitar muchas tareas repetitivas de instalación y configuración. El resultado es la creación de máquinas virtuales totalmente instaladas y listas para funcionar en menos tiempo de lo que tardaría una instalación manual.
En el apartado anterior hemos creado un clon de una máquina virtual, es decir, una copia de una máquina. Una plantilla es una copia maestra que podemos utilizar para crear muchos clones.
Una vez tengamos una plantilla, tendremos dos maneras de crear las nuevas máquinas:
- Clonación completa (Full): Creamos una copia completa de la máquina virtual que es totalmente independiente de la plantilla. Requiere el mismo espacio en disco que el original.
- Clonación enlazada (Linked): Utiliza la imagen de la plantilla como imagen base en modo de solo lectura y vincula una imagen adicional de “copia en escritura” para almacenar los nuevos datos generados. Requiere menos espacio en disco, pero no puede ejecutarse sin acceso a la imagen de plantilla base.
Creación de plantillas
Tendríamos que realizar los siguientes pasos:
-
Crear e instalar una nueva máquina virtual e instalarle todo el software necesario. A partir de esa máquina vamos a crear la plantilla.
-
Vamos a generalizar la imagen, es decir, vamos a eliminar toda la información que debería ser única en una máquina (el machine ID, claves SSH de host, hostname, logs y cachés,…). De tal forma, que las máquinas clonadas, regenerarán esta información de forma única al iniciarlas. En máquinas Linux vamos a usar la utilidad
virt-sysprep(es necesario instalar el paquetelibguestfs-tools), para máquinas Windows podemos usar los mecanismos propios de generalización que posee: sysprep.virt-syspreppuede trabajar con un fichero de imagen, usando la opción-a, pero en nuestro caso vamos a indicarle una máquina virtual, usando el parámetro-d.Vamos a suponer que vamos a convertir en plantilla nuestra máquina
debian12. Nuestra máquina original tiene que estar parada. Y para generalizarla, ejecutamos como superusuario:usuario@kvm:~$ sudo virt-sysprep -d debian12 --hostname plantilla-debian12 --firstboot-command "dpkg-reconfigure openssh-server"virt-syspreptienes muchas opciones de configuración, hemos usado el parámetro--hostnamepara cambiar el nombre de la máquina de la plantilla y--firstboot-commandpara ejecutar el comandodpkg-reconfigure openssh-servercuando se ejecute la máquina virtual y de esta manera regenere las claves SSH del host. -
Reducir el tamaño de la imagen con
virt-sparsify, compactamos la imagen (elimina bloques vacíos y reduce el tamaño en disco) y ahorramos espacio:usuario@kvm:~$ sudo virt-sparsify --compress /var/lib/libvirt/images/debian12.qcow2 /var/lib/libvirt/images/plantilla-debian12-comprimida.qcow2Y reemplazamos la imagen por la nueva comprimida:
usuario@kvm:~$ sudo mv /var/lib/libvirt/images/plantilla-debian12-comprimida.qcow2 /var/lib/libvirt/images/debian12.qcow2 -
Evitar ejecutar está máquina de nuevo, ya que la generalización que hemos hecho se perdería. Para conseguirlo vamos a configurar la imagen original de solo lectura, de esta manera al intentar ejecutar la plantilla nos dará un error. Para ello como superusuario:
usuario@kvm:~$ sudo chmod 444 /var/lib/libvirt/images/debian12.qcow2Además, vamos a cambiar el nombre a la máquina para recordar que es una plantilla:
usuario@kvm:~$ virsh domrename debian12 plantilla-debian12
En cualquier momento podemos cambiar la configuración de la plantilla. Todas las nuevas máquinas clonadas a partir de ella tendrán la misma configuración. Ya tenemos la plantilla lista para ser clonada. Lo veremos en los siguientes apartados.