diff options
author | Chad Smith <chad.smith@canonical.com> | 2021-12-02 21:25:43 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-02 21:25:43 -0700 |
commit | 0fe96a44cde48cc688afe75beb8fd126c8892b8c (patch) | |
tree | 86c3b3e848c2e0bd234a675edc526a22834fcac6 /doc | |
parent | ff10fc0914a8b29acc23348d7848439a5eb4960a (diff) | |
download | vyos-cloud-init-0fe96a44cde48cc688afe75beb8fd126c8892b8c.tar.gz vyos-cloud-init-0fe96a44cde48cc688afe75beb8fd126c8892b8c.zip |
jinja: provide and document jinja-safe key aliases in instance-data (SC-622) (#1123)
Allow #cloud-config and cloud-init query to use underscore-delimited
"jinja-safe" key aliases for any instance-data.json keys
containing jinja operator characters.
This provides a means to use Jinja's dot-notation instead of square brackets
and quoting to reference "unsafe" obtain attribute names.
Support for these aliased keys is available to both #cloud-config user-data and
`cloud-init query`.
For example #cloud-config alias access can look like:
{{ ds.config.user_network_config }}
- instead of -
{{ ds.config["user.network-config"] }}
Diffstat (limited to 'doc')
-rw-r--r-- | doc/rtd/topics/instancedata.rst | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/doc/rtd/topics/instancedata.rst b/doc/rtd/topics/instancedata.rst index 6c17139f..c33b907a 100644 --- a/doc/rtd/topics/instancedata.rst +++ b/doc/rtd/topics/instancedata.rst @@ -530,12 +530,18 @@ Both user-data scripts and **#cloud-config** data support jinja template rendering. When the first line of the provided user-data begins with, **## template: jinja** cloud-init will use jinja to render that file. -Any instance-data-sensitive.json variables are surfaced as dot-delimited -jinja template variables because cloud-config modules are run as 'root' -user. +Any instance-data-sensitive.json variables are surfaced as jinja template +variables because cloud-config modules are run as 'root' user. - -Below are some examples of providing these types of user-data: +.. note:: + cloud-init also provides jinja-safe key aliases for any instance-data.json + keys which contain jinja operator characters such as +, -, ., /, etc. Any + jinja operator will be replaced with underscores in the jinja-safe key + alias. This allows for cloud-init templates to use aliased variable + references which allow for jinja's dot-notation reference such as + ``{{ ds.v1_0.my_safe_key }}`` instead of ``{{ ds["v1.0"]["my/safe-key"] }}``. + +Below are some other examples of using jinja templates in user-data: * Cloud config calling home with the ec2 public hostname and availability-zone |