Configuration sources - cloud-init 25.1.2 documentation (original) (raw)

View this page

Toggle table of contents sidebar

Internally, cloud-init builds a single configuration that is then referenced throughout the life of cloud-init. The configuration is built from multiple sources such that if a key is defined in multiple sources, the higher priority source overwrites the lower priority source.

Base configuration

The base configuration format uses YAML version 1.1, but may be declared as jinja templates which cloud-init will render at runtime withinstance-data variables.

From lowest priority to highest, configuration sources are:

These four sources make up the base configuration. The contents of this configuration are defined in thebase configuration reference page.

Note

Base configuration may containcloud-config which may be overridden by vendor-data and user-data.

Vendor-data and user-data

Added to the base configuration are vendor-data anduser-data which are both provided by the datasource.

These get fetched from the datasource and are defined at instance launch.

Network configuration

Network configuration happens independently from other cloud-initconfiguration. See network configuration documentationfor more information.

Specifying configuration

End users

Pass user-data to the cloud provider. Every platform supporting cloud-init will provide a method of supplying user-data. If you’re unsure how to do this, reference the documentation provided by the cloud platform you’re on. Additionally, there may be related cloud-init documentation in the datasourcesection.

Once an instance has been initialized, the user-data may not be edited. It is sourced directly from the cloud, so even if you find a local file that contains user-data, it will likely be overwritten in the next boot.

Distro providers

Modify the base config. This often involves submitting a PR to modify the base cloud.cfg template, which is used to customize/etc/cloud/cloud.cfg per distro. Additionally, a file can be added to/etc/cloud/cloud.cfg.d to override a piece of the base configuration.

Cloud providers

Pass vendor-data. This is the preferred method for clouds to provide their own customisation. In some cases, it may make sense to modify the base config in the same manner as distro providers on cloud-supported images.