Multipass : créez simplement des machines virtuelles Ubuntu depuis Linux, macOS ou Windows

Multipass : créez simplement des machines virtuelles Ubuntu depuis Linux, macOS ou Windows

Avec l'hyperviseur de votre choix

Avatar de l'auteur
David Legrand

Publié dans

Logiciel

05/06/2020 7 minutes
12

Multipass : créez simplement des machines virtuelles Ubuntu depuis Linux, macOS ou Windows

Si Ubuntu est le projet le plus visible de Canonical, il est entouré d'un écosystème complet d'outils annexes. Parmi eux, Multipass, développé depuis quelques années pour faciliter la gestion de VM Ubuntu depuis n'importe quelle plateforme. Une solution intéressante, mais limitée.

Dans le monde de la virtualisation, on évoque surtout les hyperviseurs. Il en existe de nombreux sur le marché, de KVM sous Linux aux produits de Nutanix ou VMWare en passant par Hyper-V de Microsoft. Mais avec la progression de la tendance « Infrastructure as code », des outils complémentaires ont vu le jour, plus ou moins simples à utiliser.

L'objectif est, à la manière de Kubernetes (K8s) ou Swarm pour les conteneurs Docker, de pouvoir déployer simplement des machines virtuelles via des scripts. Il existe là aussi de nombreuses solutions, Hyper-V se reposant sur PowerShell, VMWare ou VirtualBox ayant leur propre outil en ligne de commandes (CLI). Sous Linux il est courant de rencontrer qemu-kvm ou Virsh (libvirt). Des solutions complètes, parfois complexes mais rarement adaptées à différentes plateformes.

C'est pour cela que Canonical a travaillé sur le projet open source Multipass en parallèle de ses autres efforts pour faciliter l'utilisation d'Ubuntu dans des environnement virtualisés. Il doit permettre la création et la gestion simple de VM, tant sous Linux que macOS ou Windows et avec différents hyperviseurs. Un outil notamment utilisé pour MicroK8s

Une installation très simple

Le premier intérêt de Multipass est donc son aspect multiplateforme, qui a ses limites. On peut en effet l'installer sous Linux mais uniquement via un Snap. Sous Windows 10 il fonctionne de pair avec VirtualBox, mais aussi Hyper-V si vous disposez d'une licence Pro/Entreprise du système. Chez Apple il faut au moins un Mac de 2010 sous macOS Sierra.

Dans les deux derniers cas, un outil d'installation est proposé. On peut également passer par des gestionnaires de paquets comme Brew sous macOS, Chocolatey ou WinGet sous Windows. La documentation complète est disponible ici.

Notez que sous Windows, si vous voulez utiliser Hyper-V, il vous faudra l'activer dans la liste des fonctionnalités (OptionalFeatures.exe) ou en tapant la commande PowerShell suivante avec les droits administrateur :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Pour travailler avec VirtualBox, quel que soit l'OS, tapez cette commande avec les droits administrateur :

multipass set local.driver=virtualbox

Sous Linux, il est possible d'utiliser libvirt, via un pilote expérimental. De manière plus générale, vous pouvez modifier les paramètres de Multipass avec ses commandes get et set.

Lancer une machine virtuelle Ubuntu

Une fois Multipass installé, son utilisation de base est assez simple. Par exemple pour télécharger une image dite primaire exploitant des paramètres par défaut (1 cœur, 1 Go de mémoire, 5 Go de stockage, Ubuntu 18.04 LTS, nom : « primary ») et ouvrir un accès à son shell directement dans le terminal en cours, deux termes suffisent :

 multipass shell

Vous obtenez alors le système le plus basique possible, mais il s'agit bien d'un Ubuntu complet, virtualisé. Si vous vous rendez dans l'interface de votre hyperviseur, elle sera d'ailleurs visible et gérable. Vous l'avez simplement initiée d'une commande. Pour la quitter, tapez exit et validez.

Voici la liste des autres commandes à connaître pour un usage élémentaire : 

list : affiche la liste des instances
find : affiche la liste des images disponibles
info : affiche les informations d'une ou plusieurs instances
delete : supprime une ou plusieurs instance (-p pour les purger)
recover : restaure l'ensemble des instance supprimées mais non purgées
purge : purge l'ensemble des instances supprimées

--all : à ajouter pour une commande concernant toutes les instances

Vous pouvez à tout moment obtenir le détail du fonctionnement de l'outil ou d'une commande : 

multipass help
multipass help commande

Vous pouvez également lancer une commande directement dans la VM sans entrer dans son shell :

multipass exec primary -- openssl speed --multi $(nproc) rsa4096

