Run cloud-init locally with multipass

Multipass is a cross-platform tool for launching Ubuntu VMs across Linux, Windows, and macOS.

When launching a Multipass VM, user-data can be passed by adding the --cloud-init flag and an appropriate YAML file containing the user-data. For more information about the file and how to construct it, see our explanatory guide about the user-data cloud-config format.

Create your configuration

In this example we will create empty network-config and meta-data files, and create a user-data file with a basic cloud-init configuration.

If you have network configuration or metadata to provide, edit the network-config and meta-data files accordingly.

To create the files, run the following commands:

$ touch network-config
$ touch meta-data
$ cat >user-data <<EOF
#cloud-config
password: password
chpasswd:
  expire: False
ssh_pwauth: True
EOF

Launch your instance

You can pass the user-data file to Multipass and launch a Bionic instance named test-vm with the following command:

$ multipass launch bionic --name test-vm --cloud-init user-data

Multipass will validate the user-data configuration file before starting the VM. This breaks all cloud-init configuration formats except the user-data cloud-config.