---
title: Modèles d'OS et ISO
description: Préparez les images OS déployées par vos clients : créez et enregistrez des templates CloudStack et configurez des templates d'images cloud Proxmox VE.
url: https://nexcmp.com/fr/docs/infrastructure/templates/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Modèles d'OS et ISO {#os-templates-and-isos}

> **Où trouver dans l'admin :** Services › Virtual Machines › Template (`/vm/templates`). Les templates Proxmox sont listés par cluster dans Infrastructure › Cloud provider › Providers › (cluster) › Clusters.

## Description {#what-it-does}

Un modèle est l'image du système d'exploitation à partir de laquelle une nouvelle VM démarre. NexCMP ne stocke pas les images lui-même : il lit ce que CloudStack rapporte (modèles prêts et en vedette) ou ce que vous listez pour un cluster Proxmox, et vous permet de choisir celles qui sont vendues, avec un nom orienté client, une icône et un utilisateur de connexion. Cette page montre comment préparer des images qui fonctionnent bien avec NexCMP : connexion par mot de passe, mise à l'échelle en direct du processeur et de la RAM, fichier d'échange et disque racine qui s'adapte à la taille du forfait.

## Prérequis {#requirements}

| Élément | Prérequis |
|---|---|
| Générateur de modèles CloudStack | Une machine Linux avec `libguestfs-tools` (`virt-customize`, `virt-sparsify`, `guestfish`), `qemu-utils`, `curl` et environ 5 Go de disque libre. Aucun KVM ni root n'est requis. Accès Internet pour les installations de paquets (ou construction avec `--offline`). |
| Emplacement du générateur | Il est fourni avec chaque version dans `/opt/nexcmp/releases/<version>/share/templates/` sur le serveur du panneau. Vous n'avez pas besoin de l'exécuter là-bas : copiez le dossier sur n'importe quelle machine Linux. |
| Serveur Web | N'importe quel serveur HTTP(S) que la VM de stockage secondaire de CloudStack peut atteindre, pour publier le fichier `.qcow2` terminé. Il n'a pas besoin d'être accessible depuis Internet. |
| CloudStack | Un compte autorisé à enregistrer des modèles, ainsi que l'identifiant de votre zone et d'un type d'OS correspondant. Voir [CloudStack](https://nexcmp.com/fr/docs/infrastructure/cloudstack/). |
| Proxmox VE | VM de modèles cloud-init avec l'agent invité QEMU, un par OS et par nœud. Voir [Proxmox VE](https://nexcmp.com/fr/docs/infrastructure/proxmox/). |
| Dépend de | [CloudStack](https://nexcmp.com/fr/docs/infrastructure/cloudstack/) ou [Proxmox VE](https://nexcmp.com/fr/docs/infrastructure/proxmox/) connectés au préalable. |

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

### CloudStack : créer un modèle {#cloudstack-build-a-template}

Images de base prises en charge (l'image du fournisseur est téléchargée et sa somme de contrôle est vérifiée avant toute modification) :

| Image | `--distro` | Utilisateur de connexion |
|---|---|---|
| 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` |

Plus de distributions : ajoutez une ligne à `distros.conf` (URL de l'image, fichier de somme de contrôle, famille `deb` ou `rpm`).

1. Copiez le générateur sur une machine de construction et exécutez-le :

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

   Ajoutez `--panel-url https://cloud.example.com` pour intégrer un agent de surveillance de premier démarrage optionnel qui s'inscrit auprès de votre panneau (HTTPS uniquement). Sans cela, aucun agent n'est ajouté. Autres options : `--base <file>` pour utiliser une image que vous avez téléchargée, `--offline` pour ignorer les installations de paquets.

2. Le résultat est `out/ubuntu-24.04-v7.qcow2` et son `.sha256`. La construction se termine par l'exécution de `verify-image.sh`, qui inspecte l'image terminée en lecture seule et rejette une image défectueuse (elle est conservée sous le nom de `.unverified`). Vous pouvez l'exécuter à nouveau à tout moment : `./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent`.

Ce que le générateur intègre dans l'image :

| Élément | Raison |
|---|---|
| `qemu-guest-agent` | CloudStack peut interroger la VM concernant les CPU et les IP, et la placer en veille pour les snapshots. |
| cloud-init avec la source de données CloudStack, `set_passwords` à chaque démarrage, connexion SSH par mot de passe | Le mot de passe généré est récupéré depuis le routeur virtuel et **Reset password** fonctionne. |
| Une règle udev pour l'ajout à chaud de CPU et de RAM | Les vCPU et la RAM ajoutés à chaud s'activent d'eux-mêmes, permettant ainsi le redimensionnement à chaud et l'Auto Scaling. |
| Un service de fichier d'échange | Crée `/swapfile` de la plus petite valeur entre 50 % de la RAM et 4 GiB après l'agrandissement du disque. `touch /etc/cmp-swap.disabled` le désactive. |
| cloud-init `growpart` et `resizefs` | Le petit disque racine s'agrandit à la taille du disque du forfait au premier démarrage. |
| machine-id vide, pas de clés d'hôte SSH | Chaque VM obtient sa propre identité. |

::: warning Nommer le modèle `<OS> <version> <vN>`
NexCMP active **Auto Scaling** pour les modèles dont le nom se termine par `vN` ou `vN.M` avec **N de 6 ou plus** (`Ubuntu 24.04 v7`, `Rocky Linux 9 v7.1`). Le générateur applique cette règle pour `--version`. Enregistrez le modèle avec le nom exact affiché.
:::

3. Publiez le fichier et enregistrez-le dans CloudStack. Utilisez le SHA-256 affiché par la compilation et n'effectuez l'enregistrement qu'une fois le fichier entièrement écrit :

   ```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` permet à CloudStack de générer le mot de passe de la VM.
   - `isdynamicallyscalable=true` permet le redimensionnement à chaud.
   - `host-passthrough` est nécessaire pour le démarrage des images récentes de Rocky et Alma ; `osdefault` maintient la portabilité du contrôleur de disque.

4. Attendez que le modèle atteigne **Download Complete / Ready**.

L'image du fournisseur conserve sa petite taille virtuelle (environ 3.5 GiB pour Ubuntu et Debian, 10 GiB pour Rocky). N'oubliez pas qu'un disque de forfait ne peut pas être plus petit que le disque du modèle.

### Proxmox VE : créer un modèle {#proxmox-ve-make-a-template}

Créez un modèle de VM cloud-init par système d'exploitation sur chaque nœud sur lequel vous déployez, avec l'agent invité installé et la connexion root activée, puis enregistrez-le en tant que `os-key=vmid`. Les commandes complètes se trouvent dans [Proxmox VE](https://nexcmp.com/fr/docs/infrastructure/proxmox/). Le générateur CloudStack ci-dessus **n'est pas** destiné à Proxmox : il configure cloud-init pour la source de données CloudStack.

### ISO {#isos}

Les clients montent leurs propres ISO via le module **Images** (CloudStack) ou le module Serveur dédié. Ceux-ci sont distincts des modèles d'OS de cette page. Voir [Modules](https://nexcmp.com/fr/docs/infrastructure/modules/) et [Dedicated servers](https://nexcmp.com/fr/docs/infrastructure/dedicated/).

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

1. Ouvrez **Services › Virtual Machines › Template**. Cliquez sur **Sync now** ou patientez jusqu'à 15 minutes. La synchronisation ajoute les modèles prêts et mis en avant dans CloudStack.

      ![La page Template listant les modèles synchronisés avec leur état prêt et la colonne de hot-plug CPU](https://nexcmp.com/fr/docs/images/infrastructure/templates-01-list.webp)

2. Cliquez sur **Edit** sur un nouveau modèle et définissez ce que les clients voient :

   | Champ | Exemple de valeur |
   |---|---|
   | Nom d'affichage pour les clients | `Ubuntu 24.04 LTS` |
   | Famille d'OS | `ubuntu` (icône et utilisateur par défaut) |
   | Version | `24.04` |
   | Nom d'utilisateur de connexion | `ubuntu` (Windows : `Administrator` ; autre : `root`) |
   | Icône | URL d'image, chemin ou nom |
   | Ordre | `10` |
   | Actif | On |
   | Hot-plug vCPU/RAM (redimensionnement à chaud) | **Auto by name (v6 or later)**, **Yes** ou **No (needs a restart)** |

      ![Dialogue d'édition de modèle avec un nom orienté client, une famille d'OS, un utilisateur de connexion et l'option de hot-plug](https://nexcmp.com/fr/docs/images/infrastructure/templates-02-edit.webp)

3. Activez le modèle. Un modèle que CloudStack ne liste plus est masqué automatiquement (et vous en êtes averti sur Telegram si configuré) ; il n'est jamais supprimé de NexCMP.

### Remplacer un modèle par une version plus récente {#replace-a-template-with-a-newer-build}

Utilisez **More › Replace with new version** sur le modèle vendu. Choisissez le nouveau modèle prêt et actuellement désactivé. L'entrée vendue pointe alors vers la nouvelle version tout en conservant son nom, son ordre et son icône ; l'ancienne est désactivée comme solution de repli (pour revenir en arrière, utilisez **Replace** sur la nouvelle entrée. Les machines virtuelles en cours d'exécution ne sont pas touchées. Si la nouvelle version appartient à une autre famille de système d'exploitation, cochez d'abord la confirmation.

## Vérification {#verify}

1. La ligne indique **ready** et, pour les versions nommées `vN` avec N supérieur ou égal à 6, **CPU hot-plug: supported**.
2. Déployez une machine virtuelle de test à partir du modèle et vérifiez à l'intérieur :
   - vous pouvez vous connecter avec le mot de passe affiché dans le portail ;
   - `df -h /` affiche la taille de disque du plan ;
   - après un redimensionnement à chaud (**Change plan** sans redémarrage), `nproc` et `free -m` augmentent ;
   - `swapon --show` liste `/swapfile` (les disques disposant de moins de swap plus 2 GiB d'espace libre sont ignorés) ;
   - `systemctl is-active qemu-guest-agent` affiche `active`.
3. Si vous avez intégré l'agent, la machine virtuelle apparaît dans les hôtes surveillés du panneau une minute après le premier démarrage. La machine virtuelle a besoin de sa propre adresse IP publique : le panneau la reconnaît par son IP source publique.

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

- Le générateur est réservé à Linux et produit des images Linux. D'autres images (par exemple Windows) peuvent être enregistrées dans CloudStack par d'autres moyens ; NexCMP liste ce que CloudStack rapporte.
- Seul l'agent amd64 est fourni ; les autres architectures ignorent l'installation de l'agent.
- L'image est vérifiée avec `guestfish` mais n'est jamais démarrée par le générateur. Déployez toujours une machine virtuelle de test avant de vendre une nouvelle image.
- Ignorez l'agent sur une machine virtuelle avec `touch /etc/cmp-agent.disabled` avant le premier démarrage. Supprimez-le plus tard avec `systemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agent`, puis supprimez l'agent dans la console d'administration.

## Dépannage {#troubleshooting}

| Symptôme | Cause | Solution |
|---|---|---|
| `virt-customize` ne parvient pas à télécharger les paquets | La machine de construction n'a pas d'accès réseau sortant | Corrigez le DNS ou le proxy sur cette machine, ou effectuez la construction avec `--offline` sur une image de base qui contient déjà les paquets. |
| `libguestfs: error: /usr/bin/supermin exited with error status 1` | Le noyau de l'hôte n'est pas lisible par l'utilisateur actuel (Ubuntu) | `sudo chmod +r /boot/vmlinuz*`, ou exécutez la construction en tant que root. |
| La somme de contrôle diffère ou l'image du fournisseur n'existe plus | Les fournisseurs déplacent leurs fichiers « latest » | Téléchargez vous-même l'image, vérifiez-la par rapport au fichier de somme de contrôle du fournisseur et transmettez-la avec `--base`. |
| Rocky : un système XFS plus récent ne peut pas être monté | Le noyau de l'hôte est trop ancien | Construisez sur une machine dotée d'un noyau récent. |
| `--version must be v6 or higher` | Le nom doit être `vN` avec N supérieur ou égal à 6 | Utilisez `--version v7`. |
| `--panel-url must be a plain https:// URL` | L'agent est téléchargé et exécuté en tant que root, le HTTP non sécurisé est donc refusé | Utilisez une URL `https://` sans espaces, guillemets ni chaîne de requête. |
| Le modèle reste **not ready** | CloudStack n'a pas terminé le téléchargement | Attendez **Download Complete**, vérifiez que la machine virtuelle de stockage secondaire peut atteindre l'URL. |
| La ligne indique **no-pass** | Le modèle a été enregistré sans `passwordenabled=true` | Enregistrez-le à nouveau avec ce paramètre. |
| Le branchement à chaud du processeur indique **unsupported** | Le nom ne se termine pas par `vN` (N supérieur ou égal à 6) | Renommez le modèle ou définissez **vCPU/RAM hot-plug** sur **Yes** dans Edit si l'image possède la règle udev. |
| « Empty template list » après la première connexion | La synchronisation ne s'est pas exécutée | Cliquez sur **Sync now** (nécessite l'exécution du service d'arrière-plan) ou attendez le cycle de 15 minutes. |
