Customize VM Instance with Cloud-init
This Platform9 OpenStack tutorial describes tips on using various options to customize a virtual machine using cloud-init.
Customize Virtual Machine Hostname
Virtual machines deployed using cloud-init enabled images will by default be configured with hostname created using the name given to the virtual machine, and a randomization suffix.
Set Default Password and Inject Custom Script Using User Data
Create a text file with following information.
#cloud-config
password: winterwonderland
chpasswd: { expire: False }
ssh_pwauth: True
runcmd:
- [ 'sh', '-c', 'echo "Hello World from PF9" > /tmp/pf9.txt']Paste the configuration above to the cloud-init config text area:

where:
The output should be a Python dict string representation of the above YAML file.
'winterwonderland' is the desired default password you wish to set for this virtual machine
'runcmd' is a list of commands you would like to inject into this virtual machine. Each element can be a string or another list (like execev). Following article offers comprehensive details: Cloud-Init: Run commands on first boot.
Finally, invoke Nova command via CLI or REST API to create a new instance, passing the extra parameters for customization.
Inject SSH Key-Pair into Virtual Machine
First, generate a new ssh key pair to be used for the new virtual machine:
Now add the key pair to Nova:
List key pairs registered with Nova:
Now with nova boot command you can optionally pass the key-name as the argument:
That's it. Once the virtual machine instance is active, you can ssh into the instance using the private key.
Example cloud-config File with Comments
Last updated
Was this helpful?
