Proxmox VE 6.x release includes a feature to add custom cloud-init configs. Unfortunately there is poor documentation, so I had to figure this out by adding pieces of information together.
The cloud-init files need to be stored in a snippet. This is not very well documented:
- Go to
Storage View -> Storage -> Add -> Directory
- Give it an ID such as
snippets
, and specify any path on your host such as/snippets
- Under
Content
chooseSnippets
and de-selectDisk image
(optional) - Upload (scp/rsync/whatever) your
user-data, meta-data, network-config
files to your proxmox server in/snippets/snippets/
(the directory should be there if you followed steps 1-3)
Finally, you just need to qm set
with --cicustom
, like this:
qm set 100 --cicustom "user=snippets:snippets/user-data,network=snippets:snippets/network-config,meta=snippets:snippets/meta-data"
Replace 100
with the ID of your VM.
Your VM needs a CloudInit Drive
as well, since Proxmox adds your cloud-init
data from your snippets into that drive (/dev/sr0
?). Leave the Cloud-Init
UI settings to default, since they won't be used anyways.
For the moment, you can not put the user-data, meta-data, network-config
in any subdirectories, so something like this will fail:
qm set 100 --cicustom "user=snippets:snippets/cloud/data/user-data,network=snippets:snippets/cloud/data/network-config,meta=snippets:snippets/cloud/data/meta-data"
Finally, to apply the new cloud-init config you'll need to power off/on the VM (not reboot).
Once booted, your platform/datasource
will be seen as nocloud
and not OpenStack
... assuming you're familiar with cloud-init
, everything else should work perfectly.
Hope this helps someone out there!
Ah yes, there's a way to do that in the GUI as well, but I forgot to document that step (and forgot where it's located). Thanks!