我正在使用ansible中的yum模块列出系统上的所有更新。输出是这样的:
results: [
{
"name": "rubygem-ffi",
"nevra": "0:rubygem-ffi-1.9.10-2.el7.x86_64",
"repo": "epel",
"epoch": "0",
"version": "1.9.10",
"release": "2.el7",
"yumstate": "available",
"arch": "x86_64"
}
{
"name": "some-package",
"nevra": "blah",
"repo": "epel",
"epoch": "0",
"version": "6",
"release": "6.el7",
"yumstate": "available",
"arch": "x86_64"
}
]
我在任务中使用的代码是:
- name: yum list
yum: list=updates
register: output
我想要的是只有在JSON输出中找到包名称时才打印调试消息。像这样:
- debug: msg="Found it!"
when: [output.I don't know the right filter] == "rubygem-ffi"
我尝试了类似output.results.name
或output.results|map(attribute='name')|list
的内容,但它们似乎无法正常工作
任何线索?
答案 0 :(得分:1)
可能还有其他解决方案。这个对我有用:
- debug: msg='Found It!'
when: item.name == 'rubygem-ffi'
with_items: output.results