大家好。
我有两个类似的任务,它们在清单文件的'workernodes'组上运行:
- name: count remote files
find:
paths: "{{ data_path }}"
register: exported_files
- name: sum up number of remote files
set_fact:
sum_of_exported_files: "{{ groups[ workernodes ] | map('extract', hostvars, 'exported_files') | map(attribute='matched') | sum }}"
run_once: yes
只要所有节点都可用,此方法就可以正常工作。但是,如果find-Task计数未在任何workernode上运行,则总结任务会出错。该节点上没有export_files变量,因此到属性的映射失败。
我如何过滤已扩展的hostvars列表中export_files属性的存在?
请EnlightMe
谢谢。
答案 0 :(得分:1)
如何添加此when:
子句:
when: groups[ workernodes ] | map('extract', hostvars, 'exported_files')|list|first|length > 0"
答案 1 :(得分:0)
大家好,
最后,我自己找到了(真的很简单)答案:
sum_of_exported_files: "{{ groups[ workernodes ] | map('extract', hostvars, 'exported_files') | select("defined") | map(attribute='matched') | select("number") | sum }}"
感谢伊莎贝拉玛的思想,帮助我进行了深思。