Dans l'exemple ci-dessus, on lance un benchmark OpenSSL sur l'ensemble des cœurs de la VM primaire. Aucune solution n'est proposée pour l'accès à une interface graphique qui serait liée au système, mais cela reste possible via l'hyperviseur.

Personnalisation de la machine virtuelle

Imaginons maintenant que vous désiriez une machine virtuelle avec 4 cœurs, 8 Go de mémoire, 20 Go de stockage, basée sur la version 20.04 LTS d'Ubuntu dont le nom est « servernew  ». Stoppons celle déjà lancée, et lançons la procédure :

multipass stop primary
multipass launch -c 4 -m 8G -d 20G -n servernew 20.04

On peut là aussi exécuter directement une commande ou entrer dans le shell : 

multipass shell servernew

Vous pouvez agir sur le statut des VM avec quatre autres commandes : start, stop, suspend et restart.

Un fichier de configuration peut être ajouté avec --cloud-init à la phase de lancement. Si un large éventail d'images est disponible, c'est à un regret près : la liste dépend beaucoup de l'OS de l'hôte. En effet, sous Linux on peut choisir entre Ubuntu Core, LTS, daily, etc. Et même utiliser l'URL d'une image personnalisée. Voici la liste proposée :

Image                  Aliases         Version Description
snapcraft:core core16 20200529 Snapcraft builder for Core 16
snapcraft:core18 20200529 Snapcraft builder for Core 18
core core16 20200213 Ubuntu Core 16
core18 20200210 Ubuntu Core 18
16.04 xenial 20200522 Ubuntu 16.04 LTS
18.04 bionic,lts 20200519.1 Ubuntu 18.04 LTS
19.10 eoan 20200527 Ubuntu 19.10
20.04 focal 20200529.1 Ubuntu 20.04 LTS
daily:20.10 devel,groovy 20200603 Ubuntu 20.10

Sous Windows 10 on a seulement : 

Image                  Aliases         Version Description
16.04 xenial 20200522 Ubuntu 16.04 LTS
18.04 bionic,lts 20200519.1 Ubuntu 18.04 LTS
20.04 focal 20200529.1 Ubuntu 20.04 LTS

Et il est tout simplement impossible d'utiliser une image sous la forme d'un fichier local ou d'une URL. L'aspect multiplateforme tant vanté prend ici un sérieux coup. Espérons que les listes seront rapidement alignées. 

Transfert de fichier et points de montage

Une fois l'image en place, vous avez quelques possibilités intéressantes, notamment pour les fichiers. On peut en effet en transférer un de l'hôte vers la VM ou inversement, le dossier utilisateur étant celui par défaut : 

multipass transfer fichier.txt servernew:
multipass transfer servernew:test_remote.txt .

Pour afficher le contenu d'un fichier distant ou inscrire le contenu de la console dans un ficher distant : 

multipass transfer servernew:test_remote.txt -
multipass transfer - servernew:fichier.txt

Dans ce contexte, - désigne la console utilisée comme source ou destination.

Enfin, on peut choisir de monter un dossier local pour le rendre accessible depuis la machine virtuelle. Par exemple celui des documents de l'utilisateur courant sous Windows :

multipass exec servernew sudo mkdir /mnt/documents
multipass mount C:\%HOMEPATH%\Documents servernew:/mnt/documents/

Puis de démonter ce dossier :

multipass umount servernew:/mnt/documents/

Une solution intéressante mais limitée

Soyons clairs : si Multipass est présenté comme un orchestrateur sur les pages consacrées au projet, on en est loin.  Il se veut simple, ce qui est à la fois son plus grand atout et sa principale limite. Ne serait-ce que son aspect multiplateforme est encore partiel, comme on le voit avec la liste des images proposéées sous Windows 10 par exemple.

Si l'on apprécie certaines possibilités comme le support des scripts Cloud-init, le transfert de fichier, l'exécution directe, etc. ce sera en général bien insuffisant pour une utilisation en production ou pour une réelle utilisation.

Les bidouilleurs se tourneront vers des outils comme Ansible pour compléter ce gestionnaire de VM une fois les instances initialisées. Ceux souhaitant concevoir et déployer via/sur différentes plateformes des infrastructures reproductibles iront plutôt regarder du côté d'outils de la trempe d'un Vagrant ou Terraform d'HashiCorp.

Multipass répond néanmoins à sa promesse : simple à utiliser, fonctionnel et évitant d'avoir à se rendre dans l'interface d'un gestionnaire de machines virtuelles dans la plupart des cas.  C'est encore le principal.

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Une installation très simple

Lancer une machine virtuelle Ubuntu

Personnalisation de la machine virtuelle

Transfert de fichier et points de montage

Une solution intéressante mais limitée

Commentaires (12)


