mirror of
https://github.com/saltstack-formulas/template-formula.git
synced 2025-04-17 10:10:28 +00:00

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/`
22 lines
671 B
Text
22 lines
671 B
Text
# -*- coding: utf-8 -*-
|
|
# vim: ft=sls
|
|
---
|
|
{#- Get the `tplroot` from `tpldir` #}
|
|
{%- set tplroot = tpldir.split("/")[0] %}
|
|
{%- from tplroot ~ "/map.jinja" import mapdata with context %}
|
|
|
|
{%- set _mapdata = {
|
|
"values": mapdata,
|
|
} %}
|
|
{%- do salt["log.debug"]("### MAP.JINJA DUMP ###\n" ~ _mapdata | yaml(False)) %}
|
|
|
|
{%- set output_dir = "/temp" if grains.os_family == "Windows" else "/tmp" %}
|
|
{%- set output_file = output_dir ~ "/salt_mapdata_dump.yaml" %}
|
|
|
|
{{ tplroot }}-mapdata-dump:
|
|
file.managed:
|
|
- name: {{ output_file }}
|
|
- source: salt://{{ tplroot }}/_mapdata/_mapdata.jinja
|
|
- template: jinja
|
|
- context:
|
|
map: {{ _mapdata | yaml }}
|