Here are my findings on the metad:
In order for the metad to start, one needs to add a network interface to
the instance with
name=ganeti:communication:...,mode=routed,ip=...
That makes the metadata service available from the Ganeti node, but not
immediately from the VM. According to the documentation cloud-init VM
will only start the first network interface. I am not sure what the
intended setup is for the Ganeti communication device, whether it should
live beside the regular device and be removed after cloud-init. It is
possible to do a custom setup on the VM side by adding a
cloud-init-local.service to the image.
On a second note, the Ganeti metad has it's own conventions for the REST
API. To use it, we can create a data source for Ganeti [2], and patch
cloud images until we get it into a distribution. Or, we would extend
metad to support/fake a popular cloud provider.
[1]:
https://cloudinit.readthedocs.io/en/latest/topics/boot.html#local
[2]:
https://cloudinit.readthedocs.io/en/latest/topics/datasources.html