ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Virtualización (Proxmox / KVM)

Cómo crear una plantilla Cloud-Init en Proxmox VE y clonar VPS rápido

5 pasos 15 min de lectura 6 vistas 0
Contenido

Si aprovisiona VPS para clientes en un servidor dedicado con Proxmox VE, instalar cada invitado desde una ISO es lento y propenso a errores. Una plantilla cloud-init de Proxmox VE es mucho más eficiente: importe la imagen cloud oficial de Debian o Ubuntu, añada una unidad cloud-init, conviértala en plantilla y cada nuevo VPS será un clon más su IP, clave SSH y contraseña, entregado en menos de un minuto. Esta guía se aplica a Proxmox VE 7.x/8.x; ejecute todos los comandos como root en el host.

Los ejemplos usan el ID de plantilla 9000, el almacenamiento de VM local-lvm, el puente público vmbr0 y el rango de documentación 203.0.113.0/24. Sustitúyalos por el bloque de IPs y la puerta de enlace que IMIDC le haya asignado. Consulte la guía «Asignar IPs a VMs de Proxmox» para más información sobre el direccionamiento público.

Paso 1: Descargue la imagen cloud oficial de Debian / Ubuntu

Las imágenes cloud son discos de sistema mínimos que las distribuciones generan para plataformas en la nube, con cloud-init preinstalado para aplicar en el primer arranque el nombre de host, el usuario, las claves SSH y la red. Para Debian, use la versión genericcloud (pequeña y orientada a KVM); para Ubuntu, use server-cloudimg. De forma opcional, preinstale qemu-guest-agent con virt-customize para que Proxmox pueda leer las IPs del invitado y apagarlo correctamente.

cd /var/lib/vz/template/iso   # any directory with enough space
# Debian 12 (bookworm) generic cloud image
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
# Ubuntu 24.04 LTS (noble) cloud image
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

# optional: preinstall qemu-guest-agent into the image
apt install -y libguestfs-tools
virt-customize -a debian-12-genericcloud-amd64.qcow2 --install qemu-guest-agent

Paso 2: Cree la VM con qm create e importe la imagen cloud con importdisk

Cree una VM vacía sin disco, importe la imagen cloud como su disco y, a continuación, conéctelo como scsi0 y establézcalo como dispositivo de arranque. Proxmox convierte la imagen al formato del almacenamiento de destino durante la importación.

qm create 9000 --name debian12-cloudinit --memory 2048 --cores 2 \
  --cpu host --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --ostype l26

# import the image as a disk of VM 9000 on storage local-lvm
qm importdisk 9000 debian-12-genericcloud-amd64.qcow2 local-lvm
# (PVE 8 also accepts: qm disk import 9000 debian-12-genericcloud-amd64.qcow2 local-lvm)

qm set 9000 --scsi0 local-lvm:vm-9000-disk-0,discard=on
qm set 9000 --boot order=scsi0
Use el nombre de disco que muestra la importación (normalmente vm-9000-disk-0). En almacenamiento de directorio como local, el nombre tiene el formato 9000/vm-9000-disk-0.raw; ajústelo en consecuencia.

Paso 3: Añada la unidad Cloud-Init y defina usuario, claves SSH e IP

La unidad cloud-init es un CD virtual en el que Proxmox escribe la configuración de la pestaña Cloud-Init. Las imágenes cloud suelen necesitar una consola serie para mostrarse correctamente en la Console web, así que configure también serial0. El usuario y la clave definidos en la plantilla actúan como valores predeterminados y pueden sobrescribirse en cada clon.

qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --serial0 socket --vga serial0
qm set 9000 --agent enabled=1

# defaults stored in the template (can be overridden per clone)
qm set 9000 --ciuser debian --sshkeys /root/.ssh/id_ed25519.pub
qm set 9000 --ipconfig0 ip=dhcp
qm set 9000 --nameserver "1.1.1.1 8.8.8.8"
qm cloudinit dump 9000 user

El último comando muestra una vista previa del user-data generado para que pueda confirmar que incluye el nombre de usuario y la clave.

Paso 4: Convierta la VM en una plantilla Cloud-Init

No arranque la VM; conviértala directamente. Una plantilla no se puede iniciar, solo clonar, y su disco se convierte en una imagen base de solo lectura.

qm template 9000
qm list

Paso 5: Clone VPS rápidamente desde la plantilla e inyecte IP y claves SSH

Hay dos tipos de clon. Un clon completo (--full) copia un disco independiente y es el adecuado para entregar a clientes. Un clon enlazado es casi instantáneo y ahorra espacio, pero depende del disco base de la plantilla (la plantilla ya no se puede eliminar), por lo que es apropiado para pruebas internas. Asigne a cada VPS su propia IP, clave o contraseña inicial y amplíe el disco según sea necesario; la imagen cloud ocupa solo 2–3 GB y cloud-init amplía la partición en el primer arranque.

# full clone (independent disk) for a customer VPS
qm clone 9000 201 --name vps201 --full --storage local-lvm

# or a linked clone: created in seconds, shares the base disk
# qm clone 9000 202 --name vps202

qm set 201 --cores 2 --memory 4096
qm set 201 --ipconfig0 ip=203.0.113.21/24,gw=203.0.113.1
qm set 201 --sshkeys /root/customer201.pub --cipassword 'Change-Me-123'
qm resize 201 scsi0 +38G
qm start 201

# check
qm guest cmd 201 network-get-interfaces
ssh [email protected]

Para el aprovisionamiento masivo, agrupe los pasos en un pequeño script que reciba el ID de la VM, la IP y la clave del cliente:

#!/bin/bash
# usage: ./newvps.sh 205 203.0.113.25 /root/keys/c205.pub
ID=$1; IP=$2; KEY=$3
qm clone 9000 "$ID" --name "vps$ID" --full --storage local-lvm
qm set "$ID" --ipconfig0 ip="$IP"/24,gw=203.0.113.1 --sshkeys "$KEY"
qm resize "$ID" scsi0 +38G
qm start "$ID"

En la interfaz web: haga clic derecho en la plantilla → Clone → modo «Full Clone»; después, edite IP Config y SSH public key en la pestaña Cloud-Init de la nueva VM, haga clic en «Regenerate Image» e iníciela.

Preguntas frecuentes

No puedo acceder por SSH a un VPS clonado

Compruebe que ipconfig0 coincide con la IP, la máscara y la puerta de enlace asignadas por IMIDC; inicie sesión con el ciuser (debian por defecto en Debian, ubuntu en Ubuntu), no con root; y reinicie la VM después de cambiar la configuración de Cloud-Init. La Console serie de Proxmox muestra el registro de arranque de cloud-init para diagnosticar problemas.

El disco sigue mostrando 2 GB después de ampliarlo

Ejecute qm resize antes del primer arranque para que growpart de cloud-init amplíe la partición raíz. Si la VM ya arrancó, ejecute growpart /dev/sda 1 y resize2fs /dev/sda1 dentro de ella (compruebe los nombres de las particiones con lsblk).

¿Puedo usar imágenes cloud de CentOS / Rocky / AlmaLinux?

Sí. Rocky Linux y AlmaLinux publican imágenes qcow2 GenericCloud; el procedimiento es idéntico, con los usuarios predeterminados rocky y almalinux respectivamente.

¿Sigue con problemas? Abra un ticket con el soporte técnico 24/7 de IMIDC: https://www.imidc.com/submitticket.php

¿Fue útil la respuesta?

Tutoriales relacionados