---
title: CloudStack
description: Conecte Apache CloudStack a NexCMP: cree un dominio, cuenta y API key con cmk e ingréselos en el setup wizard o en la consola de administración.
url: https://nexcmp.com/es/docs/infrastructure/cloudstack/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# CloudStack

> **En el panel de administración:** Infrastructure › Cloud provider › CloudStack › API connection (`/infra/cloudstack?tab=connect`). La primera conexión también puede realizarse en el [setup wizard](https://nexcmp.com/es/docs/getting-started/setup-wizard/), paso 2.

## Qué hace {#what-it-does}

NexCMP vende máquinas virtuales que se ejecutan en su nube de Apache CloudStack. Despliega, inicia, detiene, redimensiona, crea Snapshots y elimina VM mediante la API de CloudStack, asigna direcciones IP públicas desde la zona, lee el consumo para facturación y ancho de banda, y muestra capacidad y estado en la consola de administración. CloudStack sigue siendo la fuente de referencia de los hipervisores; NexCMP es la tienda, la facturación y el portal superpuestos.

Utilice esta página cuando CloudStack sea (o vaya a ser) su fuente principal de VM. Para configurar una segunda fuente complementaria, consulte [Proxmox VE](https://nexcmp.com/es/docs/infrastructure/proxmox/).

## Requisitos {#requirements}

| Elemento | Requisito |
|---|---|
| Versión de CloudStack | 4.23 es la versión probada. La consola de VM requiere 4.18 o posterior, y el escalado en caliente de CPU/RAM de una VM en ejecución requiere 4.23 con KVM. |
| Tipo de zona | Una zona con al menos una red de invitados para las VM de los clientes y un rango de IP públicas con direcciones libres. |
| Hipervisor | KVM es el hipervisor probado. |
| Cuenta | Un **dominio y cuenta dedicados** creados para NexCMP. Nunca utilice la clave de administrador ROOT. |
| Accesibilidad de la API | El servidor del panel debe poder comunicarse con la URL de la API del servidor de administración (`https://cloudstack.example.com/client/api`) mediante HTTP(S). La consola de VM, el ancho de banda y las funciones de Kubernetes utilizan este mismo endpoint. |
| Clave de solo lectura opcional | Una segunda clave de solo lectura permite que la consola de administración muestre hosts, almacenamiento, VM del sistema y rangos de IP públicas. No es necesaria para vender VM. |
| IP pública | Direcciones IPv4 públicas libres en la zona. El prefijo que NexCMP puede vender se configura en Sales IP pools. |
| Plantillas | Al menos una plantilla lista y con contraseña habilitada, y un service offering que su cuenta pueda ver. Consulte [Templates](https://nexcmp.com/es/docs/infrastructure/templates/). |
| Almacenamiento | Almacenamiento primario para los volúmenes de la cuenta y, si vende snapshots o imágenes, almacenamiento secundario. |
| Depende de | Nada. Kubernetes, Private Cloud, Images y Bandwidth dependen de esta página. |

::: warning No use la clave de administrador ROOT
Cree un dominio y una cuenta dedicados para NexCMP. De este modo, la clave solo tendrá alcance sobre ese dominio y una clave filtrada no podrá afectar al resto de su cloud. El asistente de configuración también verifica que la red que elija pertenezca a la zona **y** a la cuenta propietaria de la clave.
:::

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

Los comandos utilizan [CloudMonkey](https://cloudstack.apache.org/) (`cmk`) con la sesión iniciada como administrador de CloudStack. Reemplace los nombres de ejemplo y los marcadores de posición entre corchetes angulares.

### Crear una cuenta y clave API dedicadas {#create-a-dedicated-account-and-api-key}

1. Cree el dominio que contendrá todo lo que pertenezca a NexCMP.

   ```bash
   cmk create domain name=nexcmp
   ```

   Anote el `id` en la salida; se utilizará como `<domain-id>` más adelante.

2. Busque el rol que desea asignar a la cuenta.

   ```bash
   cmk list roles type=DomainAdmin filter=id,name
   ```

   | Rol | Cuándo elegirlo |
   |---|---|
   | **Domain Admin** (recomendado) | Conjunto completo de funciones: VM, redes, proyectos para Kubernetes, VPC, imágenes. Su alcance se limita al dominio `nexcmp`. |
   | Usuario | Solo el ciclo de vida de las VM. Un usuario estándar no puede purgar VM a menos que la configuración global `allow.user.expunge.recover.vm` sea true; en ese caso, NexCMP detiene la VM y CloudStack la purga después de `expunge.delay`. |

3. Cree la cuenta y su primer usuario. Utilice una contraseña aleatoria larga; no volverá a escribirla.

   ```bash
   cmk create account name=nexcmp-api username=nexcmp-api \
     password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \
     firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>
   ```

4. Genere el par de claves API para el nuevo usuario.

   ```bash
   cmk list users domainid=<domain-id> username=nexcmp-api filter=id,username
   cmk generate userkeys id=<user-id>
   ```

   Copie `apikey` y `secretkey`. Son la **API key** y la **Secret key** que debe introducir en NexCMP. NexCMP las almacena cifradas y posteriormente solo muestra los últimos cuatro caracteres.

5. Asegúrese de que el dominio no tenga límites de recursos restrictivos (instances, volúmenes, IP públicas, redes, snapshots, plantillas, proyectos).

   ```bash
   cmk list resourcelimits domainid=<domain-id>
   ```

### Crear la red de invitados para las VM de los clientes {#create-the-guest-network-for-customer-vms}

Las VM de los clientes se despliegan en una red de invitados que pertenece a la nueva cuenta. Una red aislada con un router virtual (VR) y los servicios Static NAT, Firewall y Port Forwarding funciona adecuadamente, ya que NexCMP asocia una IP pública a cada VM mediante NAT estático.

```bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
  networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>
```

Compruebe la directiva de salida predeterminada de la oferta: si es "deny", las VM de los clientes no tendrán acceso saliente hasta que se añadan reglas de salida en el firewall.

### Hacer visibles las ofertas y plantillas {#make-offerings-and-templates-visible}

- Las **service offerings** y **network offerings** deben ser públicas o estar asignadas al dominio `nexcmp`; de lo contrario, la cuenta no podrá enumerarlas ni utilizarlas.
- Registre o comparta al menos una plantilla (consulte [Templates](https://nexcmp.com/es/docs/infrastructure/templates/)). NexCMP lista las plantillas que están listas y destacadas.

### Opcional: clave de solo lectura para las páginas de infraestructura {#optional-read-only-key-for-infrastructure-pages}

Las pestañas **Capacity**, **Host**, **Storage** y **System VM**, así como la lista de rangos de IP públicas, utilizan una segunda clave que solo necesita acceso de lectura a seis comandos. Cree un rol limitado en lugar de reutilizar una clave de administrador completa:

```bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
  cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=deny
```

A continuación, cree una cuenta con ese rol (en el dominio ROOT, ya que lee datos de toda la zona), genere sus claves como en el paso 4 e introdúzcalas como **RO API key** en la siguiente sección.

### Comprobar la ruta de red {#check-the-network-path}

Desde el servidor del panel:

```bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/api
```

Cualquier respuesta HTTP (incluso 4xx) confirma que el puerto es accesible. Un tiempo de espera agotado indica un problema de firewall o DNS de su parte.

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

### En el asistente de configuración {#in-the-setup-wizard}

El paso 2 del [asistente de configuración](https://nexcmp.com/es/docs/getting-started/setup-wizard/) solicita los mismos valores. **Test connection** enumera las zonas y redes visibles para la clave; elija la zona y la red de invitados, un nombre para mostrar para la zona y el país, y luego haga clic en **Save CloudStack**. El asistente rechaza cualquier red que no pertenezca a esa zona o que no sea visible para la clave.

![Paso 2 del asistente con la URL de la API y las claves de CloudStack completadas, y la zona y red seleccionadas tras Test connection](https://nexcmp.com/es/docs/images/infrastructure/cloudstack-01-wizard-step.webp)

### Más tarde, en la consola de administración {#later-in-the-admin-console}

1. Abra **Infrastructure › Cloud provider › CloudStack** y seleccione la pestaña **API connection**.
2. Complete la sección **Connection**:

   | Campo | Valor de ejemplo |
   |---|---|
   | Endpoint API | `https://cloudstack.example.com/client/api` |
   | Clave de API (acceso de escritura) | `XXXX` (dejar vacío para conservar la clave guardada) |
   | Secret key | `XXXX` |
   | Clave de API de solo lectura / Clave secreta de solo lectura | opcional, de la cuenta de solo lectura |
   | Zone ID | el UUID de su zona |

      ![La pestaña API connection con un endpoint de ejemplo y claves enmascaradas](https://nexcmp.com/es/docs/images/infrastructure/cloudstack-02-connect-form.webp)

3. Haga clic en **Test connection** antes de guardar. Comprueba las claves introducidas sin guardarlas: la clave de escritura con `listZones` y `listCapabilities`, y la clave de solo lectura con `listSystemVms`.


4. Haga clic en **Save connection**. Mantenga activado **Enable CloudStack connection**; desactivarlo hace que el worker detenga todos los trabajos de CloudStack sin perder datos.
5. Abra **Services › Virtual Machines › Policy › Provisioning** para configurar la red de invitados predeterminada, las ofertas personalizadas y el par de claves predeterminado para las nuevas VM.

      ![VM Policy, pestaña Provisioning, con el ID de red predeterminado](https://nexcmp.com/es/docs/images/infrastructure/cloudstack-04-provisioning.webp)

6. Abra **Infrastructure › Cloud provider › Sales IP pools** y, en **Configure sales ranges**, configure **Sellable IP range prefixes** (por ejemplo `203.0.113.`) y **Excluded IP prefixes** si algunas direcciones de la zona no deben venderse nunca. Deje el prefijo vacío para permitir todas las direcciones libres.

      ![Sales IP pools con el prefijo comercializable 203.0.113. configurado](https://nexcmp.com/es/docs/images/infrastructure/cloudstack-05-sales-ip-pool.webp)

### Qué lee y escribe NexCMP {#what-nexcmp-reads-and-writes}

| Área | Lecturas | Modificaciones |
|---|---|---|
| VMs | lista, estados, historial de uso, endpoint de consola | desplegar, iniciar, detener, reiniciar, reinstalar, destruir, escalar, restablecer contraseña y clave SSH |
| Discos y Snapshots | volúmenes, Snapshots de VM, Backups | crear, adjuntar, desconectar, redimensionar, eliminar, crear snapshot, restaurar |
| Redes | redes, routers, IP públicas, firewall, reenvío de puertos, reglas de balanceador de carga | asociar y liberar IP públicas, NAT estático, firewall, reenvío de puertos, reglas de salida, redes y ACL para Private Cloud |
| Catálogo | ofertas de servicio, disco y red, plantillas, ISO, tipos de SO | registrar y eliminar plantillas e ISO (Images), ofertas de servicio al crear planes personalizados |
| Kubernetes | versiones compatibles, clústeres, configuración | proyectos, límites de recursos, redes, clústeres (módulo Kubernetes) |
| Clave de solo lectura | hosts, clústeres, pools de almacenamiento, VM del sistema, capacidad, rangos de IP de VLAN | nada |

### CPU y RAM en tiempo real, y ancho de banda {#live-cpu-and-ram-and-bandwidth}

- **Hot-plug.** Una VM en ejecución solo se puede redimensionar sin reiniciar cuando su plantilla lo permite (escalable dinámicamente) y el sistema invitado activa las nuevas CPU y la nueva RAM. NexCMP activa Auto Scaling para plantillas cuyo nombre termina en `vN` con una N igual o superior a 6, o cuando se configura manualmente en el campo **vCPU/RAM hot-plug** de la plantilla. Consulte [Templates](https://nexcmp.com/es/docs/infrastructure/templates/).
- **Bandwidth source.** Con la configuración predeterminada, NexCMP mide el tráfico a partir de las estadísticas de VM de CloudStack (`listVirtualMachinesUsageHistory`, consultadas cada 5 minutos y sumadas por interfaz de red de la VM). Las cifras incluyen el tráfico entre VM, por lo que pueden ser ligeramente superiores a las que contabilizaría un router perimetral. Mantenga habilitada la recopilación de estadísticas de VM de CloudStack; los intervalos superiores a la retención de estadísticas se omiten. Consulte [Bandwidth](https://nexcmp.com/es/docs/catalog/bandwidth/).

## Verificación {#verify}

1. **Test connection** devuelve "Write key: OK" con su zona y la versión de CloudStack.
2. **Infrastructure › Cloud provider › Providers** muestra el proveedor como activo con una hora de prueba reciente. El panel de estado del dashboard ya no muestra "CloudStack: not connected".
3. **Sales IP pools** enumera las direcciones libres (se actualiza aproximadamente una vez por minuto).
4. Solicite una VM pequeña desde el portal de clientes o la consola de administración y compruebe que pase a Running, tenga una IP pública y que pueda abrir la consola.

## Límites y notas {#limits-and-notes}

- En esta versión de NexCMP se puede conectar un clúster de CloudStack. El cuadro de diálogo **Add cloud provider** puede probar las claves de un segundo clúster, pero no puede guardarlo.
- Se vincula una zona de CloudStack a la zona predeterminada de NexCMP; un entorno de CloudStack con varias zonas se limita a la zona ingresada, por lo que se ignoran las VM, las IP y las redes de otras zonas.
- Eliminar la red de invitados en CloudStack hace que falle cada nuevo despliegue. La consola de administración muestra un aviso en rojo cuando desaparece la red.
- Las credenciales nunca salen del servidor. La API solo devuelve los últimos cuatro caracteres.

## Resolución de problemas {#troubleshooting}

| Síntoma | Causa | Solución |
|---|---|---|
| `listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature` | API key o secret incorrectos, clave de otro usuario o un problema de reloj en el servidor del panel | Genere las claves de nuevo con `cmk generate userkeys` y pegue ambas. Compruebe la hora del servidor del panel. |
| Prueba: `listZones: …` o tiempo de espera agotado | El servidor del panel no puede comunicarse con la URL de la API | Compruebe el DNS, el firewall y la ruta exacta de `/client/api`. |
| Asistente: "network not found in that zone for this API key" | La red seleccionada pertenece a otra cuenta o zona | Cree la red en la cuenta dedicada (consulte más arriba) y ejecute **Test connection** de nuevo. |
| Asistente: "pick a zone and a network" | No se ejecutó la prueba, o no se seleccionó ninguna zona ni red | Haga clic en **Test connection** y seleccione en ambas listas. |
| Aviso "CloudStack key not configured" | Aún no se ha guardado ninguna clave ("Connect later") | Complete la tarjeta Connection, haga clic en **Save connection** y luego en **Test connection**. |
| Banner "CloudStack connection is OFF" | El interruptor **Enable CloudStack connection** está desactivado | Actívelo y guarde los cambios. |
| Clave de solo lectura: "unusable …" en la prueba | Falta de permisos de rol o cuenta incorrecta | Compruebe los seis comandos permitidos y que la cuenta pertenezca al dominio ROOT. |
| "Zone public IP ranges not measured yet" o "no public IP ranges declared" | No hay clave de solo lectura o la zona realmente no tiene ningún rango público | Añada la clave de solo lectura o agregue un rango de IP públicas en CloudStack. |
| "Pool vacío — espere 60 s para la sincronización de vmd" | El worker actualiza la lista de IP una vez por minuto | Espere un minuto y vuelva a cargar. |
| "sin IP libres en el rango 203.0.113." | Todas las direcciones del prefijo comercializable están ocupadas | Añada direcciones a la zona, amplíe el prefijo o libere las IP no utilizadas. |
| "Error al obtener los datos de la red (CloudStack no responde o la clave carece de permisos)" | La clave perdió el acceso o CloudStack no está disponible | Ejecute **Test connection**; compruebe que la cuenta esté habilitada. |
| "La red de invitados NO existe" | La red se eliminó en CloudStack | Cree la red de nuevo y establézcala como predeterminada en Provisioning. |


