Proxmox : utiliser Cloud-Init pour déployer des machines virtuelles Ubuntu

Dans ce tutoriel, je vais vous expliquer comment déployer des machines virtuelles sous Ubuntu avec Proxmox en utilisant Cloud-Init.

A la fin de ce tuto, vous pourrez déployer une machine virtuelle sous Ubuntu en quelques clics et le tout en moins de 3 minutes avec une VM prête.

Présentation de Cloud-Init

Cloud-Init est un projet Open Source de Canonical pour son OS Ubuntu qui est disponible depuis 2010.

Cloud-Init permet à l’aide d’un fichier au format YAML de configurer et d’exécuter des actions sur une machine virtuelle après son démarrage.

Voici quelques actions possibles :

  • Nommage de la machine
  • Configuration du réseau
  • Gestion des utilisateurs
  • Clef SSH
  • Mises à jour
  • Installation de paquets

Cloud-Init a très vite était adopté par les fournisseurs de Cloud Publics qui permet la configuration d’une machine virtuelle par le client en important un fichier YAML, on retrouve Cloud-Init chez les fournisseurs suivants :

  • Azure
  • AWS
  • Google
  • IBM
  • OVH
  • Scaleway

Cloud-Init a également supporté par des solutions de Cloud Privé :

  • VMware
  • Proxmox
  • OpenStack

Du fait de son adaptions par des solutions de Cloud Publics et Privé, Cloud-Init est maintenant disponible sur de nombreuse distribution Linux.

Fonctionnement de Cloud-Init

Je ne vais pas rentrer dans le détail du fonctionnement de Cloud-Init, mais vous donnez les grandes lignes.

Si vous avez déjà installé des machines virtuelles sous Ubuntu, vous n’avez pas d’option Cloud-Init à l’installation qui vous permet de configurer l’ordinateur virtuel directement.

Pour utiliser Cloud-Init, il faut passer par une image d’installation spécifique que l’on va convertir en template, ensuite on duplique ce template et on injecte le fichier YAML qui va configurer la machine virtuelle

Intégration de Cloud-Init dans Proxmox

Pour utiliser Cloud-Init dans Proxmox, vous avez deux solutions :

  • Utiliser les options disponible dans l’interface Web de Proxmox qui sont limités en terme de configuration
  • Utiliser un fichier YAML

Dans ce premier tutoriel, nous allons avoir comment utiliser Cloud-Init à travers l’interface Web de Proxmox.

Préparation du Template Cloud-Init dans Proxmox

Télécharger l’image pour Ubuntu

Pour commencer récupérer le lien de téléchargement de l’image Ubuntu qui est disponible ici : https://cloud-images.ubuntu.com/

Pour ce tutoriel, j’ai choisi l’image : jammy-server-cloudimg-amd64.img

Après voir copier le lien aller sur l’interface de Proxmox dans un stockage où vous pouvez enregistrer des ISO, depuis cette page, cliquer sur Download from URL 1.

Dans le champ URL 1 copier le lien et cliquer sur Query URL 2.

Les informations du fichier récupérés, cliquer sur le bouton Download 1.

Patienter pendant le téléchargement de l’image …

Le téléchargement terminé, fermer la fenêtre 1.

L’image est disponible sur le serveur Proxmox.

Création du template Ubuntu Cloud-Init

Maintenant que nous avons l’image, nous allons pouvoir passer à la création du template pour déployer des machines virtuelles sur Ubuntu.

La création du template va se faire en ligne de commande.

Avertissement

Les commandes qui vont suivre doivent être adapter à votre environnement et besoins.

On va commencer par créer une machine virtuelle nommé ubuntu-2204-cloudinit-tempalte avec 4Go de RAM et une carte réseau et elle aura comme ID 9000.

qm create 9000 --name "ubuntu-2204-cloudinit-template" --memory 4096 --net0 virtio,bridge=vmbr0

Si on regarde dans l’interface Web, on peut voir la machine virtuelle qui a été créée.

Si vous le souhaitez, vous pouvez modifier la partie Hardware de la VM, comme par exemple ajuster le nombre de CPU.

On va ensuite importer l’image télécharger en tant que disque pour pour la VM :

qm importdisk 9000 /mnt/pve/ISO/template/iso/jammy-server-cloudimg-amd64.img vm-storage

Lors de la création de la commande, on peut voir le nom du disque, pour mon cas : vm-9000-disk-0.

Dans l’interface Web, je retrouve bien le disque que l’on vient de créé.

Maintenant on attaque le disque à la machine virtuelle de template:

qm set 9000 --scsihw virtio-scsi-pci --scsi0 vm-storage:vm-9000-disk-0

On voit que le disque est maintenant lié à l’ordinateur virtuel.

Par défaut le disque fait 2GB, je vais l’augmenter de 98GB pour arriver à un disque de 100GB :

qm resize 9000 scsi0 +98G

On configure la VM pour démarrer sur le disque :

qm set 9000 --boot c --bootdisk scsi0

On ajoute un port Serie (prérequis pour utiliser Cloud-Init)

qm set 9000 --serial0 socket --vga serial0

On ajoute un volume dédié à Cloud-Init :

qm set 9000 --ide2 vm-storage:cloudinit

On transforme la machine virtuelle en template :

qm template 9000

Depuis l’interface Web, on retrouve la machine virtuelle « template ».

Déployer une machine virtuelle Ubuntu en utilisant Cloud-Init

Dernière étape du tutoriel, on va maintenant déployer une machine virtuelle basé sur notre template en personnalisant les paramètres Cloud-init dans Proxmox.

Depuis le template, cliquer sur Mode 1 puis sur Clone 2.

Configurer l’ID de la VM 1, nommer la 2, choisir le type Full Clone 3, choisir le stockage 4 et cliquer sur le bouton Clone 4.

Patienter pendant l’opération de clonage, on peut voir que la VM est verrouillé le temps de la copie, il y a un cadenas sur l’icone.

La copie terminée, sélectionner la VM et aller dans les paramètres Cloud-Init 1.

Les options au niveau de Cloud-Init de Proxmox sont assez limitées, mais cela permet déjà d’avoir une VM préconfigurée avec l’utilisateur de créer, la configuration IP et un OS à jour.

Je ne fais pas tous les paramètres disponibles, c’est assez simple à faire, sélectionner le paramètre à configurer 1 et sur Edit 2.

Modifier le paramètre 1 et cliquer sur OK 2. Ici je vais indiquer le nom de mon utilisateur.

Voici la configuration que je vais appliquer, pour terminer, il faut cliquer sur Regenerate Image 1.

Dans la cas d’une configuration de la carte en DHCP, c’est les serveurs DNS du service DHCP qui seront utilisés.

Maintenant, je vais démarrer la VM depuis la console pour voir l’application des paramètres Cloud-Init :

Sur les captures ci-dessous, on peut voir l’utilisation du Cloud-Init et l’installation des mises à jour d’Ubuntu.

Le démarrage terminé, je peux me connecter avec l’utilisateur configuré dans Cloud-Init.

On remarquera également que la machine virtuelle à le nom configuré dans Proxmox.

Vous savez comment déployer une machine virtuelle sous Ubuntu en utilisant Cloud-Init dans Proxmox

Dépannage : terminal bloqué sur starting serial terminal on interface serial0

En se connectant à la console, il arrive que l’on bloque sur starting serial terminal on interface serial0

Il suffit d’appuyer sur Entrée pour récupérer le prompt.

Une autre solution est de changer la carte vidéo de la VM par la carte par défaut.




Laisser un commentaire