---
title: Plantillas de SO e ISO
description: Prepare las imágenes de SO que despliegan los clientes: cree y registre plantillas de CloudStack y cree plantillas cloud-image para Proxmox VE.
url: https://nexcmp.com/es/docs/infrastructure/templates/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Plantillas de SO e ISO {#os-templates-and-isos}

> **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 {#what-it-does}

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 {#requirements}

| 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](https://nexcmp.com/es/docs/infrastructure/cloudstack/). |
| Proxmox VE | VMs de plantilla con cloud-init y el agente invitado QEMU, una por SO y por nodo. Consulte [Proxmox VE](https://nexcmp.com/es/docs/infrastructure/proxmox/). |
| Depende de | Conectar primero [CloudStack](https://nexcmp.com/es/docs/infrastructure/cloudstack/) o [Proxmox VE](https://nexcmp.com/es/docs/infrastructure/proxmox/). |

## Preparar la infraestructura {#prepare-the-infrastructure}

### CloudStack: crear una plantilla {#cloudstack-build-a-template}

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`).

1. Copie el generador a una máquina de compilación y ejecútelo:

   ```bash
   cp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates
   ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./out
   ```

   Agregue `--panel-url https://cloud.example.com` para 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, `--offline` para omitir la instalación de paquetes.

2. El resultado es `out/ubuntu-24.04-v7.qcow2` y su `.sha256`. La compilación finaliza ejecutando `verify-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. |

::: warning 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.
:::

3. 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:

   ```bash
   cmk 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=osdefault
   ```

   - `passwordenabled=true` permite a CloudStack generar la contraseña de la VM.
   - `isdynamicallyscalable=true` permite el escalado en vivo.
   - `host-passthrough` es necesario para que arranquen las imágenes actuales de Rocky y Alma; `osdefault` mantiene la portabilidad del controlador de disco.

4. 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 {#proxmox-ve-make-a-template}

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](https://nexcmp.com/es/docs/infrastructure/proxmox/). El generador de CloudStack anterior **no** es para Proxmox: configura cloud-init para el origen de datos de CloudStack.

### ISOs {#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](https://nexcmp.com/es/docs/infrastructure/modules/) y [Servidores dedicados](https://nexcmp.com/es/docs/infrastructure/dedicated/).

## Conectar en NexCMP {#connect-in-nexcmp}

1. 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.

      ![La página Template con la lista de plantillas sincronizadas, su estado listo y la columna de hot-plug de CPU](https://nexcmp.com/es/docs/images/infrastructure/templates-01-list.webp)

2. 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 LTS` |
   | Familia de SO | `ubuntu` (icono y usuario predeterminado) |
   | Versión | `24.04` |
   | Usuario de inicio de sesión | `ubuntu` (Windows: `Administrator`; otros: `root`) |
   | Icono | URL de la imagen, una ruta o un nombre |
   | Orden | `10` |
   | Activo | On |
   | Hot-plug de vCPU/RAM (escalado en vivo) | **Auto by name (v6 or later)**, **Yes** o **No (needs a restart)** |

      ![Cuadro de diálogo Edit template con un nombre visible para el cliente, la familia de SO, el usuario de inicio de sesión y la opción de hot-plug](https://nexcmp.com/es/docs/images/infrastructure/templates-02-edit.webp)

3. 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 {#replace-a-template-with-a-newer-build}

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 {#verify}

1. La fila muestra **ready** y, para compilaciones denominadas `vN` con N de 6 o más, **CPU hot-plug: supported**.
2. 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), `nproc` y `free -m` aumentan;
   - `swapon --show` lista `/swapfile` (los discos con menos espacio libre que la swap más 2 GiB lo omiten);
   - `systemctl is-active qemu-guest-agent` imprime `active`.
3. 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 {#limits-and-notes}

- 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.disabled` antes del primer arranque. Elimínelo más adelante con `systemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agent` y luego borre el agente en la consola de administración.

## Resolución de problemas {#troubleshooting}

| 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. |
