Beta release: Multipass

Hi all,

The Muiltipass team is happy to announce the beta release of a completely new project: Multipass.

What is Multipass?

Multipass is a service that manages virtual machine instances running Ubuntu. It uses images from cloud-images and QEMU/KVM as the backend to provide easy access to a whole range of Ubuntu instances. The client command line is kept similar to LXD’s to keep your muscle memory happy.

Features

  • Fetch and cache images from cloud-images
  • Periodically refresh downloaded images ensuring you always have the freshest image installed
  • Launch instances of any supported Ubuntu version
  • Create instances with custom disk size / memory size / cpu count
  • Easily connect to a shell prompt inside the instance or execute commands as part of your workflow
  • Support cloud-init user-data for instance customization
  • Mount data from the host inside instances

Binaries

A classically-confined snap for amd64 is published in the beta channel. It can be installed with the following command on any snap-enabled system:

sudo snap install multipass --beta --classic

To see the full list of commands available with multipass type:

multipass help

See our README for more details.

Source

Multipass is licensed under GPLv3 and is available on GitHub.

Get involved

Please file issues and pull requests on GitHub. This Hub has a multipass category for any discussions or suggestions as well.

6 Likes

Q&A

  • Why the name?
  • Why not LXD?
    • The biggest difference is the underlying technology - LXD uses containers, multipass uses virtualization - both have various advantages and disadvantages that have been explored in depth, a quick search in your favourite search engine will reveal more.
  • What’s next?
    • Well, the team is open to suggestions on where and how you would like to see Multipass used in the future.
4 Likes

Great project! I noticed that it follows the semantics of LXD for the command line parameters.

How do you specify which image to select? There is no yet a command to produce a list of available remote images.

Does this mean that uvtool is being deprecated in favor of multipass?

Sure there is:

⟫ multipass find
multipass launch …   Starts an instance of   Image version
----------------------------------------------------------
14.04                Ubuntu 14.04 LTS        20171208
   (or: t, trusty)
16.04                Ubuntu 16.04 LTS        20171208
   (or: default, lts, x, xenial)
17.04                Ubuntu 17.04            20171208
   (or: z, zesty)
17.10                Ubuntu 17.10            20171213
   (or: a, artful)
daily:18.04          Ubuntu 18.04 LTS        20171211
   (or: b, bionic, devel)

So, as an example:

multipass launch daily:bionic
1 Like

They do cover a similar problem space, but there’s no immediate plans to deprecate uvtool, that I know of. Maybe we can join forces, though.

I love uvtool’s simplicity and wondered why uvtool was being duplicated, then I noticed that it’s GitHub seems not to have been touched in years, so, cool! Consistent command semantics are most welcome.

Of course what should be a snap is more of a philosophical discussion, but it does seem a bit odd to need snapd on a machine in order to manage kvm. I tend to strip my virtualization machines down, especially eliminating anything else that has virtual networking interfaces, since I’ve seen odd interactions in the past. Will there be .debs?

We don’t have that on our roadmap at the moment. It should be trivial to package though and maintain in a PPA.

We’d need to see data showing that an investment into all the other packaging formats on all the distros that support snaps is worth it.

I posted something on multipass,
https://blog.simos.info/multipass-management-of-virtual-machines-running-ubuntu/

3 Likes

doesn’t run on Solus unfortunately :frowning:

Oh :frowning:

It’s a --classic snap at the moment, I’ll try and run it under Solus and probably add this lib. That’s what betas are for!

We do want to go for strict containment soon, so that, and similar, issues should go away.

doesn’t run on Solus unfortunately :frowning:

It run fine on Solus. You need to install slang.
sudo eopkg it slang

How do you expand an instance (storage wise) created with this?

How do you expand an instance (storage wise) created with this?

Not sure if an existing instance can be expanded, but check out

multipass launch --help

to see the various options when launching an image.

After missing around I found a solution. You have to go to /var/snap/multipass/common/data/multipassd/vault/instances/“Name of Instance” then you you can use qemu-img “Name of image.img” +10G. They should just build a wrapper around it.

hey, yeah I’ve figured that out but it should be included in the snap :slight_smile:

@saviq There are significant improvements in Snapcraft 2.30 for creating classic snaps. This can also require some subtle changes to the snapcraft.yaml and launchers. I’ll take a look at Multipass after the holidays.

2 Likes

This looks quite promising. I’ve had a play around with it and can definitely see the potential.
Are there any plans for an API? Also, it would be cool to be have a way to describe a reproducible environment using multipass, kinda like what is possible with a Vagrantfile.

Hey @muyiscoi, for now we’re focusing on the CLI being our API, and we’ll add machine-parsable (JSON, YAML, etc.) output.
We’ve not planned for a Vagrantfile-like support, but it should be really easy to add (basically just parse the file instead of accepting options to multipass launch).

1 Like

I like the looks of it. I see an issue is open to include other OSes. For me that would be really critical for me to be able to make serious use of it.

I’ve not yet got the hardware to give it a go in real anger but it’s on my watch-list. One question:

Does it have similar remote functionalities like as lxd? Or better still, can it be run on a remote kvm host without needing to be installed on that host (e.g. by qemu+ssh? )

Also …imagine, a unified tool that handled both lxd containers and multipass VMs…Very convenient way to define a testing environment when pure lxd isn’t quite enough.