Plantillas de SO e ISO
Ubicación en el panel de administración: Services › Virtual Machines › Template (
/vm/templates). Las plantillas de Proxmox se muestran por clúster en Infrastructure › Cloud provider › Providers › (cluster) › Clusters.
Qué hace
Una plantilla es la imagen del sistema operativo a partir de la cual se inicia una nueva VM. NexCMP no almacena imágenes por sí mismo: lee lo que CloudStack reporta (plantillas destacadas y listas) o lo que usted lista para un clúster de Proxmox, y le permite elegir cuáles se venden, con un nombre visible para el cliente, icono y usuario de inicio de sesión. Esta página muestra cómo preparar imágenes que funcionen de forma óptima con NexCMP: inicio de sesión con contraseña, escalado en caliente de CPU y RAM, archivo swap y un disco raíz que se expande al tamaño del plan.
Requisitos
| Elemento | Requisito |
|---|---|
| Generador de plantillas de CloudStack | Una máquina Linux con libguestfs-tools (virt-customize, virt-sparsify, guestfish), qemu-utils, curl y unos 5 GB de disco libre. No se requiere KVM ni root. Acceso a Internet para la instalación de paquetes (o compilar con --offline). |
| Ubicación del generador | Se incluye con cada versión en /opt/nexcmp/releases/<version>/share/templates/ en el servidor del panel. No es necesario ejecutarlo allí: copie la carpeta a cualquier máquina Linux. |
| Servidor web | Cualquier servidor HTTP(S) al que pueda acceder la VM de almacenamiento secundario de CloudStack, para publicar el archivo .qcow2 terminado. No es necesario que sea accesible desde Internet. |
| CloudStack | Una cuenta con permisos para registrar plantillas y el ID de su zona y de un tipo de SO coincidente. Consulte CloudStack. |
| Proxmox VE | VMs de plantilla con cloud-init y el agente invitado QEMU, una por SO y por nodo. Consulte Proxmox VE. |
| Depende de | Conectar primero CloudStack o Proxmox VE. |
Preparar la infraestructura
CloudStack: crear una plantilla
Imágenes base compatibles (la imagen del proveedor se descarga y su checksum se verifica antes de realizar cualquier cambio):
| Imagen | --distro | Usuario de inicio de sesión |
|---|---|---|
| Ubuntu 22.04 | ubuntu-22.04 | ubuntu |
| Ubuntu 24.04 | ubuntu-24.04 | ubuntu |
| Debian 12 | debian-12 | debian |
| Rocky Linux 9 | rocky-9 | rocky |
Más distribuciones: agregue una línea a distros.conf (URL de la imagen, archivo de checksum, familia deb o rpm).
Copie el generador a una máquina de compilación y ejecútelo:
bashcp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./outAgregue
--panel-url https://cloud.example.compara integrar un agente de monitorización opcional de primer arranque que se registra en su panel (solo HTTPS). Sin él, no se agrega ningún agente. Otras opciones:--base <file>para usar una imagen descargada previamente,--offlinepara omitir la instalación de paquetes.El resultado es
out/ubuntu-24.04-v7.qcow2y su.sha256. La compilación finaliza ejecutandoverify-image.sh, que inspecciona la imagen final en modo de solo lectura y rechaza una incorrecta (se conserva como.unverified). Puede ejecutarlo de nuevo en cualquier momento:./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent.
Lo que el generador incluye en la imagen:
| Elemento | Motivo |
|---|---|
qemu-guest-agent | CloudStack puede consultar a la VM sobre CPU e IP, e inmovilizarla para Snapshots. |
cloud-init con el origen de datos de CloudStack, set_passwords en cada arranque, inicio de sesión por contraseña mediante SSH | La contraseña generada se obtiene del router virtual y Reset password funciona. |
| Una regla de udev para CPU y RAM añadidas en caliente | Las vCPU y la RAM añadidas en caliente se activan automáticamente, por lo que el escalado en vivo y Auto Scaling funcionan. |
| Un servicio de archivo swap | Crea /swapfile con el menor valor entre el 50% de la RAM y 4 GiB tras la ampliación del disco. touch /etc/cmp-swap.disabled lo desactiva. |
cloud-init growpart y resizefs | El disco raíz pequeño se expande al tamaño de disco del plan en el primer arranque. |
| machine-id vacío, sin claves de host SSH | Cada VM obtiene su propia identidad. |
Nombre la plantilla <OS> <version> <vN>
NexCMP activa Auto Scaling para las plantillas cuyo nombre termina en vN o vN.M con N de 6 o más (Ubuntu 24.04 v7, Rocky Linux 9 v7.1). El generador exige esto para --version. Registre la plantilla exactamente con el nombre mostrado.
Publique el archivo y regístrelo en CloudStack. Use el SHA-256 mostrado en la compilación y regístrelo solo después de que el archivo se haya escrito por completo:
bashcmk list ostypes keyword="Ubuntu 24.04" filter=id,description cmk register template name="Ubuntu 24.04 v7" displaytext="Ubuntu 24.04 v7" \ url=https://files.example.com/ubuntu-24.04-v7.qcow2 zoneid=<zone-id> format=QCOW2 hypervisor=KVM \ ostypeid=<os-type-id> passwordenabled=true sshkeyenabled=true isdynamicallyscalable=true \ requireshvm=true isextractable=false ispublic=true isfeatured=true \ checksum="{SHA-256}<sha256 of the file>" \ details[0].guest.cpu.mode=host-passthrough details[0].rootDiskController=osdefaultpasswordenabled=truepermite a CloudStack generar la contraseña de la VM.isdynamicallyscalable=truepermite el escalado en vivo.host-passthroughes necesario para que arranquen las imágenes actuales de Rocky y Alma;osdefaultmantiene la portabilidad del controlador de disco.
Espere a que la plantilla alcance Download Complete / Ready.
La imagen del proveedor conserva su tamaño virtual reducido (alrededor de 3.5 GiB para Ubuntu y Debian, 10 GiB para Rocky). Recuerde que el disco de un plan no puede ser menor que el disco de la plantilla.
Proxmox VE: crear una plantilla
Cree una plantilla de VM con cloud-init por cada SO en cada nodo donde vaya a desplegar, con el guest agent instalado y el inicio de sesión como root habilitado, y regístrela luego como os-key=vmid. Los comandos completos están en Proxmox VE. El generador de CloudStack anterior no es para Proxmox: configura cloud-init para el origen de datos de CloudStack.
ISOs
Los clientes montan sus propias ISOs a través del módulo Images (CloudStack) o del módulo Dedicated Server. Estos son independientes de las plantillas de SO de esta página. Consulte Módulos y Servidores dedicados.
Conectar en NexCMP
Abra Services › Virtual Machines › Template. Haga clic en Sync now o espere hasta 15 minutos. La sincronización añade las plantillas que estén listas y destacadas en CloudStack.

