salt.modules.defaults

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=u'')

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.

merge_lists
: False
If True, it will also merge lists instead of replace their items.
in_place
: True

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
merge_lists
: True
If True, it will also merge lists instead of replace their items.
in_place
: True
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.