The v5 `map.jinja` is a generic and configurable system to load
configuration values, exposed as the `mapdata` variable, from
different places:
- YAML files and templates from the fileserver for non-secret data
- pillars or SDB are preferred for secret data
- grains or `config.get`
The `map.jinja` optional sources are configured with compound targeting like
syntax `[<TYPE>[:<OPTION>[:<DELIMITER>]]@]<KEY>` with the following
default ordered sources:
- `Y:G@osarch`: YAML file and Jinja template named after `osarch` grain
- `Y:G@os_family`: YAML file and Jinja template named after `os_family` grain
- `Y:G@os` YAML file and Jinja template named after `os` grain
- `Y:G@osfinger` YAML file and Jinja template named after `osfinger` grain
- `C@{{ tplroot ~ ':lookup' }}`: dict retrieved with `salt["config.get"]`
- `C@{{ tplroot }}`: dict retrieved with `salt["config.get"]`
- `Y:G@id`: YAML file and Jinja template named after `osarch` grain
This is done by two new libraries:
- `libmatchers.jinja` provides the `parse_matchers` macro to parse
strings looking like compound matchers, for example `Y:G@osarch`
- `libmapstack.jinja` provides the `mapstack` macro to load
configuration from different sources described by matchers
Post-processing of `mapdata` variable can be done in a `parameters/post-map.jinja`.
The v5 `map.jinja` is documented in `docs/map.jinja.rst`.
BREAKING CHANGE: `map.jinja` now exports a generic `mapdata` variable
BREAKING CHANGE: The per grain parameter values are now under `TEMPLATE/parameters/`
* To distinguish between:
- `salt-minion`
- `salt-call`
- `salt-ssh`
* Invoked like `map.jinja`:
- `{%- from tplroot ~ "/libsaltcli.jinja" import cli with context %}`
* Based upon work done in PRs: #102, #114 & #115
* Finalised from https://github.com/saltstack-formulas/libvirt-formula/pull/71
* Required by #186
- “map.jinja” export a variable name as “<tplroot>”
- import of “libtofs.jinja” is done with context and has access to
“<tplroot>” variable
- in “files_switch”, appending the empty string to the “fsl” variable
modify globally “<tplroot>['tofs']['files_switch']”
* TEMPLATE/libtofs.jinja: do not use inplace “append” to avoid side effect.