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

Avec l'hyperviseur de votre choix 12
Accès libre
image dediée
Applications TEST
David Legrand

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.


chargement
Chargement des commentaires...