Quand vous créez un VPS chez un fournisseur cloud, vous choisissez une image, quelques ressources, une clé SSH, puis vous attendez quelques minutes, que la machine soit prête. Alors pourquoi, pour un simple test sur votre PC, faudrait-il repasser par toute une installation manuelle ?
Télécharger un ISO, créer la VM, installer le système, configurer l'utilisateur… À la fin, vous avez presque oublié ce que vous vouliez tester.
Et si nous reprenions certains des mécanismes du cloud, directement sur notre machine ?
C'est ce que nous allons faire avec Multipass : créer des VM Ubuntu, automatiser leur configuration, les faire communiquer entre elles et nous y connecter depuis notre PC. Pas seulement lancer des commandes : comprendre aussi ce qui se passe derrière.
Les pré-requis
Pour suivre cet article, prévoyez :
- Un PC Linux ou Windows ;
- Une connexion internet pour télécharger les images et les paquets ;
- Des ressources disponibles pour deux petites VM : nous attribuerons à chacune 1 Go de RAM et 10 Go de disque ;
- L'accès au repo github the-labs (Les configurations et instructions utilisées dans cet articles y sont disponibles) ;
Votre PC est la machine hôte. Une instance, dans cet article, est une VM créée avec Multipass.
Multipass
C'est quoi réllement multipass ?
Multipass permet de créer et de gérer des VM Ubuntu depuis le terminal. Vous choisissez une image, un nom et des ressources ; il s'occupe de lancer la machine. Tout se passe come si vous étiez en face d'un fournisseur cloud.
L'intérêt apparaît vite pour un labo : vous pouvez préparer une instance pour un essai, vous en débarrasser ensuite, puis en créer une nouvelle sans repasser par l'installation du système.
Mais comment peut-il aller aussi vite ?
Que se passe t-il en vrai ?
Les notions importantes :
- La cloud image : C'est une image de système préparée pour ce type de déploiement. Nous ne partons pas d'un installateur qui nous pose toutes les questions : nous partons d'une base déjà prête à être démarrée et personnalisée. c'est le secret derrière la vitesse à laquelle les fournisseurs cloud vous créent vos VPS.
- Cloud-init : Ce programme prend en charge la personnalisation de l'instance, notamment lors de son premier démarrage : utilisateurs, paquets, fichiers de configuration, commandes à exécuter. C’est lui qui fait d’une simple cloud-image une machine prête à l’emploi.
- Le cloud-config : C'est un format de fichier YAML qui permet de donner ces instructions à cloud-init. Pour faire simple : l'image fournit la base, le fichier décrit notre préparation et cloud-init l'applique. Voyez-vous le moment où l’on vous demande d’entrer votre clé SSH afin de valider la création de votre VPS ? C’est là que vous utilisez le cloud-config sans vous en rendre compte.
Multipass s'appuie sur les moteurs de virtualisation. Dans les environnements abordés ici, il s'agit d'Hyper-V sous Windows et de QEMU/KVM sous Linux. Commandez à mutlipass, et il s'occupe d'interagir avec le moteur de virtualisation à votre place.
Installation de multipass
Sous Linux, avec Snap disponible :
sudo snap install multipassSous Windows, vous pouvez passer par Winget :
winget install --exact --id Canonical.MultipassVous pouvez aussi utiliser l'installateur de Canonical, qui est la voie documentée officiellement pour Windows et macOS. Vérifiez notamment les prérequis d'Hyper-V si vous choisissez ce moteur sous Windows. Je vous recommande de voir la documentation pour plus de détails.
Une fois l'installation terminée, ouvrez un nouveau terminal :
multipass versionVous devez voir les versions du client et du service Multipass. Nous pouvons passer à notre première machine.
Creer vos Instances
La commande la plus courte est multipass launch. Sans autre précision, Multipass choisit l'image par défaut et génère un nom pour l'instance. Un peu comme Docker, il a ses idées en matière de noms.
Je l'ai annoncé plus tôt, la création d’une instance avec Multipass prend généralement moins de 2 minutes. À noter que la première fois que vous utilisez une cloud-image spécifique, Multipass la téléchargera d'abord. Ce détail mis à part, vos VM seront prêtes en moins de 2 minutes.
Créer vos instances (Niveau 1)
La commande la plus courte est multipass launch. Sans autre précision, Multipass choisit l'image par défaut et génère un nom pour l'instance. Un peu comme Docker, il a ses idées en matière de noms.
Pour l'exemple, donnons-lui plutôt des instructions précises :
multipass launch 26.04 --name srv-demo --disk 10G --memory 1G --cpus 1Nous demandons Ubuntu 26.04, 10 Go de disque, 1 Go de mémoire et un processeur virtuel. Le nom srv-demo nous permettra de retrouver facilement cette machine.
Une fois la création terminée, verifions ce que nous avons :
multipass listVous devez retrouver srv-demo, son état et son adresse IP. Attendez l'état Running avant de continuer.
Pour utiliser votre instance, ouvrez une session :
multipass shell srv-demoVous êtes maintenant dans votre VM. Essayez quelques commandes pour vous repérer :
hostname
whoami
uname -aVous obtenez respectivement le nom de la machine, votre utilisateur et les informations sur son noyau. Amusez-vous un peu avec quelques commandes linux. Pour revenir au terminal de votre PC, utilisez exit .
Pour ouvrir une session, Multipass utilise en arrière-plan une connexion SSH configurée automatiquement entre votre hôte et l’instance.
Une autre possibilité : exécuter une commande dans la VM sans y ouvrir une session interactive. Depuis votre PC, exécutez :
multipass exec srv-demo -- uname -aDepuis votre PC, essayez maintenant :
ping srv-demoOups, Rien ?? Si votre système ne retrouve pas ce nom, ce n'est pas forcément un problème avec la VM. Gardez ce résultat en tête : nous allons y revenir dans la partie réseau. Si le ping continue à tourner, arrêtez-le avec Ctrl+C.
Vous avez terminé vos essais et n'avez rien à conserver dans srv-demo ? Depuis votre PC :
multipass delete --purge srv-demoAttention :
--purgesupprime définitivement cette instance et les données de son disque. Récupérez vos fichiers utiles avant de lancer la commande.
Relancez multipass list : srv-demo a disparu. Vous pouvez reprendre sa commande de création pour obtenir une nouvelle machine.
C'est déjà pratique. Mais si nous devons réinstaller nos outils et préparer nos accès à chaque fois, il reste encore du travail répétitif. Passons au niveau suivant.
Créer vos instances (Niveau 2)
Quand vous créez un VPS, vous pouvez généralement choisir sa version d'OS et préparer vos accès. Nous allons faire de même avec notre cloud-config.
Notre objectif : créer deux instances, srv-01 et srv-02, avec quelques outils et un utilisateur demo accessible par clé SSH.
Nous avons précédement parlé de cloud-init & de cloud-config. Le cloud-config est un fichier yaml qui permet de définir des instructions sur les caracteristiques de l'instance à créer. les fichiers de configurations qui seront utilsées dans cette section sont disponibles sur ce repo. voici un exemple de cloud-config :
#cloud-config
hostname: srv-01
manage_etc_hosts: true
apt_update: true
apt_upgrade: true
locale: fr_FR.UTF-8
packages:
- build-essential
- gpg
- zsh
groups:
- devops
users:
- name: demo
groups: sudo,devops
shell: /bin/zsh
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh-authorized-keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFuqfhaycTfJKPVZsao0+3YUqEB2SGgnGPr3xlMKmq5r
runcmd:
- systemctl enable ssh
- systemctl start sshCette configuration donne des instructions sur les configurations suivant:
Quelques détails importants dans ce fichier :
#cloud-configindique le format à cloud-init ;hostnamedéfinit le nom à l'intérieur de la VM ;packagesliste les logiciels à installer ;demoest notre utilisateur supplémentaire, avec un shell Zsh et un accès par clé (important pour établir un accès ssh) ;runcmdactive et démarre le service SSH.
La documentation de cloud-init vous donnera plus détails sur tout ce qu'il est possible de faire avec les cloud-configs et que nous ne pouvons pas aborder ici.
Créer les instances à présent (les fichiers de configuration se trouver sur le repo :
multipass launch 24.04 --disk 10G --memory 1G --cpus 1 --name srv-01 --cloud-init ./srv-01.yml
multipass launch 24.04 --disk 10G --memory 1G --cpus 1 --name srv-02 --cloud-init ./srv-02.yml Enfin, vérifiez ce que nous avons demandé :
multipass exec srv-01 -- id demo
multipass exec srv-01 -- zsh --versionVoilà : nous ne créons plus seulement des VM. Nous créons des machines avec une préparation que nous savons réappliquer. Gardez vos fichiers YAML : ils décrivent ce qui, autrement, resterait une suite de manipulations à refaire.
Utilisez toujours comme hostname dans le cloud-config le --name {srv-name} que vous avez donné à votre instance.
Félicitations!!!, vous venez de créer des instances qui n'ont rien à envier aux VPS en ligne (à part le fait qu'ils ne soient pas accessible sur internet bien-sûr). Les Cloud Providers n'utilisent certes pas multipass, mais voilà globalement comment vos VPS sont créés ; et vous le faites aisement sur votre PC ; n'est-ce pas magnifique ??
Faire communiquer nos machines
C'est la partie que je trouve particulièrement intéressante pour un labo. Une VM seule permet déjà beaucoup de tests. Deux machines qui communiquent ouvrent d'autres possibilités : une application et sa base de données, un serveur et son client, ou deux services qui échangent.
D'une instance à l'autre
Ouvrez une session shell interactive dans les deux instance : multipass shell srv-01 et multipass shell srv-02
Deux instances qui communique
le srv-01 résoud srv-02 et peut comminiquer avec lui; la réciproque est valable.
Oui, multipass crée un réseau entre les instances que vous créez leur permettant ainsi de communiquer entre-elles.
Depuis le PC vers les instances
Souvenez-vous du ping srv-demo du début. Pourquoi multipass shell srv-demo fonctionnait-il alors que votre PC ne retrouvait pas forcément ce nom ?
Parce que nous ne demandons pas la même chose aux deux outils. Avec multipass shell, nous désignons une instance connue de Multipass. Avec ping, notre système doit trouver une adresse IP à partir d'un nom.
Un nom reconnu par Multipass n'est donc pas automatiquement un nom résolvable par votre PC.
Lorsque vous créez plusieurs instances avec Multipass, celles-ci sont automatiquement placées sur un réseau privé commun.
Concrètement :
- Les instances peuvent communiquer entre elles.
- Le host (votre PC) peut communiquer avec les instances.
- Un mécanisme de résolution DNS local permet d’utiliser les noms des machines plutôt que leurs adresses IP.
Autrement dit, Multipass recrée une petite topologie réseau similaire à celle d’un environnement cloud.
Réseau entre Hote & Instances
- Sous Windows avec Hyper-V
Dans la configuration Windows/Hyper-V présentée ici, un réseau virtuel interne est automatiquement configuré, et Multipass exploite ce réseau. les noms des instances utilisent le suffixe mshome.net.
Depuis votre PC, essayez :
ping srv-01.mshome.net
ping srv-02.mshome.net
Le host envoie un ping à srv-01.mshome.net
Vous pouvez également essayer ces noms complets entre les VM.

