考虑来自ansible模块的以下返回数据,我将结果注册到名为kibana_lc_all的变量中。
我希望能够遍历所有名称值,但我不确定如何使用Ansible ...我知道我可以通过以下方式打印第一个值:
- debug:
msg: "LC info is: {{ kibana_lc_all.results[0].name }}"
但我怎么能迭代并打印所有3个名字,或者将3个名字存储在数组变量中,稍后在另一个任务中迭代它们?此外,永远不会有3个名字,可能是1到20 ......
{
u'results':[
{
u'ram_disk_id':u'',
u'name':u'pro-ELK-Kibana-20170628-1152',
u'image_id':u'ami-1a96a60c'
},
{
u'ram_disk_id':u'',
u'name':u'pro-ELK-Kibana-20170625-1050',
u'image_id':u'ami-1b97d64f'
},
{
u'ram_disk_id':u'',
u'name':u'pro-ELK-Kibana-20170621-0931',
u'image_id':u'ami-1b97d64f'
},
]
}
答案 0 :(得分:2)
使用map过滤器:
- set_fact:
my_list: "{{ kibana_lc_all.results | map(attribute='name') | list }}"
或json_query过滤器:
- set_fact:
my_list: "{{ kibana_lc_all | json_query('results[].name') }}"