Haga clic en Edit en una nueva plantilla y configure lo que ven los clientes:
Campo Valor de ejemplo Nombre visible para los clientes Ubuntu 24.04 LTSFamilia de SO ubuntu(icono y usuario predeterminado)Versión 24.04Usuario de inicio de sesión ubuntu(Windows:Administrator; otros:root)Icono URL de la imagen, una ruta o un nombre Orden 10Activo On Hot-plug de vCPU/RAM (escalado en vivo) Auto by name (v6 or later), Yes o No (needs a restart) 
Active la plantilla. Las plantillas que CloudStack ya no incluya en la lista se ocultan automáticamente (y recibirá una alerta en Telegram si está configurado); nunca se eliminan de NexCMP.
Reemplazar una plantilla por una compilación más reciente
Utilice More › Replace with new version en la plantilla vendida. Seleccione la plantilla nueva, lista y actualmente deshabilitada. La entrada vendida apuntará entonces a la nueva compilación y conservará su nombre, orden e icono; la anterior se deshabilita como vía de retorno (para volver atrás, utilice Replace en la nueva entrada). Las VM en ejecución no se modifican. Si la nueva compilación pertenece a una familia de SO distinta, marque primero la confirmación.
Verificación
- La fila muestra ready y, para compilaciones denominadas
vNcon N de 6 o más, CPU hot-plug: supported. - Despliegue una VM de prueba a partir de la plantilla y compruebe dentro de la VM:
- puede iniciar sesión con la contraseña que se muestra en el portal;
df -h /muestra el tamaño de disco del plan;- tras un escalado en caliente (Change plan sin reinicio),
nprocyfree -maumentan; swapon --showlista/swapfile(los discos con menos espacio libre que la swap más 2 GiB lo omiten);systemctl is-active qemu-guest-agentimprimeactive.
- Si integró el agente en la imagen, la VM aparecerá en los hosts monitorizados del panel un minuto después del primer arranque. La VM necesita una IP pública propia: el panel la reconoce por su IP pública de origen.
Límites y notas
- El generador solo funciona en Linux y compila imágenes de Linux. Otras imágenes (por ejemplo, Windows) pueden registrarse en CloudStack por otros medios; NexCMP lista lo que CloudStack reporta.
- Solo se incluye el agente para amd64; las demás arquitecturas omiten la instalación del agente.
- La imagen se verifica con
guestfish, pero el generador nunca la arranca. Despliegue siempre una VM de prueba antes de vender una nueva imagen. - Omita el agente en una VM con
touch /etc/cmp-agent.disabledantes del primer arranque. Elimínelo más adelante consystemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agenty luego borre el agente en la consola de administración.
Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
virt-customize falla al descargar paquetes | La máquina de compilación no tiene red saliente | Corrija el DNS o el proxy en esa máquina, o compile con --offline en una imagen base que ya contenga los paquetes. |
libguestfs: error: /usr/bin/supermin exited with error status 1 | El usuario actual no tiene permisos de lectura sobre el kernel del host (Ubuntu) | sudo chmod +r /boot/vmlinuz*, o ejecute la compilación como root. |
| La suma de comprobación difiere o la imagen del proveedor ya no existe | Los proveedores mueven sus archivos "latest" | Descargue la imagen manualmente, verifíquela con el archivo de sumas de comprobación del proveedor y pásela con --base. |
| Rocky: no se puede montar un XFS más reciente | El kernel del host es demasiado antiguo | Compile en una máquina con un kernel reciente. |
--version must be v6 or higher | El nombre debe ser vN con N de 6 o más | Utilice --version v7. |
--panel-url must be a plain https:// URL | El agente se descarga y ejecuta como root, por lo que se rechaza HTTP sin cifrar | Utilice una URL https:// sin espacios, comillas ni cadenas de consulta. |
| La plantilla permanece en not ready | CloudStack no ha finalizado la descarga | Espere a que aparezca Download Complete y compruebe que la VM de almacenamiento secundario pueda comunicarse con la URL. |
| La fila muestra no-pass | La plantilla se registró sin passwordenabled=true | Regístrela de nuevo con ese flag. |
| CPU hot-plug muestra unsupported | El nombre no termina en vN (N de 6 o más) | Cambie el nombre de la plantilla o establezca vCPU/RAM hot-plug en Yes en Edit si la imagen incluye la regla de udev. |
| "Empty template list" tras la primera conexión | La sincronización no se ha ejecutado | Haga clic en Sync now (requiere que el worker esté en ejecución) o espere al ciclo de 15 minutos. |