The nova service includes a metadata server where information about an instance is made available to that instance (for use during cloud-init, for example). This includes common things like the hostname, root password, ssh keypairs, etc.
A relatively new feature in Newton adds dynamic providers. When a request is made for metadata nova will contact the configured providers using a REST API and include the returned values in the metadata.
To enable dynamic metadata, add “DynamicJSON” to the vendordata_providers configuration option. This can also include “StaticJSON”
The vendordata_dynamic_targets configuration option specifies the URLs to be retrieved when metadata is requested.tance.
The format for an entry in vendordata_dynamic_targets is: @
Name is a string to distinguish this dynamic metadata from other dynamic providers. This will used as the key to the metadata returned to the instance.
Where name is a short string not including the ‘@’ character, and where the
URL can include a port number if so required. An example would be::
For example: test@http://127.0.0.1:8090
This dynamic metadata is available in a new file, openstack/2016-10-06/vendor_data2.json
It can be retrieved as an URL from within an instance using:
$ curl http://169.254.169.254/openstack/2016-10-06/vendor_data2.json
The output will look something like:
"key2": "something else",
The following is passed to the dynamic REST server when nova receives a metadata request:
|project-id||The UUID of the project that owns this instance.
|instance-id||The UUID of this instance.
|image-id||The UUID of the image used to boot this instance.
|user-data||As specified by the user at boot time.
|hostname||The hostname of the instance.
|metadata||As specified by the user at boot time (aka properties)