我希望获得有关操作系统版本或主机的其他属性的某种统计信息。
理想情况下,我希望获得类似的内容:
debian 8 - 10 machines
debian 7 - 5 machine
centos 7 - 1 machine
答案 0 :(得分:0)
使用Ansible很难得到这种格式。我认为最好的办法就是创建一个自定义回调插件。否则,您将始终拥有任务及其状态等的Ansible典型输出格式
如果格式实际上并不重要,而您只是想要这些信息,那么您可以这样做:
- group_by: key=sys_{{ ansible_distribution }}_{{ ansible_distribution_major_version }}
- debug: msg="{{ groups[item] | length }}"
with_items: groups
delegate_to: localhost
run_once: true
when: item | match("^sys_")
这将输出如下内容:
TASK [debug] *******************************************************************
ok: [some.host -> localhost] => (item=sys_Debian_8) => {
"item": "sys_Debian_8",
"msg": "10"
}
ok: [some.host -> localhost] => (item=sys_Debian_7) => {
"item": "sys_Debian_7",
"msg": "2"
}
ok: [some.host -> localhost] => (item=sys_CentOS_7) => {
"item": "sys_CentOS_7",
"msg": "1"
}
由于调试任务遍历Ansible已知的所有组,因此它还将遍历您在清单中定义的所有组加all
和ungrouped
。上面的示例对此进行了过滤(when: item | match("^sys_")
),但跳过的项仍然可以作为跳过的任务显示。
但是如果你有一组固定的组,你可以简单地过滤那些:
with_items: groups | difference(['all', 'ungrouped', 'all-your-other-groups-here'])