У меня есть задача, которая сообщает мне, открыт порт или нет в списке хостов с netstat:
- name: who is listening on port 5555
shell: netstat -paunt | grep 5555
register: test
ignore_errors: true
Итак, у меня есть переменная, содержащая для каждого хоста это значение:
ok: [host1 -> localhost] => {
"msg": "tcp 0 0 XX.XX.XX.XX:5555 0.0.0.0:* LISTEN - "
}
Что я хотел бы сделать, так это объединить все непустые вары с именем test в один словарь. Но я не знаю, как это сделать. Можно ли вообще это сделать с помощью ансибла?
Конечным результатом для меня является создание динамического словаря IP с открытым портом, и я выберу случайный из словаря, чтобы провести тест.
Я хочу создать единый словарь из всех зарегистрированных переменных с именем «test», которые содержат результат задачи «кто прослушивает порт 5555».
На данный момент я пытаюсь создать свой словарь, выполнив:
- name: fact
set_fact:
ip: "{{ item }}"
with_items: "{{ test.stdout }}"
when: test.stdout |length > 0
но он не создает словарь, содержащий результаты со всех хостов. хост создает словарь, содержащий только его результат.
python
код, который вы пробовали до сих пор. - person marcos   schedule 19.12.2019hostvars['name in inventory']
. Ссылка: docs.ansible.com/ansible/latest/reference_appendices/ - person Zeitounator   schedule 19.12.2019