mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 05:10:22 -07:00
bug(lookup/merge_variables): Fix rendering foreign variables (#8303)
* manually prepare variables of foreign host including hostvars property * render variables from context of current host * add integration test for cross host merge * lint fixes * adjust cross host merge unit tests to provide a tiny bit of the HostVars Class API * add license information * lint * add changelog fragment * Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml Okay Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com> * Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml Okay Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com> * Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml Okay Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com> * rename _HostVars to HostVarsMock * removing unnecessary task --------- Co-authored-by: Gitlab CI <alexander.petrenz@posteo.de> Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
This commit is contained in:
parent
bc7ad0f0ea
commit
136419c5c0
6 changed files with 165 additions and 83 deletions
|
@ -14,3 +14,6 @@ ANSIBLE_MERGE_VARIABLES_PATTERN_TYPE=suffix \
|
|||
|
||||
ANSIBLE_LOG_PATH=/tmp/ansible-test-merge-variables \
|
||||
ansible-playbook -i test_inventory_all_hosts.yml test_all_hosts.yml "$@"
|
||||
|
||||
ANSIBLE_LOG_PATH=/tmp/ansible-test-merge-variables \
|
||||
ansible-playbook -i test_cross_host_merge_inventory.yml test_cross_host_merge_play.yml "$@"
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
# Copyright (c) 2020, Thales Netherlands
|
||||
# Copyright (c) 2021, Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
common:
|
||||
vars:
|
||||
provider_instances:
|
||||
servicedata1:
|
||||
host: "{{ hostvars[groups['provider'] | first].inventory_hostname }}"
|
||||
user: usr
|
||||
pass: pwd
|
||||
servicedata2:
|
||||
host: down
|
||||
user: usr2
|
||||
pass: pwd2
|
||||
hosts:
|
||||
host1:
|
||||
host2:
|
||||
|
||||
consumer:
|
||||
vars:
|
||||
service_data: "{{ provider_instances.servicedata1 }}"
|
||||
merge2__1: "{{ service_data }}" # service_data is a variable only known to host2, so normally it´s not available for host1 that is performing the merge
|
||||
hosts:
|
||||
host2:
|
||||
|
||||
provider:
|
||||
vars:
|
||||
merge_result: "{{ lookup('community.general.merge_variables', 'merge2__', pattern_type='prefix', groups=['consumer']) }}"
|
||||
hosts:
|
||||
host1:
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
# Copyright (c) 2020, Thales Netherlands
|
||||
# Copyright (c) 2021, Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Test merge_variables lookup plugin (merging host reference variables)
|
||||
hosts: host1
|
||||
connection: local
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Print merge result
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ merge_result }}"
|
||||
- name: Validate merge result
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "merge_result | length == 3"
|
||||
- "merge_result.host == 'host1'"
|
||||
- "merge_result.user == 'usr'"
|
||||
- "merge_result.pass == 'pwd'"
|
Loading…
Add table
Add a link
Reference in a new issue