Ce nom me fait penser inévitablement à ceci… Ça aurait pu être le sous titre de cette news 😉

https://youtu.be/eV_eGm1qgGs


Moi, rien que le nom m’a suffi pour y penser <img data-src=" />


Je crois qu’on y a tous pensé <img data-src=" />


Et on peut passer à autre chose <img data-src=" />


Vu que cet outil a l’air plus à destination des développeurs qu’autre chose (c’est clairement indiqué dans le README de leur dépôt github), j’ai du mal à voir son intérêt par rapport à un Vagrant qui lui a le mérite de pouvoir gérer autre chose que des VM Ubuntu

Mais ayant assez peu eu l’occasion d’utiliser Vagrant, je connais mal ses limites.


Ça me fait penser à un mélange de Vagrant et de libvirt.


Oui d’ailleurs j’avais oublié de le mentionner, merci <img data-src=" />


Je ne connaissais pas le projet, intéressant même si effectivement un peu limité pour l’instant, a suivre :)

&nbsp;


Super, se gaufrer sur Unity, upstart et mir ne leur pas encore suffi ? Il faut encore qu’ils inventent une solution à eux, plus restrictive, alors que les solutions tierces plus flexibles, y compris libres, existent.


C’est vrai que si techniquement je trouve ça sympa, je ne voit pas à qui ça peut servir.



Après peut être que j’ai du mal à le voir mais il y a peut être des métiers qui ont besoin de pouvoir spawn de la VM Ubuntu-only à longueur de temps.



En l’état, pour faire de la VM à demeure il y a nettement mieux et pour de l’environnement de dev non seulement il y a docker qui n’est pas bien plus complexe dans une utilisation « créer, exécuter, jeter » (et même sérieusement sous Windows depuis WSL2).



D’ailleurs, j’ai fait une « pause » Linux involontaire de quelques années et je me suis récemment refait une petite config : premier constat après avoir installé une Ubuntu récente : c’est le bordel, qu’est devenu le « bureau Linux » pendant mon absence ?



Mais en fait non, c’est juste Ubuntu, les autres distros sont over the top, les « petits nouveaux » que sont Manjaro ou elementaryOS, même si deux philosophies diamétralement opposées, bossent vraiment dur pour pondre des super distributions de bureau user-friendly, et sont totalement cachées derrière Ubuntu qui est toujours considérée comme la distrib desktop de référence.



Du coup ça me donne encore plus l’impression que canonical s’éparpille dans tous les sens, et il n’y a qu’à voir la HomePage d’ubuntu pour voir que la distribution en elle même n’est plus du tout leur priorité.



Tant mieux pour eux si leur coup de poker avec Microsoft a bien fonctionné, le coup de Windows+Ubuntu c’était grandiose mais faut vraiment qu’ils arrêtent d’avoir 10 000 projets en parallèle, ça en devient illisible et chez les voisins on se mange des dégâts collatéraux tels que Snapcraft <img data-src=" />


J’ai du mal à comprendre ce qui ne parait pas clair : Vagrant c’est bien mais bon, si on veut simplement lancer une VM tester des trucs et ensuite virer, ce n’est pas franchement le plus adapté. Docker c’est un peu la même chose, il faut déjà l’installer sur la machine mais on se retrouve au final avec des conteneurs et leurs limites.&nbsp;



MP n’est pas l’outil ultime qui doit répondre à tous les cas (spoiler, il n’y en a pas), mais ça répond au moins à un besoin de simplicité/rapidité en étant une simple surcouche CLI assez basique aux hyperviseurs.


C’est ce que je dit dans mes premiers paragraphes : oui l’approche technique est intéressante. C’est “innovant” dans la simplicité d’usage (surtout en CLI) mais j’ai du mal à voir les cas d’usages pratique d’une telle solution.



L’outil a l’air chouette mais je suis sincèrement curieux de savoir à qui ou quoi ça peut bien pouvoir servir de virtualiser de l’ubuntu (et uniquement ça) à la volée ou en scripting. Le seul intérêt que je voit c’est d’avoir rapidement un environnement tout frais tout neuf mais là je ne voit pas trop l’avantage à ne pas partir sur un conteneur. A la limite, ce qui pourrait être chouette et qui débloquerai des cas d’usage ce serait de pouvoir virtualiser des archis différentes : là même si ça reste de la niche, je vois totalement un intérêt à pouvoir spawn un environnement ARM (par exemple) totalement fonctionnel.



Je garde néanmoins l’outil dans un coin de ma tête (et dans mes favoris) au cas où ça ferait tilt dans ma tête mais si tu as des exemples d’utilisation où ça remplace efficacement soit une VM soit un Docker, je suis curieux.