---
title: CloudStack
description: Collega Apache CloudStack a NexCMP: crea un dominio, un account e una chiave API dedicati con cmk, quindi inseriscili nella procedura o nella console.
url: https://nexcmp.com/it/docs/infrastructure/cloudstack/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# CloudStack

> **Dove nell'amministrazione:** Infrastructure › Cloud provider › CloudStack › API connection (`/infra/cloudstack?tab=connect`). La prima connessione può essere effettuata anche nella [setup wizard](https://nexcmp.com/it/docs/getting-started/setup-wizard/), passaggio 2.

## Descrizione {#what-it-does}

NexCMP vende macchine virtuali eseguite sul tuo cloud Apache CloudStack. Distribuisce, avvia, arresta, ridimensiona, acquisisce snapshot ed elimina le VM tramite l'API di CloudStack, assegna indirizzi IP pubblici dalla zona, legge l'utilizzo per la fatturazione e la larghezza di banda, e mostra la capacità e lo stato nella console di amministrazione. CloudStack rimane la fonte di verità per gli hypervisor; NexCMP è la vetrina, la fatturazione e il portale sovrastanti.

Usa questa pagina quando CloudStack è (o sarà) la tua fonte principale di VM. Per una seconda fonte affiancata, vedi [Proxmox VE](https://nexcmp.com/it/docs/infrastructure/proxmox/).

## Requisiti {#requirements}

| Elemento | Requisito |
|---|---|
| Versione di CloudStack | 4.23 è la release testata. La console delle VM richiede la versione 4.18 o successiva e il ridimensionamento live di CPU/RAM di una VM in esecuzione richiede la 4.23 con KVM. |
| Tipo di zona | Una zona con almeno una rete guest per le VM dei clienti e un intervallo di IP pubblici con indirizzi liberi. |
| Hypervisor | KVM è l'hypervisor testato. |
| Account | Un **dominio e un account dedicati** creati per NexCMP. Non usare mai la chiave dell'amministratore ROOT. |
| Raggiungibilità API | Il server del pannello deve raggiungere l'URL API del server di gestione (`https://cloudstack.example.com/client/api`) tramite HTTP(S). La console delle VM, la larghezza di banda e le funzionalità di Kubernetes usano lo stesso endpoint. |
| Chiave di sola lettura facoltativa | Una seconda chiave di sola lettura consente alla console di amministrazione di mostrare host, storage, VM di sistema e intervalli di IP pubblici. Non necessaria per vendere VM. |
| IP pubblico | Indirizzi IPv4 pubblici liberi nella zona. Il prefisso che NexCMP può vendere viene configurato in Sales IP pools. |
| Template | Almeno un template pronto e abilitato all'uso con password e un'offerta di servizi visibile al tuo account. Vedi [Templates](https://nexcmp.com/it/docs/infrastructure/templates/). |
| Storage | Storage primario per i volumi dell'account e, se vendi snapshot o immagini, storage secondario. |
| Dipende da | Nessuno. Kubernetes, Private Cloud, Images e Bandwidth dipendono da questa pagina. |

::: warning Non usare la chiave amministratore ROOT
Crea un dominio e un account dedicati per NexCMP. In questo modo la chiave raggiungerà solo quel dominio e una chiave compromessa non potrà intaccare il resto del tuo cloud. La procedura guidata di configurazione verifica inoltre che la rete scelta appartenga alla zona **e** all'account proprietario della chiave.
:::

## Prepara l'infrastruttura {#prepare-the-infrastructure}

I comandi utilizzano [CloudMonkey](https://cloudstack.apache.org/) (`cmk`) autenticato come amministratore di CloudStack. Sostituisci i nomi di esempio e i segnaposto tra parentesi angolari.

### Crea un account dedicato e una chiave API {#create-a-dedicated-account-and-api-key}

1. Crea il dominio che conterrà tutto ciò che appartiene a NexCMP.

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

   Prendi nota di `id` nell'output; viene utilizzato come `<domain-id>` in seguito.

2. Trova il ruolo che desideri assegnare all'account.

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

   | Ruolo | Quando sceglierlo |
   |---|---|
   | **Domain Admin** (consigliato) | Set di funzioni completo: VM, reti, progetti per Kubernetes, VPC, immagini. La sua portata si ferma al dominio `nexcmp`. |
   | User | Solo ciclo di vita delle VM. Un utente semplice non può eliminare definitivamente le VM a meno che l'impostazione globale `allow.user.expunge.recover.vm` non sia true; in tal caso NexCMP arresta la VM e CloudStack la elimina definitivamente dopo `expunge.delay`. |

3. Crea l'account e il suo primo utente. Usa una password casuale lunga; non verrà mai più inserita.

   ```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. Genera la coppia di chiavi API per il nuovo utente.

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

   Copia `apikey` e `secretkey`. Sono la **API key** e la **Secret key** da inserire in NexCMP. NexCMP le memorizza crittografate e in seguito mostra solo gli ultimi quattro caratteri.

5. Assicurati che il dominio non abbia limiti di risorse restrittivi (istanze, volumi, IP pubblici, reti, snapshot, template, progetti).

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

### Crea la rete guest per le VM dei clienti {#create-the-guest-network-for-customer-vms}

Le VM dei clienti vengono distribuite in una rete guest che appartiene al nuovo account. Una rete isolata con un router virtuale (VR) e i servizi Static NAT, Firewall e Port Forwarding funziona bene, poiché NexCMP associa un IP pubblico a ciascuna VM con il NAT statico.

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

Controlla i criteri di egress predefiniti dell'offerta: se sono impostati su "deny", le VM dei clienti non avranno accesso in uscita finché non verranno aggiunte le regole di firewall egress.

### Rendi visibili offerte e template {#make-offerings-and-templates-visible}

- **Service offerings** e **network offerings** devono essere pubbliche o assegnate al dominio `nexcmp`, altrimenti l'account non potrà elencarli o utilizzarli.
- Registra o condividi almeno un template (vedi [Templates](https://nexcmp.com/it/docs/infrastructure/templates/)). NexCMP elenca i template pronti e in evidenza.

### Facoltativo: chiave di sola lettura per le pagine dell'infrastruttura {#optional-read-only-key-for-infrastructure-pages}

Le schede **Capacity**, **Host**, **Storage** e **System VM** e l'elenco degli intervalli di IP pubblici utilizzano una seconda chiave che necessita solo dell'accesso in lettura a sei comandi. Crea un ruolo limitato anziché riutilizzare una chiave amministratore 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
```

Quindi crea un account con quel ruolo (nel dominio ROOT, poiché legge i dati a livello di zona), genera le relative chiavi come al passaggio 4 e inseriscile come **RO API key** nella sezione successiva.

### Verifica il percorso di rete {#check-the-network-path}

Dal server del pannello:

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

Qualsiasi risposta HTTP (anche 4xx) dimostra che la porta è raggiungibile. Un timeout indica un problema di firewall o DNS dalla tua parte.

## Collega in NexCMP {#connect-in-nexcmp}

### Nella procedura guidata di configurazione {#in-the-setup-wizard}

Il passaggio 2 della [setup wizard](https://nexcmp.com/it/docs/getting-started/setup-wizard/) richiede gli stessi valori. **Test connection** elenca le zone e le reti visibili alla chiave; scegli la zona e la rete guest, un nome visualizzato per la zona e il paese, quindi fai clic su **Save CloudStack**. La procedura guidata rifiuta una rete che non si trova in quella zona o non è visibile alla chiave.

![Passaggio 2 della procedura guidata con l'URL dell'API di CloudStack e le chiavi inserite, oltre alla zona e alla rete scelte dopo Test connection](https://nexcmp.com/it/docs/images/infrastructure/cloudstack-01-wizard-step.webp)

### Successivamente, nella console di amministrazione {#later-in-the-admin-console}

1. Apri **Infrastructure › Cloud provider › CloudStack** e seleziona la scheda **API connection**.
2. Compila la scheda **Connection**:

   | Campo | Valore di esempio |
   |---|---|
   | Endpoint API | `https://cloudstack.example.com/client/api` |
   | Chiave API (accesso in scrittura) | `XXXX` (lascia vuoto per mantenere la chiave salvata) |
   | Chiave segreta | `XXXX` |
   | Chiave API RO / Chiave segreta RO | opzionale, dall'account di solo lettura |
   | ID zona | l'UUID della tua zona |

      ![La scheda di connessione API con un endpoint di esempio e chiavi mascherate](https://nexcmp.com/it/docs/images/infrastructure/cloudstack-02-connect-form.webp)

3. Fai clic su **Test connection** prima di salvare. Testa le chiavi inserite senza salvarle: la chiave di scrittura con `listZones` e `listCapabilities`, e la chiave di sola lettura con `listSystemVms`.


4. Fai clic su **Save connection**. Mantieni attivo **Enable CloudStack connection**; disattivandolo, il worker interromperà tutti i processi di CloudStack senza perdita di dati.
5. Apri **Services › Virtual Machines › Policy › Provisioning** per impostare la rete guest predefinita, le offerte personalizzate e la coppia di chiavi predefinita per le nuove VM.

      ![Criteri VM, scheda Provisioning, con l'ID di rete predefinito](https://nexcmp.com/it/docs/images/infrastructure/cloudstack-04-provisioning.webp)

6. Apri **Infrastructure › Cloud provider › Sales IP pools** e, in **Configure sales ranges**, imposta **Sellable IP range prefixes** (ad esempio `203.0.113.`) e **Prefixi IP esclusi** se alcuni indirizzi nella zona non devono mai essere venduti. Lascia il prefisso vuoto per consentire qualsiasi indirizzo libero.

      ![Pool di IP di vendita con il prefisso vendibile 203.0.113. impostato](https://nexcmp.com/it/docs/images/infrastructure/cloudstack-05-sales-ip-pool.webp)

### Cosa legge e scrive NexCMP {#what-nexcmp-reads-and-writes}

| Area | Letture | Modifiche |
|---|---|---|
| VMs | elenco, stati, cronologia di utilizzo, endpoint della console | distribuzione, avvio, arresto, riavvio, reinstallazione, eliminazione, ridimensionamento, reimpostazione della password e della chiave SSH |
| Dischi e snapshot | volumi, snapshot di VM, backup | creazione, collegamento, scollegamento, ridimensionamento, eliminazione, snapshot, ripristino |
| Networking | reti, router, IP pubblici, firewall, port forwarding, regole di bilanciamento del carico | associazione e rilascio di IP pubblici, NAT statico, firewall, port forwarding, regole di egress, reti e ACL per Private Cloud |
| Catalogo | offerte di servizi, dischi e reti, template, ISO, tipi di sistemi operativi | registrazione ed eliminazione di template e ISO (Immagini), offerte di servizi durante la creazione di piani personalizzati |
| Kubernetes | versioni supportate, cluster, configurazione | progetti, limiti di risorse, reti, cluster (modulo Kubernetes) |
| Chiave di sola lettura | host, cluster, pool di storage, VM di sistema, capacità, intervalli IP VLAN | nessuna |

### CPU e RAM in tempo reale e larghezza di banda {#live-cpu-and-ram-and-bandwidth}

- **Hot-plug.** Una VM in esecuzione può essere ridimensionata senza riavvio solo se il template lo consente (scalabile dinamicamente) e il guest attiva nuove CPU e RAM online. NexCMP attiva Auto Scaling per i template il cui nome termina in `vN` con N pari o superiore a 6, o quando viene impostato manualmente nel campo **vCPU/RAM hot-plug** del template. Vedi [Templates](https://nexcmp.com/it/docs/infrastructure/templates/).
- **Origine larghezza di banda.** Con le impostazioni predefinite, NexCMP misura il traffico dalle statistiche delle VM CloudStack (`listVirtualMachinesUsageHistory`, rilevate ogni 5 minuti e sommate per interfaccia di rete della VM). I dati includono il traffico tra le VM, quindi possono risultare leggermente superiori rispetto a quanto conterebbe un router di margine. Mantieni abilitata la raccolta delle statistiche delle VM CloudStack; gli intervalli più lunghi della conservazione delle statistiche vengono ignorati. Vedi [Bandwidth](https://nexcmp.com/it/docs/catalog/bandwidth/).

## Verifica {#verify}

1. **Test connection** restituisce "Write key: OK" con la tua zona e la versione di CloudStack.
2. **Infrastructure › Cloud provider › Providers** mostra il provider come attivo con un orario di test recente. Il pannello dello stato della dashboard non mostra più "CloudStack: not connected".
3. **Sales IP pools** elenca gli indirizzi liberi (si aggiorna circa una volta al minuto).
4. Ordina una piccola VM dal portale clienti o dalla console di amministrazione e verifica che raggiunga lo stato Running, disponga di un IP pubblico e che tu possa aprire la console.

## Limiti e note {#limits-and-notes}

- In questa versione di NexCMP è possibile connettere un solo cluster CloudStack. La finestra di dialogo **Add cloud provider** può testare le chiavi di un secondo cluster ma non può salvarle.
- Una zona CloudStack è associata alla zona predefinita di NexCMP; un CloudStack con più zone è limitato alla zona inserita, quindi le VM, gli IP e le reti delle altre zone vengono ignorati.
- L'eliminazione della rete guest in CloudStack causa il fallimento di ogni nuovo deployment. La console di amministrazione mostra un avviso rosso quando la rete scompare.
- Le credenziali non lasciano mai il server. L'API restituisce solo gli ultimi quattro caratteri.

## Troubleshooting {#troubleshooting}

| Sintomo | Causa | Soluzione |
|---|---|---|
| `listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature` | Chiave API o segreto errati, chiave di un altro utente o problema di clock sul server del pannello | Rigenera le chiavi con `cmk generate userkeys` e incollale entrambe. Controlla l'ora del server del pannello. |
| Test: `listZones: …` o timeout | Il server del pannello non riesce a raggiungere l'URL dell'API | Controlla DNS, firewall e il percorso `/client/api` esatto. |
| Procedura guidata: "network not found in that zone for this API key" | La rete scelta appartiene a un altro account o a un'altra zona | Crea la rete nell'account dedicato (vedi sopra) e riesegui **Test connection**. |
| Procedura guidata: "pick a zone and a network" | Test non eseguito oppure nessuna zona o rete selezionata | Fai clic su **Test connection** e seleziona entrambi gli elenchi. |
| Banner "Chiave CloudStack non configurata" | Nessuna chiave ancora salvata ("Connect later") | Compila la scheda Connection, **Save connection**, quindi **Test connection**. |
| Banner "CloudStack connection is OFF" | L'interruttore **Enable CloudStack connection** è disattivato | Attivalo e salva. |
| Chiave di sola lettura: "unusable …" nel test | Autorizzazione del ruolo mancante o account errato | Verifica i sei comandi consentiti e che l'account si trovi nel dominio ROOT. |
| "Zone public IP ranges not measured yet" o "no public IP ranges declared" | Nessuna chiave di sola lettura, oppure la zona non ha effettivamente alcun intervallo pubblico | Aggiungi la chiave di sola lettura o un intervallo di IP pubblici in CloudStack. |
| "Pool vuoto — attendi 60 s per la sincronizzazione vmd" | L'elenco degli IP viene aggiornato dal worker una volta al minuto | Attendi un minuto e ricarica. |
| "IP liberi esauriti nell'intervallo 203.0.113." | Tutti gli indirizzi nel prefisso vendibile sono occupati | Aggiungi indirizzi alla zona, amplia il prefisso o rilascia gli IP non utilizzati. |
| "Impossibile recuperare i dati di rete (CloudStack non risponde o la chiave non ha i permessi)" | La chiave ha perso l'accesso oppure CloudStack è disattivato | Esegui **Test connection**; verifica che l'account sia abilitato. |
| "La rete guest NON esiste" | La rete è stata eliminata in CloudStack | Crea nuovamente la rete e impostala come predefinita in Provisioning. |


