我想过滤 ad-hoc ansible 命令的 JSON 输出 - 例如,为多个主机获取一长串“事实”,并只显示一个可能有几个级别的深度,例如ansible_lsb.description
,这样我就可以快速比较哪些版本他们正在运行的软件,检查准确的时间或时区,无论如何。
这有效:
ansible myserver -m setup -a 'filter=ansible_lsb'
myserver | SUCCESS => {
"ansible_facts": {
"ansible_lsb": {
"codename": "wheezy",
"description": "Debian GNU/Linux 7.11 (wheezy)",
"id": "Debian",
"major_release": "7",
"release": "7.11"
}
},
"changed": false
}
但是,正如设置模块文档所述,“过滤器选项仅过滤 ansible_facts 下的第一级子键”,因此失败:
ansible myserver -m setup -a 'filter=ansible_lsb.description'
myserver | SUCCESS => {
"ansible_facts": {},
"changed": false
}
(虽然作为参考,您可以在其他地方使用点符号,例如任务的when conditional)
有没有办法在显示输出之前过滤 JSON 键?