Module to work with salt formula defaults files
salt.modules.defaults.
deepcopy
(source)¶Allows deep copy of objects in formulas.
By default, Python does not copy objects, it creates bindings between a target and an object.
It is more typical to use this in a templating language in formulas, instead of directly on the command-line.
salt.modules.defaults.
get
(key, default='')¶defaults.get is used much like pillar.get except that it will read a default value for a pillar from defaults.json or defaults.yaml files that are stored in the root of a salt formula.
CLI Example:
salt '*' defaults.get core:users:root
The defaults is computed from pillar key. The first entry is considered as the formula namespace.
For example, querying core:users:root
will try to load
salt://core/defaults.yaml
and salt://core/defaults.json
.
salt.modules.defaults.
merge
(dest, src, merge_lists=False, in_place=True)¶Allows deep merging of dicts in formulas.
If True, it will also merge lists instead of replace their items.
If True, it will merge into dest dict, if not it will make a new copy from that dict and return it.
CLI Example: .. code-block:: bash
salt '*' default.merge a=b d=e
It is more typical to use this in a templating language in formulas, instead of directly on the command-line.
salt.modules.defaults.
update
(dest, defaults, merge_lists=True, in_place=True)¶Allows to set defaults for group of data set e.g. group for nodes.
This function is a combination of defaults.merge and defaults.deepcopy to avoid redundant in jinja.
Example:
group01: defaults: enabled: True extra: - test - stage nodes: host01: index: foo upstream: bar host02: index: foo2 upstream: bar2{% do salt['defaults.update'](group01.nodes, group01.defaults) %}Each node will look like the following:
host01: enabled: True index: foo upstream: bar extra: - test - stage
If True, it will also merge lists instead of replace their items.
If True, it will merge into dest dict. if not it will make a new copy from that dict and return it.
It is more typical to use this in a templating language in formulas, instead of directly on the command-line.