Skip to content

Instantly share code, notes, and snippets.

@zeitounator
Created December 7, 2023 10:38
Show Gist options
  • Save zeitounator/e915c9a9af01d6256f7b7eeed6d1ad73 to your computer and use it in GitHub Desktop.
Save zeitounator/e915c9a9af01d6256f7b7eeed6d1ad73 to your computer and use it in GitHub Desktop.
$ tree .
.
├── demo.yml
├── unreachable_nodes-1.yml
└── unreachable_nodes-2.yml
0 directories, 3 files
$ cat unreachable_nodes-1.yml
---
unreachable_nodes:
- hostname: host098
ip: host098
- hostname: host099
ip: host099
$ cat unreachable_nodes-2.yml
---
unreachable_nodes:
- hostname: host098
ip: host098
- hostname: host100
ip: host100
$ cat demo.yml
---
- hosts: localhost
gather_facts: false
tasks:
- name: Load data from first server
ansible.builtin.include_vars:
file: unreachable_nodes-1.yml
name: data_A
- name: Load data from second server
ansible.builtin.include_vars:
file: unreachable_nodes-2.yml
name: data_B
- name: Show entries present in both list
ansible.builtin.debug:
var: data_A.unreachable_nodes | intersect(data_B.unreachable_nodes)
- name: Show entries present only in A or B
ansible.builtin.debug:
var: data_A.unreachable_nodes | symmetric_difference(data_B.unreachable_nodes)
- name: Show entries present in A but not in B
ansible.builtin.debug:
var: data_A.unreachable_nodes | difference(data_B.unreachable_nodes)
- name: Show entries present in B but not in A
ansible.builtin.debug:
var: data_B.unreachable_nodes | difference(data_A.unreachable_nodes)
- name: Show entries present in either files
ansible.builtin.debug:
var: data_A.unreachable_nodes | union(data_B.unreachable_nodes)
$ ansible-playbook demo.yml
PLAY [localhost] *********************************************************************************************************************************
TASK [Load data from first server] ***************************************************************************************************************
ok: [localhost]
TASK [Load data from second server] **************************************************************************************************************
ok: [localhost]
TASK [Show entries present in both list] *********************************************************************************************************
ok: [localhost] => {
"data_A.unreachable_nodes | intersect(data_B.unreachable_nodes)": [
{
"hostname": "host098",
"ip": "host098"
}
]
}
TASK [Show entries present only in A or B] *******************************************************************************************************
ok: [localhost] => {
"data_A.unreachable_nodes | symmetric_difference(data_B.unreachable_nodes)": [
{
"hostname": "host099",
"ip": "host099"
},
{
"hostname": "host100",
"ip": "host100"
}
]
}
TASK [Show entries present in A but not in B] ****************************************************************************************************
ok: [localhost] => {
"data_A.unreachable_nodes | difference(data_B.unreachable_nodes)": [
{
"hostname": "host099",
"ip": "host099"
}
]
}
TASK [Show entries present in B but not in A] ****************************************************************************************************
ok: [localhost] => {
"data_B.unreachable_nodes | difference(data_A.unreachable_nodes)": [
{
"hostname": "host100",
"ip": "host100"
}
]
}
TASK [Show entries present in either files] ******************************************************************************************************
ok: [localhost] => {
"data_A.unreachable_nodes | union(data_B.unreachable_nodes)": [
{
"hostname": "host098",
"ip": "host098"
},
{
"hostname": "host099",
"ip": "host099"
},
{
"hostname": "host100",
"ip": "host100"
}
]
}
PLAY RECAP ***************************************************************************************************************************************
localhost : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment