Ansible从模块输出中检索多个数组值

时间:2017-06-28 19:46:02

标签: loops ansible

考虑来自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'
   },
  ]
 }

1 个答案:

答案 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') }}"