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.
Description
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.
Prérequis
| É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. |
| 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. |
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
Les commandes utilisent CloudMonkey (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
Créez le domaine qui contiendra tout ce qui appartient à NexCMP.
bashcmk create domain name=nexcmpNotez l'identifiant
iddans la sortie ; il est utilisé comme<domain-id>ci-dessous.Trouvez le rôle que vous souhaitez attribuer au compte.
bashcmk list roles type=DomainAdmin filter=id,nameRô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.vmest défini sur true ; NexCMP arrête alors la VM et CloudStack la purge aprèsexpunge.delay.Créez le compte et son premier utilisateur. Utilisez un mot de passe aléatoire long ; il ne sera plus jamais saisi.
bashcmk 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>Générez la paire de clés API pour le nouvel utilisateur.
bashcmk list users domainid=<domain-id> username=nexcmp-api filter=id,username cmk generate userkeys id=<user-id>Copiez
apikeyetsecretkey. 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.Assurez-vous que le domaine ne possède pas de limites de ressources restrictives (instances, volumes, IP publiques, réseaux, snapshots, templates, projets).
bashcmk list resourcelimits domainid=<domain-id>
Créer le réseau invité pour les VM des clients
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
- 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). NexCMP liste les templates prêts et mis en avant.
Optionnel : clé en lecture seule pour les pages d'infrastructure
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=denyCré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
Depuis le serveur du panneau :
bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/apiN'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
Dans l'assistant d'installation
L'étape 2 de l'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é.

Plus tard, dans la console d'administration
Ouvrez Infrastructure › Cloud provider › CloudStack et choisissez l'onglet API connection.
Remplissez la carte Connection :
Champ Exemple de valeur Endpoint API https://cloudstack.example.com/client/apiClé API (accès en écriture) XXXX(laisser vide pour conserver la clé enregistrée)Clé secrète XXXXClé API RO / Clé secrète RO optionnel, depuis le compte en lecture seule ID de zone l'UUID de votre zone 
Cliquez sur Test connection avant d'enregistrer. Cela teste les clés saisies sans les enregistrer : la clé d'écriture avec
listZonesetlistCapabilities, et la clé en lecture seule aveclistSystemVms.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.
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.

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.
Ce que NexCMP lit et écrit
| 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
- 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
vNavec 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. - 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.
Vérification
- Test connection renvoie « Write key: OK » avec votre zone et la version de CloudStack.
- 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 ».
- Sales IP pools liste les adresses libres (actualisation environ une fois par minute).
- 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
- 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
| 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. |