---
title: CloudStack
description: Connectez Apache CloudStack à NexCMP: créez un domaine, compte et clé API avec cmk, puis saisissez-les dans l'assistant ou la console admin.
url: https://nexcmp.com/fr/docs/infrastructure/cloudstack/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# CloudStack

> **Dans l'admin:** Infrastructure › Cloud provider › CloudStack › API connection (`/infra/cloudstack?tab=connect`). La première connexion peut aussi se faire à l'étape 2 du [setup wizard](https://nexcmp.com/fr/docs/getting-started/setup-wizard/).

## Description {#what-it-does}

NexCMP vend des machines virtuelles exécutées sur votre cloud Apache CloudStack. Il déploie, démarre, arrête, redimensionne, snapshotte et supprime les VM via l'API CloudStack, attribue les adresses IP publiques de la zone, relève l'usage pour la facturation et la bande passante, et affiche la capacité et l'état de santé dans la console admin. CloudStack reste la source de référence pour les hyperviseurs; NexCMP constitue la vitrine, la facturation et le portail par-dessus.

Consultez cette page si CloudStack est (ou sera) votre source principale de VM. Pour ajouter une seconde source à ses côtés, voir [Proxmox VE](https://nexcmp.com/fr/docs/infrastructure/proxmox/).

## Prérequis {#requirements}

| Élément | Prérequis |
|---|---|
| Version de CloudStack | 4.23 est la version testée. La console VM nécessite la version 4.18 ou plus récente, et le redimensionnement à chaud du CPU/RAM d'une VM active nécessite la 4.23 avec KVM. |
| Type de zone | Une zone avec au moins un réseau invité pour les VM des clients et une plage d'IP publiques disposant d'adresses libres. |
| Hyperviseur | KVM est l'hyperviseur testé. |
| Compte | Un **domaine et un compte dédiés** créés pour NexCMP. N'utilisez jamais la clé administrateur ROOT. |
| Accessibilité de l'API | Le serveur du panneau doit pouvoir joindre l'URL de l'API du management server (`https://cloudstack.example.com/client/api`) en HTTP(S). La console VM, la bande passante et les fonctionnalités Kubernetes utilisent le même endpoint. |
| Clé en lecture seule optionnelle | Une seconde clé en lecture seule permet à la console admin d'afficher les hôtes, le stockage, les VM système et les plages d'IP publiques. Facultative pour la vente de VM. |
| IP publique | Adresses IPv4 publiques libres dans la zone. Le préfixe que NexCMP peut commercialiser se configure sous Sales IP pools. |
| Templates | Au moins un modèle prêt avec mot de passe activé et une offre de service visible par votre compte. Voir [Templates](https://nexcmp.com/fr/docs/infrastructure/templates/). |
| Stockage | Stockage primaire pour les volumes du compte et, si vous vendez des snapshots ou des images, stockage secondaire. |
| Dépend de | Rien. Kubernetes, Private Cloud, Images et Bandwidth dépendent de cette page. |

::: warning N'utilisez pas la clé administrateur ROOT
Créez un domaine et un compte dédiés pour NexCMP. La clé n'accède ainsi qu'à ce domaine, et une clé compromise ne peut pas toucher le reste de votre cloud. L'assistant d'installation vérifie également que le réseau choisi appartient à la zone **et** au compte propriétaire de la clé.
:::

## Préparer l'infrastructure {#prepare-the-infrastructure}

Les commandes utilisent [CloudMonkey](https://cloudstack.apache.org/) (`cmk`) connecté en tant qu'administrateur CloudStack. Remplacez les exemples de noms et les espaces réservés entre crochets angulaires.

### Créer un compte et une clé API dédiés {#create-a-dedicated-account-and-api-key}

1. Créez le domaine qui contiendra tout ce qui appartient à NexCMP.

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

   Notez l'identifiant `id` dans la sortie ; il est utilisé comme `<domain-id>` ci-dessous.

2. Trouvez le rôle que vous souhaitez attribuer au compte.

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

   | Rôle | Quand le choisir |
   |---|---|
   | **Domain Admin** (recommandé) | Ensemble complet de fonctionnalités : VM, réseaux, projets pour Kubernetes, VPC, images. Sa portée s'arrête au domaine `nexcmp`. |
   | Utilisateur | Cycle de vie des VM uniquement. Un utilisateur standard ne peut pas purger les VM sauf si le paramètre global `allow.user.expunge.recover.vm` est défini sur true ; NexCMP arrête alors la VM et CloudStack la purge après `expunge.delay`. |

3. Créez le compte et son premier utilisateur. Utilisez un mot de passe aléatoire long ; il ne sera plus jamais saisi.

   ```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. Générez la paire de clés API pour le nouvel utilisateur.

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

   Copiez `apikey` et `secretkey`. Ce sont la **API key** et la **Secret key** à saisir dans NexCMP. NexCMP les stocke de manière chiffrée et n'affiche plus que les quatre derniers caractères par la suite.

5. Assurez-vous que le domaine ne possède pas de limites de ressources restrictives (instances, volumes, IP publiques, réseaux, snapshots, templates, projets).

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

### Créer le réseau invité pour les VM des clients {#create-the-guest-network-for-customer-vms}

Les VM des clients sont déployées dans un réseau invité appartenant au nouveau compte. Un réseau isolé avec un routeur virtuel (VR) et les services Static NAT, Firewall et Port Forwarding fonctionne bien, car NexCMP associe une IP publique à chaque VM via le NAT statique.

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

Vérifiez la politique de sortie par défaut de l'offre : si elle est définie sur "deny", les VM des clients n'ont aucun accès sortant tant que des règles de pare-feu de sortie ne sont pas ajoutées.

### Rendre les offres et les templates visibles {#make-offerings-and-templates-visible}

- **Service offerings** et **network offerings** doivent être publics ou assignés au domaine `nexcmp`, sinon le compte ne peut pas les lister ni les utiliser.
- Enregistrez ou partagez au moins un template (voir [Templates](https://nexcmp.com/fr/docs/infrastructure/templates/)). NexCMP liste les templates prêts et mis en avant.

### Optionnel : clé en lecture seule pour les pages d'infrastructure {#optional-read-only-key-for-infrastructure-pages}

Les onglets **Capacity**, **Host**, **Storage**, **System VM** et la liste des plages d'IP publiques utilisent une seconde clé qui nécessite uniquement un accès en lecture à six commandes. Créez un rôle limité au lieu de réutiliser une clé d'administrateur complet :

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

Créez ensuite un compte doté de ce rôle (dans le domaine ROOT, car il lit les données de l'ensemble des zones), générez ses clés comme à l'étape 4, et saisissez-les comme **RO API key** dans la section suivante.

### Vérifier le chemin réseau {#check-the-network-path}

Depuis le serveur du panneau :

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

N'importe quelle réponse HTTP (même 4xx) prouve que le port est joignable. Un délai d'attente (timeout) indique un problème de pare-feu ou de DNS de votre côté.

## Connecter dans NexCMP {#connect-in-nexcmp}

### Dans l'assistant d'installation {#in-the-setup-wizard}

L'étape 2 de l'[setup wizard](https://nexcmp.com/fr/docs/getting-started/setup-wizard/) demande les mêmes valeurs. **Test connection** liste les zones et les réseaux visibles par la clé ; choisissez la zone et le réseau invité, un nom d'affichage pour la zone et le pays, puis cliquez sur **Save CloudStack**. L'assistant rejette un réseau qui n'est pas dans cette zone ou qui n'est pas visible par la clé.

![Étape 2 de l'assistant avec l'URL de l'API CloudStack, les clés renseignées, ainsi que la zone et le réseau choisis après Test connection](https://nexcmp.com/fr/docs/images/infrastructure/cloudstack-01-wizard-step.webp)

### Plus tard, dans la console d'administration {#later-in-the-admin-console}

1. Ouvrez **Infrastructure › Cloud provider › CloudStack** et choisissez l'onglet **API connection**.
2. Remplissez la carte **Connection** :

   | Champ | Exemple de valeur |
   |---|---|
   | Endpoint API | `https://cloudstack.example.com/client/api` |
   | Clé API (accès en écriture) | `XXXX` (laisser vide pour conserver la clé enregistrée) |
   | Clé secrète | `XXXX` |
   | Clé API RO / Clé secrète RO | optionnel, depuis le compte en lecture seule |
   | ID de zone | l'UUID de votre zone |

      ![L'onglet de connexion API avec un exemple d'endpoint et des clés masquées](https://nexcmp.com/fr/docs/images/infrastructure/cloudstack-02-connect-form.webp)

3. Cliquez sur **Test connection** avant d'enregistrer. Cela teste les clés saisies sans les enregistrer : la clé d'écriture avec `listZones` et `listCapabilities`, et la clé en lecture seule avec `listSystemVms`.


4. Cliquez sur **Save connection**. Laissez **Enable CloudStack connection** activé ; le désactiver arrêtera toutes les tâches CloudStack du worker, sans perte de données.
5. Ouvrez **Services › Virtual Machines › Policy › Provisioning** pour définir le réseau invité par défaut, les offres personnalisées et la paire de clés SSH par défaut pour les nouvelles machines virtuelles.

      ![Politique de VM, onglet Provisioning, avec l'ID du réseau par défaut](https://nexcmp.com/fr/docs/images/infrastructure/cloudstack-04-provisioning.webp)

6. Ouvrez **Infrastructure › Cloud provider › Sales IP pools** et, sous **Configure sales ranges**, définissez les **Sellable IP range prefixes** (par exemple `203.0.113.`) ainsi que les **préfixes IP exclus** si certaines adresses de la zone ne doivent jamais être vendues. Laissez le préfixe vide pour autoriser toutes les adresses libres.

      ![Pools d'adresses IP de vente avec le préfixe vendable 203.0.113. défini](https://nexcmp.com/fr/docs/images/infrastructure/cloudstack-05-sales-ip-pool.webp)

### Ce que NexCMP lit et écrit {#what-nexcmp-reads-and-writes}

| Domaine | Lectures | Modifications |
|---|---|---|
| VMs | liste, états, historique d'utilisation, endpoint de console | déployer, démarrer, arrêter, redémarrer, réinstaller, supprimer, redimensionner, réinitialiser le mot de passe et la clé SSH |
| Disques et instantanés | volumes, instantanés de VM, sauvegardes | créer, attacher, détacher, redimensionner, supprimer, instantané, restaurer |
| Réseau | réseaux, routeurs, IP publiques, pare-feu, redirection de port, règles de répartition de charge | associer et libérer des IP publiques, NAT statique, pare-feu, redirection de port, règles de trafic sortant, réseaux et ACL pour le Cloud Privé |
| Catalogue | offres de service, de disque et de réseau, modèles, ISO, types de système d'exploitation | enregistrer et supprimer des modèles et des ISO (Images), offres de service lors de la création de plans personnalisés |
| Kubernetes | versions prises en charge, clusters, configuration | projets, limites de ressources, réseaux, clusters (module Kubernetes) |
| Clé en lecture seule | hôtes, clusters, pools de stockage, VM système, capacité, plages IP VLAN | aucun |

### CPU et RAM en direct, et bande passante {#live-cpu-and-ram-and-bandwidth}

- **Hot-plug.** Une VM en cours d'exécution peut être redimensionnée sans redémarrage uniquement lorsque son modèle le permet (extensible dynamiquement) et que le système invité active de nouveaux CPU et de la RAM. NexCMP active Auto Scaling pour les modèles dont le nom se termine par `vN` avec N supérieur ou égal à 6, ou lorsque vous le définissez manuellement dans le champ **vCPU/RAM hot-plug** du modèle. Voir [Templates](https://nexcmp.com/fr/docs/infrastructure/templates/).
- **Source de la bande passante.** Avec les paramètres par défaut, NexCMP mesure le trafic à partir des statistiques de VM CloudStack (`listVirtualMachinesUsageHistory`, interrogées toutes les 5 minutes et additionnées par interface réseau de VM). Les chiffres incluent le trafic entre les VM, ils peuvent donc être légèrement supérieurs à ce qu'un routeur de périphérie compterait. Maintenez la collecte des statistiques de VM CloudStack activée ; les lacunes supérieures à la rétention des statistiques sont ignorées. Voir [Bandwidth](https://nexcmp.com/fr/docs/catalog/bandwidth/).

## Vérification {#verify}

1. **Test connection** renvoie « Write key: OK » avec votre zone et la version de CloudStack.
2. **Infrastructure › Cloud provider › Providers** affiche le fournisseur comme actif avec une heure de test récente. Le panneau de santé du tableau de bord n'affiche plus « CloudStack: not connected ».
3. **Sales IP pools** liste les adresses libres (actualisation environ une fois par minute).
4. Commandez une petite VM depuis le portail client ou la console d'administration et vérifiez qu'elle atteint l'état Running, qu'elle dispose d'une IP publique et que vous pouvez ouvrir la console.

## Limites et remarques {#limits-and-notes}

- Un seul cluster CloudStack peut être connecté dans cette version de NexCMP. La boîte de dialogue **Add cloud provider** peut tester les clés d'un second cluster mais ne peut pas les enregistrer.
- Une seule zone CloudStack est attachée à la zone par défaut de NexCMP ; un CloudStack avec plusieurs zones est limité à la zone que vous saisissez, de sorte que les VM, IP et réseaux des autres zones sont ignorés.
- La suppression du réseau invité dans CloudStack entraîne l'échec de chaque nouveau déploiement. La console d'administration affiche un avis rouge lorsque le réseau disparaît.
- Les identifiants ne quittent jamais le serveur. L'API ne renvoie que les quatre derniers caractères.

## Dépannage {#troubleshooting}

| Symptôme | Cause | Solution |
|---|---|---|
| `listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature` | Clé ou secret d'API incorrect, clé d'un autre utilisateur ou problème d'horloge sur le serveur du panneau | Générez à nouveau les clés avec `cmk generate userkeys` et collez les deux. Vérifiez l'heure du serveur du panneau. |
| Test : `listZones: …` ou délai d'attente dépassé | Le serveur du panneau ne peut pas joindre l'URL de l'API | Vérifiez le DNS, le pare-feu et le chemin `/client/api` exact. |
| Assistant : « network not found in that zone for this API key » | Le réseau choisi appartient à un autre compte ou à une autre zone | Créez le réseau dans le compte dédié (voir ci-dessus) et exécutez à nouveau **Test connection**. |
| Assistant : « pick a zone and a network » | Test non exécuté, ou aucune zone ni aucun réseau sélectionné | Cliquez sur **Test connection** et choisissez les deux listes. |
| Bannière « CloudStack key not configured » | Aucune clé enregistrée pour l'instant (« Connect later ») | Remplissez la carte Connection, **Save connection**, puis **Test connection**. |
| Bannière « CloudStack connection is OFF » | Le commutateur **Enable CloudStack connection** est désactivé | Activez-le et enregistrez. |
| Clé en lecture seule : « unusable … » lors du test | Permission de rôle manquante ou compte erroné | Vérifiez les six commandes autorisées et assurez-vous que le compte se trouve dans le domaine ROOT. |
| « Zone public IP ranges not measured yet » ou « no public IP ranges declared » | Pas de clé en lecture seule, ou la zone n'a vraiment aucune plage publique | Ajoutez la clé en lecture seule ou ajoutez une plage d'IP publiques dans CloudStack. |
| "Pool vide — attendez 60 s pour la synchronisation vmd" | La liste des IP est actualisée par le worker une fois par minute | Attendez une minute et rechargez. |
| "plus d'IP libres dans la plage 203.0.113." | Toutes les adresses du préfixe vendable sont occupées | Ajoutez des adresses à la zone, élargissez le préfixe ou libérez les IP inutilisées. |
| "Échec de la récupération des données réseau (CloudStack ne répond pas ou la clé manque de permissions)" | La clé a perdu l'accès ou CloudStack est hors ligne | Exécutez **Test connection** ; vérifiez que le compte est activé. |
| "Le réseau invité N'EXISTE PAS" | Le réseau a été supprimé dans CloudStack | Créez à nouveau le réseau et définissez-le comme valeur par défaut sous Provisioning. |


