Créer des templates de machines virtuelles avec Cloud-Init

Cet article va vous expliquer comment créer des templates de machines virtuelles avec Cloud-Init.

Qu'est-ce que Cloud-init

Cloud-init va très simplement nous permettre de modifier les paramètres d'une machine virtuelle tels que l'utilisateur, le mot de passe, les clés SSH, le domaine DNS, les serveurs DNS et la configuration réseau.

Création du template

Avant de procéder à la création du template, il est nécessaire de télécharger une image prête à fonctionner avec Cloud-init. Pour se faire, j'utilise l'image Ubuntu Server Lunar que l'on retrouve sur le site cloud-images.ubuntu.com.

Aussi, pour cet article, j'utilise Proxmox pour le déploiement de mes machines virtuelles. Pour télécharger l'image, cliquer sur le nœud de votre cluster Proxmox, où sera créée la machine virtuelle, pour ouvrir un shell. Ensuite, lancer la commande suivante :

wget https://cloud-images.ubuntu.com/lunar/current/lunar-server-cloudimg-amd64.img

Nous pouvons désormais créer la machine virtuelle.

Création de la machine virtuelle

Pour créer un template, il faut passer par la création d'une machine virtuelle. Nous allons réaliser cette opération en passant par la ligne de commande, soit directement dans le shell. Pour ce faire, lancer la commande suivante :

qm create 1000 --name template-u2304 --cores 2 --memory 512 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci

En exécutant cette commande, nous aurons une nouvelle machine virtuelle nommée template-u2304 avec l'identifiant 1000, 2 cœurs CPU, 512 Mo de RAM, une carte réseau virtio et un contrôleur SCSI virtio.

Ceci étant, la machine virtuelle ne dispose d'aucun disque dur, nous allons donc créer un disque en l'important depuis l'image cloud que nous avons téléchargé, pour ce faire, exécuter la commande ci-dessous :

qm set 1000 --scsi0 local-lvm:0,import-from=/path/to/lunar-server-cloudimg-amd64.img

Avant d'exécuter la commande, il est important de modifier les valeurs telles que l'identifiant, le nom du disque de stockage ainsi que le chemin vers l'image cloud.

Ensuite, nous devons modifier l'ordre de démarrage des disques en forçant le boot uniquement sur le disque scsi0 :

qm set 1000 --boot order=scsi0

Ajouter le disque cloud-init

Cloud-init fonctionne comme un lecteur de disque. Il est donc nécessaire d'ajouter le lecteur de disque cloudinit à la machine virtuelle. Cela se fait par le biais de la commande :

qm set 1000 --ide2 local-lvm:cloudinit

Puis, nous allons créer un port série et l'utiliser en tant qu'affichage. Ceci est requis pour certaines images cloud-init.

qm set 1000 --serial0 socket --vga serial0

Convertir la VM en template

La dernière étape consiste à convertir la machine virtuelle en template. Pour ce faire, lancer la commande suivante :

qm template 1000

Vous disposez désormais d'un template de machine virtuelle utilisant cloud-init. Ce template va nous permettre de créer une nouvelle machine virtuelle.

Configuration de cloud-init

Il est possible de configurer les paramètres cloud-init du template en cliquant sur Cloud-init dans les paramètres du template. Depuis cette page, vous aurez la possibilité de modifier les paramètres suivants :

  • Nom de l'utilisateur
  • Mot de passe de l'utilisateur
  • Domaine DNS
  • Serveur DNS
  • Clé SSH
  • Configuration réseau

Une fois le ou les paramètres modifiés, il ne faut pas oublier de regénérer l'image.

Création d'une machine virtuelle à partir du template

Vous pouvez désormais créer un clone partiel ou complet depuis le template que nous venons de créer.

Sources