summaryrefslogtreecommitdiffstats
path: root/lib/ansible/plugins/filter/combine.yml
blob: 86788f310791be546fffbfd2559e6da81c7b2ca6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
DOCUMENTATION:
  name: combine
  version_added: "2.0"
  short_description: combine two dictionaries
  description:
    - Create a dictionary (hash/associative array) as a result of merging existing dictionaries.
  positional: _input, _dicts
  options:
    _input:
      description: First dictionary to combine.
      type: dict
      required: true
    _dicts:  # TODO: this is really an *args so not list, but list ref
      description: The list of dictionaries to combine.
      type: list
      elements: dictionary
      required: true
    recursive:
      description: If C(True), merge elements recursively.
      type: bool
      default: false
    list_merge:
      description: Behavior when encountering list elements.
      type: str
      default: replace
      choices:
        replace: overwrite older entries with newer ones
        keep: discard newer entries
        append: append newer entries to the older ones
        prepend: insert newer entries in front of the older ones
        append_rp: append newer entries to the older ones, overwrite duplicates
        prepend_rp: insert newer entries in front of the older ones, discard duplicates

EXAMPLES: |

    # ab => {'a':1, 'b':3, 'c': 4}
    ab: {{ {'a':1, 'b':2} | combine({'b':3, 'c':4}) }}

    many: "{{ dict1 | combine(dict2, dict3, dict4) }}"

RETURN:
  _value:
    description: Resulting merge of supplied dictionaries.
    type: dict