Last active
April 27, 2022 06:02
-
-
Save cidrblock/8fbd4082f839e37d623858e4e7c81236 to your computer and use it in GitHub Desktop.
Examples for ansible.utils.consolidate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| - hosts: localhost | |
| gather_facts: false | |
| tasks: | |
| - name: Define some test data | |
| ansible.builtin.set_fact: | |
| values: | |
| - name: a | |
| value: 1 | |
| - name: b | |
| value: 2 | |
| - name: c | |
| value: 3 | |
| colors: | |
| - name: a | |
| color: red | |
| - name: b | |
| color: green | |
| - name: c | |
| color: blue | |
| - name: Define some test data | |
| ansible.builtin.set_fact: | |
| base_data: | |
| - data: "{{ values }}" | |
| match_key: name | |
| prefix: values | |
| - data: "{{ colors }}" | |
| match_key: name | |
| prefix: colors | |
| - name: Consolidate the data source using the name key | |
| ansible.builtin.set_fact: | |
| consolidated: "{{ data_sources|ansible.utils.consolidate }}" | |
| vars: | |
| sizes: | |
| - name: a | |
| size: small | |
| - name: b | |
| size: medium | |
| - name: c | |
| size: large | |
| additional_data_source: | |
| - data: "{{ sizes }}" | |
| match_key: name | |
| prefix: sizes | |
| data_sources: "{{ base_data + additional_data_source }}" | |
| # consolidated: | |
| # a: | |
| # colors: | |
| # color: red | |
| # name: a | |
| # sizes: | |
| # name: a | |
| # size: small | |
| # values: | |
| # name: a | |
| # value: 1 | |
| # b: | |
| # colors: | |
| # color: green | |
| # name: b | |
| # sizes: | |
| # name: b | |
| # size: medium | |
| # values: | |
| # name: b | |
| # value: 2 | |
| # c: | |
| # colors: | |
| # color: blue | |
| # name: c | |
| # sizes: | |
| # name: c | |
| # size: large | |
| # values: | |
| # name: c | |
| # value: 3 | |
| - name: Consolidate the data source using different keys | |
| ansible.builtin.set_fact: | |
| consolidated: "{{ data_sources|ansible.utils.consolidate }}" | |
| vars: | |
| sizes: | |
| - title: a | |
| size: small | |
| - title: b | |
| size: medium | |
| - title: c | |
| size: large | |
| additional_data_source: | |
| - data: "{{ sizes }}" | |
| match_key: title | |
| prefix: sizes | |
| data_sources: "{{ base_data + additional_data_source }}" | |
| # consolidated: | |
| # a: | |
| # colors: | |
| # color: red | |
| # name: a | |
| # sizes: | |
| # size: small | |
| # title: a | |
| # values: | |
| # name: a | |
| # value: 1 | |
| # b: | |
| # colors: | |
| # color: green | |
| # name: b | |
| # sizes: | |
| # size: medium | |
| # title: b | |
| # values: | |
| # name: b | |
| # value: 2 | |
| # c: | |
| # colors: | |
| # color: blue | |
| # name: c | |
| # sizes: | |
| # size: large | |
| # title: c | |
| # values: | |
| # name: c | |
| # value: 3 | |
| - name: Consolidate the data source using the name key (fail_missing_match_key) | |
| ansible.builtin.set_fact: | |
| consolidated: "{{ data_sources|ansible.utils.consolidate(fail_missing_match_key=True) }}" | |
| ignore_errors: true | |
| vars: | |
| vars: | |
| sizes: | |
| - size: small | |
| - size: medium | |
| - size: large | |
| additional_data_source: | |
| - data: "{{ sizes }}" | |
| match_key: name | |
| prefix: sizes | |
| data_sources: "{{ base_data + additional_data_source }}" | |
| # fatal: [localhost]: FAILED! => { | |
| # "msg": "Error when using plugin 'consolidate': 'fail_missing_match_key' | |
| # reported Missing match key 'name' in data source 2 in list entry 0, | |
| # Missing match key 'name' in data source 2 in list entry 1, | |
| # Missing match key 'name' in data source 2 in list entry 2" | |
| # } | |
| - name: Consolidate the data source using the name key (fail_missing_match_value) | |
| ansible.builtin.set_fact: | |
| consolidated: "{{ data_sources|ansible.utils.consolidate(fail_missing_match_value=True) }}" | |
| ignore_errors: true | |
| vars: | |
| sizes: | |
| - name: a | |
| size: small | |
| - name: b | |
| size: medium | |
| additional_data_source: | |
| - data: "{{ sizes }}" | |
| match_key: name | |
| prefix: sizes | |
| data_sources: "{{ base_data + additional_data_source }}" | |
| # fatal: [localhost]: FAILED! => { | |
| # "msg": "Error when using plugin 'consolidate': 'fail_missing_match_value' | |
| # reported Missing match value c in data source 2" | |
| # } | |
| - name: Consolidate the data source using the name key (fail_duplicate) | |
| ansible.builtin.set_fact: | |
| consolidated: "{{ data_sources|ansible.utils.consolidate(fail_duplicate=True) }}" | |
| ignore_errors: true | |
| vars: | |
| sizes: | |
| - name: a | |
| size: small | |
| - name: a | |
| size: small | |
| additional_data_source: | |
| - data: "{{ sizes }}" | |
| match_key: name | |
| prefix: sizes | |
| data_sources: "{{ base_data + additional_data_source }}" | |
| # fatal: [localhost]: FAILED! => { | |
| # "msg": "Error when using plugin 'consolidate': 'fail_duplicate' reported Duplicate values in data source 2" | |
| # } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment