如何在Ansible中将json输出中某个键的值提取到列表中?

时间:2018-09-17 06:01:06

标签: ansible ansible-2.x ansible-template

在完成一项任务时,我将以下数据结构设置为事实。我正在尝试将SITEID提取到列表中。

"myoutput": [
        {
         "ID": "ZG5zLmhvc3QkLm5vbl9ETlNfaG9zdF9yb290LjAuMTUzNzE1MTcwNzgxNC5oZWxsbw", 
        "extattrs": {
            "SITEID": "10"
         }
       }, 
       {
        "ID": "r/ZG5zLmhvc3QkLm5vbl9ETlNfaG9zdF9yb290LjAuMTUzNzE1OTcyMzQzNy5ibGFo0", 
        "extattrs": {
            "SITEID": "16"
        }
    }
]

我尝试了以下操作,但这只是给了我一个未定义的列表。

  name: write myoutput SITEID to list
   set_fact:
     mylist : "{{  host[1].extattrs | map(attribute='SITEID') | list }}"

1 个答案:

答案 0 :(得分:1)

这很简单:

- name: write myoutput SITEID to list
  set_fact:
    mylist: "{{ myoutput | map(attribute='extattrs.SITEID') | list }}"