Joshua Powers
on 2 April 2018
Using cloud-init with Multipass
This article originally appeared on Joshua Powers’ blog
cloud-init + Multipass
Multipass is a quick and easy way to launch virtual machine instances running Ubuntu. Cloud-init is the standard for customizing cloud instances and now Multipass can also make use of cloud-init to customize an instance during launch.
Below is an example of launching a new VM with cloud-init user-data:
multipass launch -n my-test-vm --cloud-init cloud-config.yaml
user-data Format
Currently Multipass only supports YAML cloud-config files. Passing a script, a MIME archive, or any of the other user-data formats cloud-init supports will result in an error from the YAML syntax validator. Check out the cloud-init docs for examples of YAML cloud-config.
YAML Syntax Validation
Multipass will validate the YAML syntax of the cloud-config file before attempting to start the VM! A nice addition to help save time when experimenting with launching instances with various cloud-configs.
vendor-data
Multipass uses cloud-init to pass in vendor-data to setup the VM for access by the user. If the user overrides any of the required keys (e.g. packages, ssh_authorized_keys, users, etc.) in his or her user-data then Multipass will merge its own data so that the end-user will not lose access to the system.
If interested, a user can examine the executed user-data and vendor-data by looking at the files in /var/lib/cloud/instances/
.
Got Questions?
As always, you can chat with the cloud-init developers in #cloud-init on Freenode or email the cloud-init mailing list.
The Multipass team is also on Freenode at #multipass and to view the code and report bugs check them out on GitHub.