Team,
У меня есть задача, в которой перечислены имена хостов, и мне нужно использовать эти имена хостов и запустить проверку контрольной суммы модулей ядра Linux. Новичок в этом, какой-нибудь намек, пожалуйста?
task:
- name: "Pull NodeName with Kernel Version"
set_fact:
nodes_kernelversion: "{{ gpu_node_list | json_query(query) }}"
vars:
query: 'resources[].{node_name: metadata.name, nodeType: status.nodeInfo.kernelVersion}'
- debug:
var: nodes_kernelversion
- name: "uname on all hosts "
shell: ssh -F {{ ssh_cfg_path.stdout }} {{ item.node_name }}.{{ ssh_host }} "uname -a"
ignore_errors: no
with_items: "{{ nodes_kernelversion }}"
Выше работает нормально: Теперь я хочу запустить задачу ниже на всех хостах, которые я нашел выше.
- name: verify if kernel modules exists
stat:
path: /lib/modules/{{ kernel_version }}/kernel/{{ item.dir }}/{{ item.module_name }}
checksum_algorithm: sha1
register: res
failed_when: res.stat.checksum != item.sha1
with_items:
- { dir: fs/fscache, module_name: fscache.ko, sha1: "{{ checksum.fscache }}" }
- { dir: fs/cachefiles, module_name: cachefiles.ko, sha1: "{{ checksum.cachefiles }}" }
- { dir: fs/isofs, module_name: isofs.ko, sha1: "{{ checksum.isofs }}" }
- { dir: drivers/target , module_name: target_core_user.ko, sha1: "{{ checksum.target_core_user }}" }
- { dir: drivers/target/loopback , module_name: tcm_loop.ko, sha1: "{{ checksum.tcm_loop }}" }
- fail:
msg: "FAILED TO FIND {{ item.item }}"
with_items: "{{ res.results }}"
when: item.stat.exists == False
вывод:
ok: [target1] => {
"nodes_kernelversion": [
{
"nodeType": "4.15.0-45-generic",
"node_name": "node1"
},
{
"nodeType": "4.15.0-45-generic",
"node_name": "node2"
}
]
}