Multipass: Máquinas virtuales desde la terminal con un simple comando

Multipass es un servicio que lanzó Canonical allá por 2019. Nos da la capacidad de ejecutar máquinas virtuales (basadas en Ubuntu) desde la terminal de manera muy sencilla y rápida. Está disponible tanto para Linux como para Mac o Windows y soporta cloud-init.

Mediante Multipass podemos tener en cuestión de segundos una imagen de Ubuntu corriendo en una máquina virtual con una configuración mínima y sin necesidad de ningún proceso de instalación previo.

En mi caso, que suelo desarrollar desde un Mac pero tengo mis servicios corriendo en servidores Linux, mediante Multipass levanto máquinas virtuales para probar ciertas funcionalidades o configuraciones y las destruyo una vez he terminado, de una manera mucho más sencilla y rápida que a través de otras soluciones más clásicas, como VirtualBox.

Primeros pasos

Una vez tenemos Multipass instalado (podemos seguir los pasos desde su web) basta con tirar el comando multipass y ver que tenemos un conjunto de opciones bastante amplio para utilizar:

$ multipass -h
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.
  --help-all     Displays help including Qt specific 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
  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 an alias
  version   Show version details
Ayuda general de multipass

Para arrancar nuestra primera máquina virtual, ejecutaremos:

multipass launch --name test-vm
Lanzar una nueva máquina virtual

Y se nos arrancará un Ubuntu con la última versión de LTS. Si queremos ver las máquinas que tenemos y su estado, con ejecutar el comando multipass list tendremos algo como esto:

$ multipass list
Name        State       IPv4             Image
test-vm     Running     192.168.64.7     Ubuntu 20.04 LTS
Listar las máquinas virtuales disponibles

Por defecto, al instalar una máquina virtual ésta será la última LTS de Ubuntu, pero tenemos otras opciones disponibles. Podemos verlas con el comando multipass find:

$ multipass find
Image                       Aliases           Version          Description
18.04                       bionic            20220424         Ubuntu 18.04 LTS
20.04                       focal,lts         20220419         Ubuntu 20.04 LTS
21.10                       impish            20220309         Ubuntu 21.10
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
charm-dev                                     latest           A development and testing environment for charmers
docker                                        latest           A Docker environment with Portainer and related tools
minikube                                      latest           minikube is local Kubernetes
Listado de las imágenes disponibles

Si queremos lanzar una en concreto, será suficiente con ejecutar el mismo comando launch poniendo el nombre de la imagen al final. Si no especificamos nada, por defecto cogerá la última LTS. Además, podemos pasarle una configuración de inicio de cloud-init para automatizar algunas opciones. Algunos ejemplos de cómo usarlo los tenemos aquí.

$ multipass launch -n minikube-test --cloud-init cloud-config.yml minikube
Iniciar una máquina virtual con configuración cloud-init y basda en la imagen de minikube

Si queremos ejecutar un comando sobre dicha máquina, bastará con ejecutar multipass exec <nombre-de-la-mv> -- <comando>, por ejemplo:

$ multipass exec test-vm -- lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.4 LTS
Release:	20.04
Codename:	focal
Ejecutar un comando dentro de una máquina virtual

También podemos hacer uso de multipass shell <nombre-de-la-mv> para conectarnos a la terminal y así ejecutar los comandos desde ahí directamente.

Por último, los comandos para gestionar el estado de las máquinas que creemos serían los siguientes:

  • multipass start <nombre-de-la-vm>: Arranca una máquina existente.
  • multipass stop <nombre-de-la-vm>: Detiene una máquina en ejecución.
  • multipass delete <nombre-de-la-vm>: Elimina una máquina existente.
  • multipass purge: Borra todas las máquinas eliminadas del host.

Si en cualquier momento necesitamos ayuda con algún comando o con multipass, podemos ejecutar multipass help para tener una ayuda global y multipass <comando> help para tener una ayuda específica de ese comando.

Y con esto, espero haber dado una visión sencilla de cómo usar Multipass. El para qué usarlo lo dejo ya a vuestra elección 😄. Yo lo estoy usando para hacer pequeñas pruebas y evitar que se me contaminen unas con otras, así como para pruebas de red entre distintas máquinas.

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección: