История изменений
Исправление CaHbl4, (текущая версия) :
ну в целом можно через register сохранять вывод в переменную для нужных хостов, а потом на локалхосте в цикле собрать значения в один словарь/список
---
# тут для каждого хоста сохраняем вывод в переменную os_version
- hosts: test_hosts
tasks:
- name: "get OS version"
command: "cat /etc/redhat-release"
register: os_version
- debug:
var: os_version
# тут заводим пустой словарь и в цикле аппендим в него значения
- hosts: localhost
vars:
os_versions: {}
tasks:
- name: "OS version in one dict"
set_fact:
os_versions: "{{ hostvars[item]['os_version']['stdout'] | append_to_dict(os_versions, item) }}"
with_items: "{{ groups['test_hosts'] }}"
- debug:
var: os_versions
Примерный вывод:
ok: [localhost] => {
"os_versions": {
"test01": "Red Hat Enterprise Linux release 8.2 (Ootpa)",
"test02": "Red Hat Enterprise Linux release 8.2 (Ootpa)",
"test03": "Red Hat Enterprise Linux release 8.2 (Ootpa)"
}
}
дальше уже приделывать логику для сравнения, можно кастомным фильтром
append_to_dict тоже кастомный, может можно стандартным набором обойтись, но сходу не придумал:
def append_to_dict(_val, _dict, _hostname):
_dict[_hostname] = _val
return _dict
class FilterModule(object):
def filters(self):
return {
'append_to_dict': append_to_dict
}
Исходная версия CaHbl4, :
ну в целом можно через register сохранять вывод в переменную для нужных хостов, а потом на локалхосте в цикле собрать значения в один словарь/список
---
# тут для каждого хоста сохраняем вывод в переменную os_version
- hosts: test_hosts
tasks:
- name: "get OS version"
command: "cat /etc/redhat-release"
register: os_version
- debug:
var: os_version
# тут заводим пустой словарь и в цикле аппендим в него значения
- hosts: localhost
vars:
os_versions: {}
tasks:
- name: "OS version in one dict"
set_fact:
os_versions: "{{ hostvars[item]['out']['stdout'] | append_to_dict(os_versions, item) }}"
with_items: "{{ groups['test_hosts'] }}"
- debug:
var: os_versions
Примерный вывод:
ok: [localhost] => {
"os_versions": {
"test01": "Red Hat Enterprise Linux release 8.2 (Ootpa)",
"test02": "Red Hat Enterprise Linux release 8.2 (Ootpa)",
"test03": "Red Hat Enterprise Linux release 8.2 (Ootpa)"
}
}
дальше уже приделывать логику для сравнения, можно кастомным фильтром
append_to_dict тоже кастомный, может можно стандартным набором обойтись, но сходу не придумал:
def append_to_dict(_val, _dict, _hostname):
_dict[_hostname] = _val
return _dict
class FilterModule(object):
def filters(self):
return {
'append_to_dict': append_to_dict
}