Note: This is a sharp knife feature - be careful with it. It was added to Juju in version 2.3.1.
Allows the user to provide additional cloudinit data to be included in the cloudinit data created by Juju.
Specifying a key will overwrite what juju puts in the cloudinit file with the following caveats:
bootcmdkeys will cause an error
packageskey will be appended to the packages listed by juju
runcmdskey will cause an error. You can specify
postruncmdkeys to prepend and append the runcmd created by Juju.
- setting a default locale for deployments that wish to use their own locale settings
- adding custom CA certificates for models that are sitting behind an HTTPS proxy
- adding a private apt mirror to enable private packages to be installed
- blacklist SSH fingerprints from being printed to the console for security-focused deployments
Juju uses cloud-init to customise instances once they have been provisioned by the cloud. The
cloudinit-userdata model configuration setting (model config) allows you to tweak what happens to machines when they are created up via the “user data” feature.
From the website:
Cloud images are operating system templates and every instance starts out as an identical clone of every other instance. It is the user data that gives every cloud instance its personality and cloud-init is the tool that applies user data to your instances automatically.
Providing custom user data to cloudinit
Create a file,
cloudinit-userdata.yaml, which starts with the
cloudinit-userdata key and data you wish to include in the cloudinit file. Note: juju reads the value as a string, though formatted as YAML.
cloudinit-userdata: | <key>: <value> <key>: <value>
Provide the path your file to the
juju model-config cloudinit-userdata.yaml
Reading the current setting
To read the current value, provide the
cloudinit-userdata key to the
model-config command as a command-line parameter. Adding the
--format yaml option ensures that it is properly formatted.
juju model-config cloudinit-userdata --format yaml
cloudinit-userdata: | packages: - 'python-keystoneclient' - 'python-glanceclient'
Clearing the current custom user data
--reset option to the
model-config command to clear anything that has been previously set.
juju model-config --reset cloudinit-userdata
- In cloud-init, the
runcmdkey accepts both lists of strings and strings. However, Juju only supports strings currently. This will be resolved when “cloudinit-userdata doesn’t handle lists in rancid properly” is fixed.
- custom cloudinit-userdata must be passed via file, not as options on the command line (like the
Model configuration settings are documented as part of Juju’s official docs:
To read more about how various levels of settings inter-operate in the Juju model, read this post in Discourse: