Proxmox VE es una plataforma de virtualización de código abierto potente y fácil de usar que permite el despliegue y la gestión de máquinas virtuales (VM’s con KVM/QEMU) y contenedores (CT’s basados en LXC). Proxmox nos ofrece Plantillas para minimizar el tiempo de creación de nuevas instancias de estas máquinas virtuales o contendores.
En este apunte me concentro en cómo crear mi propia Plantillas de máquina virtual junto con una imagen basada en la nube y cloud-init.
Plantillas con imágenes basadas en la nube
¿Qué es una Plantilla de VM en Proxmox?, se trata de una VM normal y corriente que convertimos en “Plantilla” y a partir de ella podemos clonar nuevas VM’s idénticas rápidamente. Si las combinamos con imágenes basadas en la nube y cloud-init conseguimos un activo muy potente para crear VM’s ágiles y ligeras.
Las imágenes basadas en la nube (VM cloud based images) son muy útiles porque tienen un tamaño mínimo y permite hacer despliegues ágiles de máquinas virtuales. Podemos bajarnos estas imágenes y configurarlas como el “disco” de nuestra VM (se trata del sistema operativo completamente instalado). ¿Cuál es la diferencia?, pues que evitamosinstalar el Sistema Operativo, estas imágenes son el “disco” ya instalado.
cloud-init
es un estandar para la personalización de instancias en la cloud (o de instancias de nuestras VMs en nuestro Proxmox). Vamos a poder parametrizar el usuario, contraseña, claves SSH y otras lindezas para ahorrarnos trabajo.
Creación de una Plantilla (basada en Ubuntu)
Empezamos con la creación de la VM (desde una imagen basada en la nube), luego seguiremos con su parametrización, conversión a plantilla y a clonar…
- Me bajo la imagen de Ubuntu, desde sus imágenes basadas en la nube de Ubuntu.
$ curl -O https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64.img
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 285M 100 285M 0 0 70.1M 0 0:00:04 0:00:04 --:--:-- 70.2M
$ mv ubuntu-22.04-minimal-cloudimg-amd64.img ubuntu-22.04.img
- La subo a Proxmox, a un disco remoto NFS que tengo por ahí (QNAP).



![Parametrizo cloud-init y pulso en [Regenerate Image]](/img/posts/2023-04-07-proxmox-plantilla-vm-04.jpg)
| Importante: No te olvides de darle a Regenerate Image. La ventaja de cloud-init
es que me ahorro configurar varias cosas en las futuras VMs. |
- Sigo desde el CLI (vía SSH) en el nodo donde creé la VM. Importante a partir de ahora: Usa el mismo número de VM (ID) que usaste durante la creación (en mi caso el 900).
➜ ~ ssh root@pve-tierra.tudominio.com
Last login: Sat Apr 8 10:20:18 2023 from 192.168.100.3
root@pve-tierra:~#
- Asocio una consola serie de tipo VGA para poder ver la consola desde Proxmox.
# qm set 900 --serial0 socket --vga serial0
- Averiguo el Path de la imagen a importar
root@pve-tierra:~# pvesm list panoramix
Volid Format Type Size VMID
panoramix:iso/ubuntu-22.04-minimal-cloudimg-amd64.img iso iso 299827200
root@pve-tierra:~# pvesm path panoramix:iso/ubuntu-22.04-minimal-cloudimg-amd64.img
/mnt/pve/panoramix/template/iso/ubuntu-22.04-minimal-cloudimg-amd64.img
- Importo la imagen basada en la nube. El siguiente comando copia la imagen al storage de Proxmox y la configura como un disco disponible para la VM.
root@pve-tierra:~# qm importdisk 900 /mnt/pve/panoramix/template/iso/ubuntu-22.04-minimal-cloudimg-amd64.img local-zfs
importing disk '/mnt/pve/panoramix/template/iso/ubuntu-22.04-minimal-cloudimg-amd64.img' to VM 900 ...
:
transferred 2.2 GiB of 2.2 GiB (100.00%)
Successfully imported disk as 'unused0:local-zfs:vm-900-disk-0'





Creación de una Plantilla (basada en Debian)
- El proceso es exactamente el mismo pero usaremos una imagen distinta. En este caso selecciono una imagen basada en la nube de Debian 11 (Bulls Eye) en formato
.raw
, en concreto el fichero debian-11-genericcloud-amd64.raw. La versión que elijo es lagenericcloud
(la diferencia con lageneric
es que la primera excluye los drivers de hardware físico, que no necesito para nada). - Me bajo la imagen a mi iMac y la renombro a
.img
para poder subirla a mi NFS Server conectado a Proxmox
$ curl -O https://laotzu.ftp.acc.umu.se/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.raw
$ mv debian-11-genericcloud-amd64.raw debian-11-genericcloud-amd64.img
- Como decía el proceso es exactamente el mismo, teniendo cuidado de usar un VM ID, nombres y path’s (a la imagen) distintos.
Crear una nueva máquina virtual
Ya podemos crear todas las máquinas virtuales que queramos partiendo de la(s) Plantilla(s). Se realiza con la Función Clonar. Veamos un ejemplo con la de Ubuntu (para la de Debian es igual).
- Pulso con el botón derecho sobre la Plantilla, selecciono Clone, asigno el VM ID, su nombre y el modo de clonado (a mi me gusta hacer clonados completos). Cuando termina arranco la VM y hago click en Console para ver el proceso de arranque completo. Importante no tocar nada, no hacer Login hasta que termine la ejecución de cloud-init.


Referencias
- Imágenes basadas en la nube de Ubuntu: 22.04 LTS (Jammy Jellyfish): ubuntu-22.04-minimal-cloudimg-amd64.img. Se trata de la imagen utilizada en este apunte.
- Imágenes basadas en la nube de Debian: 11 (Bulls Eye): debian-11-genericcloud-amd64.raw. La versión
genericcloud
puede correr en cualquier entorno virtual y la diferencia con lageneric
es que excluye los drivers de hardware físico. - Un par de enlaces, un buen artículo aquí y un video interesante aquí.