Create a Ubuntu 18.04 cloud init template
-
For those trying to create an Ubuntu 18.04 cloud-init template and are stuck wondering why SSH does not work or why the vm disk size is not matching up to what was configured in XOA, please follow the below extra steps.
Note: If using the Ubuntu 18.04 in XCP-NG Center (not XOA), the mininum disk size is 10GB (it is not configurable to 4GB as described in the original Debian article.)
IMO, ignore the CloudInit part of @olivierlambert original blog post (debian) and follow the below steps
The following commands need to be run after you have installed Ubuntu 18.04 (but before you have converted the vm to a template)
# install cloud-init and deps sudo apt install cloud-init cloud-initramfs-growroot # !!! This part is important, make sure to keep ConfigDrive checked !!! # remove all datasources except `ConfigDrive: Reads data from Openstack Config Drive` sudo dpkg-reconfigure cloud-init # enable cloud-init systemd unit sudo systemctl enable cloud-init # disables bug message from https://bugs.launchpad.net/bugs/1669675 touch /home/ubuntu/.cloud-warnings.skip # disable root password passwd -l root
and finally, power off the vm and convert to a template.
Notes
- You shouldn't have to configure the default
/etc/cloud/cloud.cfg
file as it comes configured by Ubuntu out of the box - The key is to enable the
cloud-init
systemd unit before powering off the vm. - Before enabling
cloud-init
, when a vm launched from the original template, it did not have SSH installed or the correct disk size.
- You shouldn't have to configure the default
-
This post is deleted! -
@bcatubig I've done all the magic but still my cloud init is not taken into account completely.
I can see the VM is created with 10 MB additional disk.
I can mount this device and see that it does contain my cloud-init script.
but the script is not executed and cloud-config logs don't contain any useful information.
Please advise what would be the right way to track this issue?? -
@moisei Can you list steps taken?
Can you verify that
ConfigDrive
is enabled in thedpkg-reconfigure
ofcloud-init
?I haven't experimented with a full cloud-config. Only injecting an SSH key via XOA. I'll run through the steps again tonight to see if I run into any issues.
-
@bcatubig yes
ConfigDrive
and onlyConfigDrive
is enabled. My script does 3 things: SSH, set hostname, and touch some file. None of them is executed and the cloud-init logs doesn't show any trace of the execution.#cloud-init hostname: {name}% ssh_authorized_keys: - ssh-rsa AAAA...kd mykey@myhost runcmd: - [ touch, "/tmp/CLOUD_INIT_WAS_HERE", / ] - touch /tmp/CLOUD_INIT_WAS_HERE_1 - touch "/tmp/CLOUD_INIT_WAS_HERE_2"
-
@moisei Before rebooting the Ubuntu 18.04 vm to convert it to an image, did you enable
cloud-init
service by runningsudo systemctl enable cloud-init
before powering off the vm?
-
@bcatubig yes I did. I've just followed your instructions above. Also the fact the cloud-init logs are present indicates that it is running, isn't it?
-
@moisei Sure
Can you try running
dpkg-reconfigure cloud-init
and select bothConfigDrive
and theOpenstack
option.From there, I would try the vm template process again.
If that still fails, I would try manually invoking cloud-config from the new vm with the attached cloud-config drive to see if there is an issue with cloud-config or your config.
It should provision itself automatically if everything is correct.
If that fails, you may need to attempt the entire process again and do some more trial/error.
-
@bcatubig it didn't help. would you mind to share the config that is working for you?
-
@moisei I didn't use a custom cloud config. I've only tried adding the ssh-key via XOA
-
I see this message on the console right after the VM is created. Could it be somehow helpful?