- Sous Linux avec QEMU/KVM
Dans la configuration Linux abordée ici, Multipass s’appuie généralement sur QEMU / KVM et crée une interface réseau dédiée (souvent mpqemubr0). Le suffixe est multipass .
Depuis votre PC :
ping srv-01.multipass
ping srv-02.multipassIl arrive que cela fonctionne entre les VM, mais pas depuis le PC. J'ai rencontré ce problème : les instances communiquaient, pourtant le système hôte ne savait pas résoudre leurs noms. Nous allons donc regarder ce qu'il lui manque.
il peut être nécessaire d’ajuster la configuration de systemd-resolved pour pointer vers l’IP du bridge Multipass . Le principe est de vérifier que le DNS de Multipass connaît nos instances, puis indiquer à notre PC de l'interroger pour les noms en .multipass.
- Vérifier le service de résolution :
Verifier que le service systemd-resolved est actif sur votre PC Sur votre PC Linux, pas dans une VM: systemctl status systemd-resolved;
- Retrouver l'interface Multipass : Identifier l'interface réseau utilisée par multipass. Par default, il est crée avec le nom
mpqemubr0, retrouver l'addresse du pont avec:ip addr show mpqemubr0(exemple: 10.92.134.1) ; - Interroger directement le DNS local
Avec l'outil dig, interrogez l'adresse du pont. Remplacez l'adresse d'exemple par la vôtre : dig @10.92.134.1 srv-01.multipass +short . Le résultat doit correspondre à l'adresse de srv-01 affichée par Multipass. Si vous n'obtenez pas cette réponse, n'appliquez pas encore la suite : il faut examiner le DNS local ou le nom enregistré.
- Diriger les requêtes vers le bon DNS
Creez le fichier de configuration qui permettrait à la résolution du domain multipass depuis votre host egalement.
sudo mkdir -p /etc/systemd/resolved.conf.d
echo -e "[Resolve]\nDNS=10.92.134.1\nDomains=~multipass" | sudo tee /etc/systemd/resolved.conf.d/multipass.conf- Vérifier depuis le PC
Essayer les commandes suivantes:
resolvectl query srv-01.multipass
ping -c 4 srv-01.multipass
ping -c 4 srv-02.multipassSi la résolution et les pings fonctionnent, nous avons relié les deux morceaux : le DNS de Multipass connaît les instances, et notre PC sait maintenant lui poser la question.
Si resolvectl query fonctionne mais pas ping, vérifiez aussi comment les applications de votre système utilisent le résolveur.
Cette fois-ci, vous l'avez eu, plus rien ne peut vous arrêter.
Connectez vous aux instances comme à des serveurs distants
À présent, nos Instances existent, elles communiquent entre elles et nous savons les joindre depuis le PC. Il reste à utiliser l'accès que nous avons préparé dans les cloud-configs : SSH avec notre utilisateur demo. (un peu comme cela se fait normalement quand l'on veut communiquer avec un server distant fournit par un cloud-provider : le ssh)
Vous avez passé dans le cloud-config votre clé ssh publique pour votre utlisateur; vous pouvez donc établir une connexion ssh et ouvrir un terminal dans vos VMs.
ssh -i ~/.ssh/local_key demo@srv-01.multipass
À présent, vous avez tout en main, vous pouvez tout faire avec multipass à present, avec un peu de pratique, vous ne vous en passerez plus.
Si vous envisagez héberger un service web sur vos instances, le nom de domaine rataché aux instances est résolvable dans un navigateur web: srv-01.mshome.net/srv-01.multipass ; les sous domaines ne sont pas supportés (exemple: app1.srv-01.multipass).
Conclusion
Avec Multipass, les images Ubuntu, cloud-init et vos propres configurations, vous avez maintenant une base que vous pouvez comprendre, adapter et recréer. La prochaine fois que vous aurez un test à faire, vous saurez par où commencer.
L'intérêt de Multipass, pour moi, est là. Quand une idée demande deux serveurs pour être testée, la préparation du labo ne devrait pas devenir un projet à elle seule.
Au final, ce qui distingue un VPS cloud d’une VM sur votre PC, ce n’est pas de la magie, mais l’automatisation et les modèles prêts à l’emploi. Avec Multipass, les cloud images, cloud-init et vos propres configurations, vous pouvez créer des instances reproductibles et pré-configurées.
Dorénavant, créer un lab pour tester votre prochain projet ne devrait plus être une corvée d’heures, mais bien une opération de quelques minutes.

