Cómo correr instancias virtualizadas de Ubuntu Server con Multipass

Canonical tiene una solución que te permite correr instancias frescas de Ubuntu Server desde tu línea de comando preferida, no importa si estás en Windows, Linux o Mac.

Hace unos días, creo, navegando Twitter, encontré una referencia hacia algo llamado Canonical Multipass, nunca había escuchado sobre esa solución así que me dispuse a ver que es lo que era.

Básicamente, Multipass se "vende" como una solución para orquestar múltiples instancias virtualizadas de Ubuntu en tu máquina, como si fueran instancias en un Cloud provider.

Está solución se administra desde una línea de comando y si me preguntan, es muy parecido a como se maneja Docker, pero en vez de contenedores, creamos máquinas virtuales. A mi particularmente me viene al pelo, porque siempre estaba instalando o clonando VM's para hacer pruebas y generar material para el blog.

Multipass está disponible para Windows, Mac OS y Linux. La pueden descargar desde acá:

Multipass orchestrates virtual Ubuntu instances
It’s a system that orchestrates the creation, management and maintenance of virtual machines and associated Ubuntu images to simplify development.

Instalación

La instalación de Multipass en Windows y Mac OS, consiste en un asistente, en el caso de Windows, este debe ser Windows 10 Pro/Enterprise v 1803 en adelante. En el sistema operativo de las ventanas, usa Hyper-V (Lo más recomendable) pero también se puede usar VirtualBox, para el caso de Mac OS, debe ser Sierra (10.12) en adelante y usa HyperKit para virtualizar.

Para Linux, hay un paquete de Snap que se instala y es capaz de hablar con, VirtualBox y KVM. Para instalarlo en Linux, solo debes correr lo siguiente:

$ sudo snap install multipass --classic

Comandos básicos

Multipass funciona en cualquier línea de comando, en Windows, como es el caso que estoy probando, anda con PowerShell y CMD. En Linux y Mac OS, por supuesto, con cualquier terminal.

Como les comenté más arriba, los comandos se corren, de una manera similar a como se corre Docker, con la obvia diferencia que acá, no ejecutamos contenedores, sino que máquinas virtuales y los comandos varían, pero el concepto es básicamente el mismo.

Para comenzar a jugar y entender lo que podemos hacer y cómo, podemos correr lo siguiente:

$ multipass

La terminal, debería responder con algo como esto:

Usage: Program Files\Multipass\bin\multipass.exe [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  Display this help
  -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:
  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
  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
  version   Show version details

Estos son los comandos que podemos ejecutar, junto con multipass. Por ejemplo, para crear una nueva VM, ejecutamos lo siguiente:

multipass launch --name new-vm

La primera vez, va a descargar la imagen de Ubuntu, con lo cual, esperen a que eso se complete, lo mismo está condicionado por la velocidad de la conexión a Internet que tengamos. Una vez que termine la descarga, deberíamos ver algo como esto:

Creating new-vm \

Y cuando termine, esto:

Launched: new-vm

Para comprobar si efectivamente nuestra VM está corriendo, tan solo debemos ejecutar lo siguiente:

multipass ls

La terminal, debería devolver con algo como esto:

Name                    State             IPv4             Image
new-vm                  Running           192.168.44.121   Ubuntu 18.04 LTS

Si necesitamos crear otra instancia, volvemos a ejecutar:

multipass launch --name new-vm2

Una vez terminado, ejecutamos:

multipass ls

Y el resultado debería ser:

Name                    State             IPv4             Image
new-vm                  Running           192.168.44.121   Ubuntu 18.04 LTS
new-vm2                 Running           192.168.44.126   Ubuntu 18.04 LTS

Otros comandos importantes son "delete" que nos permitirá borrar una VM y "purge" que es un comando para purgar todas las instancias borradas.

Ambos comandos se corren de la siguiente manera:

multipass delete new-vm
multipass purge

El comando "shell", nos permite entrar a la VM, el mismo se corre de esta manera:

multipass shell new-vm

Lo que veremos será algo como esto:

Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-109-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Jul 14 20:54:17 -03 2020

  System load:  0.0               Processes:           91
  Usage of /:   21.1% of 4.67GB   Users logged in:     0
  Memory usage: 66%               IP address for eth0: 192.168.44.121
  Swap usage:   0%


0 packages can be updated.
0 updates are security updates.


To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Algunos otros comandos, te van a permitir, montar un directorio local en la VM, copiar archivos entre la VM y el host, suspender la VM, recuperar una VM borrada y ejecutar comandos dentro de ella sin necesidad de entrar al shell.

Para ir cerrando

Multipass esta pensado para desarrolladores o para entusiastas que necesitan probar cosas nuevas, para mi caso particular, que necesito tener instancias para probar cosas para el blog, es una solución ideal, es gratuita, las VMs pesan muy poco y lo mejor de todo, es que se maneja todo de manera bastante simplificada desde una línea de comandos.

Contame, ¿lo has probado? ¿Tuviste algún problema? no duden en dejarme en los comentarios su comentarios acerca de Multipass.