Normally we use LXC/LXD, KVM, QEMU, Docker, Vagrant, VirtualBox, VMWare or any other virtualization and containerization software to spawn a VM-like instance locally. Today we're gonna try multipass, a tool to spawn and orchestrate ubuntu VM. To install multipass, it's as easy as running these commands:
snap install multipass
ls -al /var/snap/multipass/common/multipass_socket
snap connect multipass:libvirt # if error: ensure libvirt is installed and running
snap info multipass
To spawn a VM on Ubuntu (for other OSes, see the link above), we can run:
multipass find
Image Aliases Version Description
...
18.04 bionic 20220104 Ubuntu 18.04 LTS
20.04 focal,lts 20220118 Ubuntu 20.04 LTS
21.10 impish 20220118 Ubuntu 21.10
daily:22.04 devel,jammy 20220114 Ubuntu 22.04 LTS
...
minikube latest minikube is local Kubernetes
multipass launch --name groovy-lagomorph lts
# 20.04 --cpus 1 --disk 5G --mem 1G
multipass list
Name State IPv4 Image
groovy-lagomorph Running 10.204.28.99 Ubuntu 20.04 LTS
multipass info --all
Name: groovy-lagomorph
State: Running
IPv4: 10.204.28.99
Release: Ubuntu 20.04.3 LTS
Image hash: e1264d4cca6c (Ubuntu 20.04 LTS)
Load: 0.00 0.00 0.00
Disk usage: 1.3G out of 4.7G
Memory usage: 134.2M out of 976.8M
Mounts: --
To run shell inside newly spawned VM, we can run:
multipass shell groovy-lagomorph
multipass exec groovy-lagomorph -- bash
If you need to simulate ssh, according to this issue you can either:
sudo ssh -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ubuntu@10.204.28.99
# or add ssh key before launch on cloud-init.yaml
ssh_authorized_keys:
- <your_ssh_key>
# or copy ssh key manually after launch
sudo ssh-copy-id -f -o 'IdentityFile=/var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa' -i ~/.ssh/id_rsa.pub ubuntu@10.204.28.99
If to stop/start/delete the VM:
multipass stop groovy-lagomorph
multipass start groovy-lagomorph
multipass delete groovy-lagomorph
multipass purge