Salut à tous ! Aujourd’hui, nous plongeons dans un tutoriel un peu spécial, direction le monde fascinant de la virtualisation, et plus précisément, l’univers de Proxmox !
Vous le savez sûrement, Proxmox est une solution de virtualisation open-source puissante qui permet de gérer des machines virtuelles (VM) et des conteneurs (LXC) avec une aisance déconcertante. Basé sur Debian, Proxmox utilise KVM comme hyperviseur, offrant ainsi performance et stabilité.
Ces derniers temps, Proxmox a le vent en poupe, notamment suite au rachat de VMware par Broadcom. Ce bouleversement a poussé de nombreux administrateurs à migrer vers Proxmox, une alternative robuste et flexible.
Récemment, j’ai eu besoin de déployer une VM sur Proxmox. Plusieurs méthodes existent : l’installation manuelle via un ISO, l’utilisation d’un template préconfiguré (n’oubliez pas de réinitialiser les clés et identifiants uniques, j’ai d’ailleurs un script pour ça : clone.sh), ou encore, la solution que nous allons explorer aujourd’hui : Cloud-Init !
Chaque méthode a ses forces et ses faiblesses, mais aujourd’hui, concentrons-nous sur la puissance de Cloud-Init.
Cloud-Init : Votre Assistant Sysadmin 2.0
Avant de plonger dans la configuration, qu’est-ce que Cloud-Init exactement ? C’est un outil magique qui simplifie considérablement la vie des administrateurs système. Personnellement, je l’utilise intensivement, tant pour mon travail que pour mes projets personnels. C’est un gain de temps et une efficacité redoutable !
Imaginez un couteau suisse, mais pour vos machines virtuelles. Voilà, c’est ça, Cloud-Init ! Il automatise la configuration initiale de vos VM lors de leur premier démarrage.
Les avantages sont nombreux :
- Fini les connexions manuelles à chaque machine !
- Adieu les tâches répétitives et fastidieuses !
- Un gain de temps considérable !
Croyez-moi, quand j’ai découvert cet outil, j’étais aux anges. Surtout lorsqu’il s’agit de configurer des dizaines de machines… Un vrai bonheur !
Avec un simple fichier, vous dictez à Cloud-Init les actions à effectuer : configuration réseau, création d’utilisateurs, installation de logiciels… Tout est possible ! Cloud-Init exécute vos instructions de manière autonome, dès le premier démarrage. Fini les erreurs, les oublis et les incohérences entre vos machines. Elles sont toutes configurées à l’identique, avec une précision chirurgicale.
D’où vient cette merveille ? À l’origine, c’est Canonical, les créateurs d’Ubuntu, qui ont développé Cloud-Init. Mais son adoption a été fulgurante. Aujourd’hui, c’est devenu un standard de facto pour la configuration des serveurs dans le cloud. Que vous utilisiez Amazon Web Services, Google Cloud, Microsoft Azure, ou même Proxmox sur votre propre infrastructure, Cloud-Init est là !
Vous voulez savoir comment l’utiliser ? Patience, nous y arrivons ! Avant cela, voyons comment importer un template Cloud-Init dans Proxmox.
Préparation du Template : Le Fondement de l’Automatisation
Pour commencer, il vous faut un template Cloud-Init. Vous pouvez le créer vous-même ou en télécharger un préconfiguré.
Pour ce premier tutoriel, et pour optimiser notre temps, nous utiliserons un template Ubuntu 24.04, directement disponible sur le site officiel d’Ubuntu :
Une fois le fichier téléchargé, déplacez-le dans le répertoire de stockage de vos images ISO sur Proxmox.
Habituellement, vous créeriez une nouvelle VM, sélectionneriez l’ISO, et lanceriez l’installation. Mais aujourd’hui, nous allons emprunter une voie différente : la ligne de commande (CLI) de Proxmox. Vous allez vite comprendre pourquoi !
Commençons par créer notre VM :
qm create 1000 --memory 2048 --core 2 --name ubuntu-init --net0 virtio,bridge=vmbr0
Pas de panique ! Cette commande crée une VM avec l’ID 1000, 2 Go de RAM, 2 cœurs, le nom “ubuntu-init”, et une interface réseau. Simple, non ?
Après avoir exécuté cette commande, une nouvelle VM apparaîtra dans votre interface Proxmox :
Maintenant, ajoutons notre template Cloud-Init à cette VM, c’est-à-dire le disque dur. Naviguez vers le répertoire où vous avez téléchargé le template (normalement /var/lib/vz/template/iso
), et exécutez la commande suivante :
qm importdisk 1000 noble-server-cloudimg-amd64.img local-lvm
Cette commande importe le disque dur dans la VM 1000, en utilisant le stockage “local-lvm” (adaptez si votre stockage se nomme différemment).
Après l’exécution, vous obtiendrez un retour similaire à celui-ci :
Avec a la fin bien entendu :
....
transferred 3.5 GiB of 3.5 GiB (100.00%)
unused0: successfully imported disk 'local-lvm:vm-1000-disk-0'
root@pxmx-1:/var/lib/vz/template/iso#
Maintenant, attachons le disque à la VM :
root@pxmx-1:/var/lib/vz/template/iso# qm set 1000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-1000-disk-0
update VM 1000: -scsi0 local-lvm:vm-1000-disk-0 -scsihw virtio-scsi-pci
root@pxmx-1:/var/lib/vz/template/iso#
Il faut ensuite ajouter un lecteur CD-ROM virtuel à la VM pour que Proxmox puisse injecter la configuration Cloud-Init :
root@pxmx-1:/var/lib/vz/template/iso# qm set 1000 --ide2 local-lvm:cloudinit
update VM 1000: -ide2 local-lvm:cloudinit
Logical volume "vm-1000-cloudinit" created.
ide2: successfully created disk 'local-lvm:vm-1000-cloudinit,media=cdrom'
generating cloud-init ISO
root@pxmx-1:/var/lib/vz/template/iso#
Définissons le démarrage de la VM sur le disque dur :
root@pxmx-1:/var/lib/vz/template/iso# qm set 1000 --boot c --bootdisk scsi0
update VM 1000: -boot c -bootdisk scsi0
root@pxmx-1:/var/lib/vz/template/iso#
Enfin, assurons-nous d’avoir une console série pour interagir avec la VM :
root@pxmx-1:/var/lib/vz/template/iso# qm set 1000 --serial0 socket --vga serial0
update VM 1000: -serial0 socket -vga serial0
root@pxmx-1:/var/lib/vz/template/iso#
Vérifions dans l’interface Proxmox que notre VM est correctement configurée :
Comme vous pouvez le constater, tous les éléments ajoutés via la ligne de commande sont bien présents. La CLI est un outil puissant pour automatiser les tâches répétitives. Imaginez le potentiel, même sans Cloud-Init !
Configuration de Cloud-Init : La Touche Finale
Je pense que vous avez eu votre dose de terminal pour aujourd’hui ! Pour la suite, utilisons l’interface graphique de Proxmox, bien plus conviviale.
Pour configurer nos futures VM avec Cloud-Init, transformons d’abord notre VM actuelle en template. Cela facilitera le clonage. Cliquez simplement sur ce bouton :
Votre VM est maintenant un template :
Clonons ce template pour créer notre VM finale. Cliquez sur “Clone” :
Donnez un nom à votre VM et cliquez sur “Clone”.
Maintenant, configurons les paramètres Cloud-Init. Sélectionnez votre VM clonée, cliquez sur “Cloud-Init”, et vous accéderez à l’interface de configuration :
Vous pouvez configurer divers paramètres : nom d’utilisateur, mot de passe, paramètres réseau, DNS, et même insérer votre clé publique SSH.
Tout cela directement depuis l’interface de Proxmox ! Bien sûr, la CLI offre encore plus de possibilités, mais nous nous concentrons ici sur l’interface graphique pour plus de simplicité.
Conclusion : Devenez un Maître de l’Automatisation !
Félicitations, vous avez survécu à ce cours accéléré sur Proxmox et Cloud-Init !
Maintenant, imaginez la magie : déployer 10, 20, 100 VMs en quelques clics, toutes préconfigurées, sans jamais toucher une console. C’est le pouvoir de l’automatisation, et vous venez d’en maîtriser un pilier essentiel.
Ce que vous devez retenir :
- Gain de temps colossal : Fini les installations manuelles interminables. Un template + Cloud-Init = déploiement en quelques minutes.
- Élimination des erreurs humaines : Oubliez les “J’ai oublié d’activer SSH” ou “Le DNS est mal configuré”. Tout est codifié une fois pour toutes.
- Flexibilité totale : Modifier un mot de passe, ajouter une clé SSH, changer une adresse IP ? Un clic, un fichier YAML, et c’est réglé !
Et ensuite ?
- Allez plus loin : Intégrez des scripts personnalisés dans Cloud-Init (installation de Docker, configuration de pare-feu, monitoring…).
- Versionnez vos templates : Utilisez Ansible, Terraform, ou même des scripts Bash pour automatiser la création de vos images.
- Combinez avec d’autres outils : Proxmox + Cloud-Init + CI/CD = Une usine à serveurs ultra-rapide et fiable !
Le mot de la fin :
Cloud-Init, c’est comme avoir un assistant sysadmin infatigable qui travaille 24h/24 et 7j/7, sans jamais demander de pause café. Et le meilleur dans tout ça ? Il ne se plaint jamais !
Maintenant, à vous de jouer : clonez, testez, cassez, recommencez. Et lorsque vous aurez automatisé votre 50ème serveur, pensez à moi en sirotant un café bien mérité !