在Ansible中搜索dicts列表中的键

时间:2018-01-24 16:00:06

标签: ansible jinja2

我有一个字典列表,看起来类似于以下内容:

"subnets": [
        {
            "name": "subnet1-name34554",
            "address": "192.168.1.100"
            "id: "id1"
        },
        {
            "name": "subnet2-name67678",
            "addr": "192.168.1.200"
            "id":   "id2"
        },
        {
            "name": "subnet3-name23345",
            "addr": "192.168.1.300"
            "id":   "id3"
        }
    ]

我正在尝试使用部分名称搜索dicts并返回全名。 E.g使用subnet1进行搜索应返回subnet1-name34554

如果我这样做:

- name: test
  debug: msg="{{ subnets |  selectattr("name", "search", "subnet1") | list  }}"

我得到一个包含单个词典的列表:

 [
   {
     "name": "subnet1-name34554",
     "address": "192.168.1.100"
     "id: "id1"
    }
 ]

我不确定下一步只提取“名称”键是什么,或者是否有更好的方法?

1 个答案:

答案 0 :(得分:2)

结果列出了dicts(单个字典)。

因此请将其输入xsh -aC 'open file.xml; $answer={$ARGV[0]}; echo //string[@tag=$answer]/@value' "$answer" 过滤器以仅获取第一个元素,然后解决first属性。

name