代码之家  ›  专栏  ›  技术社区  ›  Setanta

在Ansible[duplicate]中的目录列表中搜索关键字

  •  4
  • Setanta  · 技术社区  · 7 年前

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

    "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 回复  |  直到 7 年前
        1
  •  10
  •   Konstantin Suvorov    7 年前

    结果,您将得到一个dict列表(单个dict)。

    所以把它输入 first 筛选以仅获取第一个元素,然后获取地址 name 所有物

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