У меня есть требование создать список на делегированном хосте. Вот что у меня так далеко. В задаче «поставь задачу» эта строка
---
- name: Test Play 1
hosts: localhost
gather_facts: no
vars:
devices:
test1:
hostname: host1
interface: Gi1/43
test2:
hostname: host1
interface: Gi1/44
test3:
hostname: host2
interface: Gi1/1
test4:
hostname: host2
interface: Gi1/2
tasks:
- name: Test Task 1
debug:
msg: "{{ devices }}"
- name: Initiate empty list
set_fact:
device_list: []
delegate_to: localhost
- name: Add devices
set_fact:
device_list: "{{ device_list + [item.value.hostname] }}"
delegate_to: localhost
delegate_facts: True
with_dict: "{{ devices }}"
- name: Initialize shut interface
set_fact:
shut_interface: []
delegate_to: "{{ item.value.hostname }}"
delegate_facts: True
with_dict: "{{ devices }}"
- name: set the task
set_fact:
shut_interface: "{{ hostvars[item.value.hostname].shut_interface + [item.value.interface] }}"
delegate_to: "{{ item.value.hostname }}"
delegate_facts: True
with_dict: "{{ devices }}"
- name: Test Play 2
hosts: "{{ hostvars['localhost']['device_list'] }}"
gather_facts: no
tasks:
- name: Tests 2
debug:
msg: "{{ shut_interface }}"
PLAY [Test Play 1] **************************************************************************************************************************************************************************************
TASK [Test Task 1] **************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": {
"test1": {
"hostname": "host1",
"interface": "Gi1/43"
},
"test2": {
"hostname": "host1",
"interface": "Gi1/44"
},
"test3": {
"hostname": "host2",
"interface": "Gi1/1"
},
"test4": {
"hostname": "host2",
"interface": "Gi1/2"
}
}
}
TASK [Initiate empty list] ******************************************************************************************************************************************************************************
ok: [localhost -> localhost]
TASK [Add devices] **************************************************************************************************************************************************************************************
ok: [localhost -> localhost] => (item={'key': 'test1', 'value': {'hostname': 'host1', 'interface': 'Gi1/43'}})
ok: [localhost -> localhost] => (item={'key': 'test2', 'value': {'hostname': 'host1', 'interface': 'Gi1/44'}})
ok: [localhost -> localhost] => (item={'key': 'test3', 'value': {'hostname': 'host2', 'interface': 'Gi1/1'}})
ok: [localhost -> localhost] => (item={'key': 'test4', 'value': {'hostname': 'host2', 'interface': 'Gi1/2'}})
TASK [Initialize shut interface] ************************************************************************************************************************************************************************
ok: [localhost -> host1] => (item={'key': 'test1', 'value': {'hostname': 'host1', 'interface': 'Gi1/43'}})
ok: [localhost -> host1] => (item={'key': 'test2', 'value': {'hostname': 'host1', 'interface': 'Gi1/44'}})
ok: [localhost -> host2] => (item={'key': 'test3', 'value': {'hostname': 'host2', 'interface': 'Gi1/1'}})
ok: [localhost -> host2] => (item={'key': 'test4', 'value': {'hostname': 'host2', 'interface': 'Gi1/2'}})
TASK [set the task] *************************************************************************************************************************************************************************************
ok: [localhost -> host1] => (item={'key': 'test1', 'value': {'hostname': 'host1', 'interface': 'Gi1/43'}})
ok: [localhost -> host1] => (item={'key': 'test2', 'value': {'hostname': 'host1', 'interface': 'Gi1/44'}})
ok: [localhost -> host2] => (item={'key': 'test3', 'value': {'hostname': 'host2', 'interface': 'Gi1/1'}})
ok: [localhost -> host2] => (item={'key': 'test4', 'value': {'hostname': 'host2', 'interface': 'Gi1/2'}})
PLAY [Test Play 2] **************************************************************************************************************************************************************************************
TASK [Tests 2] ******************************************************************************************************************************************************************************************
ok: [host1] => {
"msg": [
"Gi1/44".
]
}
ok: [host2] => {
"msg": [
"Gi1/2".
]
}
Я ожидаю [Gi1 / 43, Gi1 / 44] для хоста 1 и [Gi1 / 1, Gi1 / 2] для хоста 2. Есть идеи?