OpenStack - cloud-init 25.1.2 documentation (original) (raw)
Toggle table of contents sidebar
This datasource supports reading data from theOpenStack Instance Metadata Service.
Discovery¶
To determine whether a platform looks like it may be OpenStack, cloud-init
checks the following environment attributes as a potential OpenStack platform:
- May be OpenStack if:
non-x86 cpu architecture
: because DMI data is buggy on some arches.
- Is OpenStack if x86 architecture and ANY of the following:
/proc/1/environ
:Nova-lxd
containsproduct_name=OpenStack Nova
.DMI product_name
: EitherOpenstack Nova
orOpenStack Compute
.DMI chassis_asset_tag
isHUAWEICLOUD
,OpenTelekomCloud
,SAP CCloud VM
,Samsung Cloud Platform
,OpenStack Nova
(since 19.2) orOpenStack Compute
(since 19.2).
Configuration¶
The following configuration can be set for the datasource in system configuration (in /etc/cloud/cloud.cfg
or/etc/cloud/cloud.cfg.d/
).
The settings that may be configured are as follows:
metadata_urls
¶
This list of URLs will be searched for an OpenStack IMDS (instance metadata service). The first entry that successfully returns a 200 response for <url>/openstack
will be selected.
Default: [’http://169.254.169.254’])
max_wait
¶
The maximum amount of clock time (in seconds) that should be spent searchingmetadata_urls
. A value less than zero will result in only one request being made, to the first in the list.
Default: -1
timeout
¶
The timeout value provided to urlopen
for each individual http request. This is used both when selecting a metadata_url
and when crawling the instance metadata service.
Default: 10
retries
¶
The number of retries that should be attempted for an http request. This value is used only after metadata_url
is selected.
Default: 5
apply_network_config
¶
A boolean specifying whether to configure the network for the instance based on network_data.json
provided by the IMDS. When False, only configure DHCP on the primary NIC for this instance.
Default: True
Example configuration¶
An example configuration with the default values is provided below:
datasource: OpenStack: metadata_urls: ["http://169.254.169.254"] max_wait: -1 timeout: 10 retries: 5 apply_network_config: True
Vendor-data¶
The OpenStack IMDS can be configured to serve up vendor-data, which is available to all instances for consumption. OpenStack vendor-data is generally a JSON object.
Cloud-init
will look for configuration in the cloud-init
attribute of the vendor-data JSON object. Cloud-init
processes this configuration using the same handlers as user-data, so any formats that work for user-data should work for vendor-data.
For example, configuring the following as vendor-data in OpenStack would upgrade packages and install htop
on all instances:
{"cloud-init": "#cloud-config\npackage_upgrade: True\npackages:\n - htop"}
For more general information about how cloud-init
handles vendor-data, including how it can be disabled by users on instances, see ourexplanation topic.
OpenStack can also be configured to provide “dynamic vendor-data” which is provided by the DynamicJSON provider and appears under a different IMDS path, /vendor_data2.json
.
Cloud-init
will look for a cloud-init
at the vendor_data2
path; if found, settings are applied after (and, hence, overriding) the settings from static vendor-data. Both sets of vendor-data can be overridden by user-data.
OpenStack Ironic Bare Metal¶
During boot, cloud-init typically has to identify which platform it is running on. Since OpenStack Ironic Bare Metal doesn’t provide a method for cloud-init to discover that it is running on Ironic, extra user configuration is required.
Cloud-init provides two methods to do this:
Method 1: Configuration file¶
Explicitly set datasource_list
to only openstack
, such as:
datasource_list: ["openstack"]
Method 2: Kernel command line¶
Set the kernel command line to configuredatasource override.
Example using Ubuntu + GRUB2:
$ echo 'ds=openstack' >> /etc/default/grub $ grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg