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-inituser-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:
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.
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?
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.
@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.
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).
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.