I need to use a list variable in other task with other hosts:
---
- name: open_firewall - IP servers list
hosts: servers
gather_facts: yes
tasks:
- name: Create servers list
set_fact:
servers_ip: "{{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}"
- name: Se imprime
debug:
var: servers_ip
- name: open_firewall - Open the firewall of wazuh servers
hosts: wazuh-servers
tasks:
- name: Allow port range 1514-1515
ufw:
rule: allow
port: 1514:1515
proto: tcp
src: "{{ item }}"
loop:
"{{ servers_ip }}"
but I have this error:
TASK [Allow port range 1514-1515] ***************************************************************************************************************************************************************************************************
fatal: [wazuh.server.com]: FAILED! => {"msg": "'servers_ip' is undefined"}
Can I create a "global" list variable or that is impossible? Is there another way to do it?
For example, given the inventory
shell> cat hosts
[servers]
test_11
test_12
test_13
[wazuh_servers]
test_21
test_22
test_23
Get the server's facts
- hosts: servers
tasks:
- debug:
var: ansible_all_ipv4_addresses.0
gives (abridged)
TASK [debug] **********************************************************************************
ok: [test_11] =>
ansible_all_ipv4_addresses.0: 10.1.0.61
ok: [test_12] =>
ansible_all_ipv4_addresses.0: 10.1.0.62
ok: [test_13] =>
ansible_all_ipv4_addresses.0: 10.1.0.63
To create the list of the IPs put the below declaration into the vars
servers_ip: "{{ groups.servers|
map('extract', hostvars, 'ansible_all_ipv4_addresses')|
map('first')|list }}"
gives
servers_ip:
- 10.1.0.61
- 10.1.0.62
- 10.1.0.63
Example of a complete playbook for testing
- hosts: servers
tasks:
- debug:
var: ansible_all_ipv4_addresses.0
- hosts: wazuh_servers
gather_facts: false
vars:
servers_ip: "{{ groups.servers|
map('extract', hostvars, 'ansible_all_ipv4_addresses')|
map('first')|list }}"
tasks:
- debug:
var: servers_ip
PLAY [servers] ********************************************************************************
TASK [Gathering Facts] ************************************************************************
ok: [test_11]
ok: [test_12]
ok: [test_13]
TASK [debug] **********************************************************************************
ok: [test_11] =>
ansible_all_ipv4_addresses.0: 10.1.0.61
ok: [test_12] =>
ansible_all_ipv4_addresses.0: 10.1.0.62
ok: [test_13] =>
ansible_all_ipv4_addresses.0: 10.1.0.63
PLAY [wazuh_servers] **************************************************************************
TASK [debug] **********************************************************************************
ok: [test_21] =>
servers_ip:
- 10.1.0.61
- 10.1.0.62
- 10.1.0.63
ok: [test_22] =>
servers_ip:
- 10.1.0.61
- 10.1.0.62
- 10.1.0.63
ok: [test_23] =>
servers_ip:
- 10.1.0.61
- 10.1.0.62
- 10.1.0.63