Una de las acciones más repetitivas que se realizan en Proxmox VE es la creación de máquinas virtuales. Cada vez que se crea una VM hay que definir sus parámetros generales, el sistema operativo que se quiere instalar, el tamaño y tipo del disco que tendrán, el número de CPU y memoria RAM que se asignará, la dirección IP, etc.

La creación de una plantilla permite simplificar este proceso preparando una máquina virtual con unas determinadas características que después se marcará como read only y se podrá clonar tantas veces como se desee.

Para crear esta plantilla se utilizará una imagen oficial de Ubuntu Cloud, concretamente una Ubuntu Minimal 24.04 LTS (Noble Numbat), que se desplegará utilizando cloud-init para inicializar el usuario y la configuración de red.

Nota: En esta ocasión se utilizará la shell para crear esta plantilla aunque, tal como expliqué al crear la plantilla de Ubuntu Minimal 22.04 LTS, también se puede realizar desde la interfaz gráfica.

1. Crear una máquina virtual

  • Expandir el centro de datos (Datacenter)
  • Seleccionar el servidor (node): pve
  • Seleccionar la opción Shell
  • Ejecutar el siguiente comando:
qm create 702 --name ubuntu-2404-bios \
--ostype=l26 \
--scsihw virtio-scsi-single --agent enabled=1 \
--cpu x86-64-v2-AES \
--memory 1024 \
--net0 virtio,bridge=vmbr0,firewall=1 \
-ide2 none,media=cdrom

Nota: El comando anterior crea una VM usando el tipo de máquina i440fx y la BIOS SeaBIOS. Si se requiere UEFI o PCIe passthrough es mejor crearla usando q35 y OVMF (UEFI).

qm create 702 --name ubuntu-2404-uefi \
--machine q35 \
--bios ovmf \
--ostype l26 \
--scsihw virtio-scsi-single --agent enabled=1 \
--cpu x86-64-v2-AES \
--memory 1024 \
--net0 virtio,bridge=vmbr0,firewall=1 \
--ide2 none,media=cdrom

2. Configurar las opciones de cloud-init

  • Ejecutar el siguiente comando:
qm set 702 --ciuser manel \
--cipassword P@ssw0rd! \
--sshkeys id_edcsa.pub \
--ipconfig0 ip=dhcp

3. Añadir una unidad de cloud-init

  • Ejecutar el siguiente comando:
qm set 702 --ide0 local-lvm:cloudinit

4. Configurar la consola de la VM

  • Ejecutar el siguiente comando:
qm set 702 --serial0 socket \
--vga serial0

5. Descargar la cloud image de Ubuntu

  • Ejecutar el siguiente comando:
wget https://cloud-images.ubuntu.com/minimal/releases/noble/release/ubuntu-24.04-minimal-cloudimg-amd64.img

6. Cambiar el tamaño de la cloud image

  • Ejecutar el siguiente comando:
qemu-img resize ubuntu-24.04-minimal-cloudimg-amd64.img 8G

7. Importar la cloud image a un disco

  • Ejecutar el siguiente comando:
qm importdisk 702 ubuntu-24.04-minimal-cloudimg-amd64.img local-lvm

8. Configurar el disco scsi0

  • Ejecutar el siguiente comando:
qm set 702 --scsi0 local-lvm:vm-702-disk-0,discard=on,iothread=1,ssd=1

9. Cambiar el orden de arranque

  • Ejecutar el siguiente comando:
qm set 702 --boot "order=ide2;scsi0;net0"

10. Instalar qemu-guest-agent

  • Ejecutar el siguiente comando para poner en marcha la VM:
qm start 702
  • Acceder a la Console de la VM
  • Iniciar sesión con el usuario manel y la contraseña configurada anteriormente
  • Actualizar los repositorios, instalar qemu-guest-agent y borrar paquetes obsoletos:
sudo apt update
sudo apt install qemu-guest-agent -y
sudo apt autoremove
  • Apagar la VM:
sudo shutdown -h now

11. Convertir en plantilla

qm template 702

Crear una VM clonando la plantilla

  • Ejecutar el siguiente comando:
qm clone 702 102 --name ubuntu-test --full 1 --storage local-lvm

El proceso de clonación de una máquina virtual tarda unos pocos segundos.

Iniciar la máquina virtual

Una vez creada, se podrá poner en marcha y abrir una consola para ver el proceso de inicio:

qm start 102

Nota: Aunque se vea un prompt de login, no hay que entrar hasta que haya finalizado el aprovisionamiento del usuario y las claves SSH.

Cloud Init

Iniciar sesión mediante SSH

Si las claves SSH se han configurado correctamente, se podrá iniciar sesión sin necesidad de contraseña desde el usuario que generó las claves (en este ejemplo es manel) usando el comando:

ssh manel@<ip_vm>

Nota: La dirección IP asignada a la máquina virtual se puede consultar en la sección Summary de la VM gracias a tener instalado el agente de QEMU.

Historial de cambios

  • 2025-08-11: Documento inicial