具有匹配正则表达式值的词典列表中的Ansible select子列表

时间:2018-10-29 21:18:19

标签: ansible yaml

我有一个与以下内容类似的yml列表:

name_ips: 
  rr: [
        {
            "name": "db1-137.com", 
            "ip": "1.1.1.1"
        }, 
        {
            "name": "core1-137.com", 
            "ip": "2.2.2.2"
        }, 
        {
            "name": "core0-139.com", 
            "ip": "3.3.3.3"
        }, 
        {
            "name": "db0-147.com", 
            "ip": "4.4.4.4"
        }
      ]

使用ansible,我要在此列表中选择与正则表达式匹配的name值的项目:

regexp: ".*137.com"

我的最终结果应类似于以下内容,我希望可以使用set_fact模块进行设置:

[
    {
        "name": "db1-137.com", 
        "ip": "1.1.1.1"
    }, 
    {
        "name": "core1-137.com", 
        "ip": "2.2.2.2"
    }
]

如何实现此子列表选择操作?

更新

我发现如果输入确切的名称,我可以返回一个值:

- debug: msg="{{ name_ips | json_query(\"rr[?name=='core0-139.com']\") }}"` 

返回:

    {
        "name": "core0-139.com", 
        "ip": "3.3.3.3"
    }

这是一个开始,但是我仍然想使用正则表达式进行搜索。

0 个答案:

没有答案