Multipass est un utilitaire développé par Canonical, il permet de lancer des machines virtuelles Ubuntu facilement.

En fonction de l’OS, Multipass peut utiliser différents hyperviseurs:

  • Hyper-V
  • HyperKit
  • KVM
  • VirtualBox

En s’intégrant de manière native à ces hyperviseurs, il permet de démarrer des machines virtuelles très rapidement.

Vous trouverez sur le site https://multipass.run la procédure d’installation de Multipass en fonction de votre OS.

Commandes disponibles

La liste des commandes disponibles pour la gestion du cycle de vie des VMs peut être obtenue avec la commande suivante:

$ multipass
Usage: multipass [options] <command>
Create, control and connect to Ubuntu instances.

This is a command line utility for multipass, a
service that manages Ubuntu instances.

Options:
  -h, --help     Displays help on commandline options
  -v, --verbose  Increase logging verbosity. Repeat the 'v' in the short option
                 for more detail. Maximum verbosity is obtained with 4 (or more)
                 v's, i.e. -vvvv.

Available commands:
  alias         Create an alias
  aliases       List available aliases
  authenticate  Authenticate client
  delete        Delete instances
  exec          Run a command on an instance
  find          Display available images to create instances from
  get           Get a configuration setting
  help          Display help about a command
  info          Display information about instances
  launch        Create and start an Ubuntu instance
  list          List all available instances
  mount         Mount a local directory in the instance
  networks      List available network interfaces
  purge         Purge all deleted instances permanently
  recover       Recover deleted instances
  restart       Restart instances
  set           Set a configuration setting
  shell         Open a shell on a running instance
  start         Start instances
  stop          Stop running instances
  suspend       Suspend running instances
  transfer      Transfer files between the host and instances
  umount        Unmount a directory from an instance
  unalias       Remove aliases
  version       Show version details

Nous allons voir quelques unes de ces commandes sur des exemples.

Quelques exemples

La manipulation de VMs se fait très facilement:

  • création d’une nouvelle VM nommée node1 (en quelques dizaines de secondes seulement)
multipass launch -n node1

Par défaut cette VM est configurée avec 1G de RAM, 1 cpu et 5 Go de disque mais différentes options peuvent être utilisées pour modifier ces valeurs. La commande suivante permet par exemple de créer une VM nommée node2 avec 2 cpu, 3 Go de RAM et 10 Go de disque:

multipass launch -n node2 -c 2 -m 3G -d 10G
  • information sur une VM

La commande suivante retourne les différents paramètres de configuration de la VM

multipass info node1

Il est également possible d’obtenir ces informations dans les formats json, csv ou yaml. Exemple en json:

multipass info node1 --format json
  • liste des VM créés
multipass list

Cette commande devrait renvoyer les informations similaires à celles ci-dessous:

Name                    State             IPv4             Image
node1                   Running           192.168.205.2    Ubuntu 22.04 LTS
node2                   Running           192.168.205.3    Ubuntu 22.04 LTS
  • Lancement d’un shell dans la VM node1
multipass shell node1

On obtient alors un shell avec l’utilisateur ubuntu qui est notamment dans le groupe sudo.

  • lancement d’une commande dans une VM

La commande suivante permet d’installer Docker dans la VM node1

multipass exec node1 -- /bin/bash -c "curl -sSL https://get.docker.com | sh"

On peut alors vérifier que l’installation s’est déroulée correctement:

multipass exec node1 -- sudo docker version
  • montage d’un répertoire local dans une VM
# Création d'un fichier en local
mkdir $HOME/test && touch $HOME/test/hello

# Montage du répertoire dans le filesystem de la VM node1
multipass mount $HOME/test node1:/usr/share/test

# Vérification
multipass exec node1 -- ls /usr/share/test

La commande umount permet de faire l’opération inverse et de supprimer ce point de montage:

multipass umount node1:/usr/share/test
  • copie de fichiers entre la machine local et les VMs

Il est possible de transférer des fichiers locaux vers une VM et inversement, sans avoir à monter un répertoire (cf exemple précédent)

# Copie d'un fichier depuis la machine locale
multipass transfer $HOME/test/hello node1:/tmp/hello

# Vérification
multipass exec node1 -- ls /tmp/hello
  • les commandes start / stop / restart / delete permettent de gérer le cycle de vie des VMs
multipass delete -p node1 node2

En résumé

Comme nous venons de le voir dans les exemples ci-dessus, Multipass est un utilitaire très pratique et extrêmement simple d’utilisation. Je vous conseille de l’installer car vous pourrez l’utiliser dans la suite pour instancier plusieurs VMs et mettre en place un cluster Kubernetes en local.