Ansible:使用变量按属性筛选列表

Ansible:使用变量按属性筛选列表,ansible,jinja2,Ansible,Jinja2,我在使用变量按属性筛选列表时遇到问题 假设我在ansible中有变量“network”寄存器 { "addresses": { "private_ext": [ { "type": "fixed", "addr": "172.16.2.100" } ], "private_man": [ { "type": "fixed",

我在使用变量按属性筛选列表时遇到问题

假设我在ansible中有变量“network”寄存器

{
    "addresses": {
    "private_ext": [
        {
            "type": "fixed",
            "addr": "172.16.2.100"
        }
    ],
    "private_man": [
        {
            "type": "fixed",
            "addr": "172.16.1.100"
        },
        {
            "type": "floating",
            "addr": "10.90.80.10"
        }
        {
            "type": "floatingXYZ",
            "addr": "10.20.30.10"
        }
    ]
  }
}
我想用这样的东西

- debug: msg="{{ network.addresses | json_query(\"private_man[?type=='^${PATTERN}$'].addr\") }}"
还是这个

- debug: msg={{ network.addresses.private_man | selectattr("type", "match", "^${PATTERN}$") | map(attribute='addr') | join(',') }}
但是搜索模式存储在值为“floating”的变量模式中,我希望找到确切的值(而不是值floatingXYZ)


描述了几乎相同的问题,但没有变量部分。

使用字符串连接:

- debug:
    msg: "{{ network.addresses.private_man | selectattr('type', 'match', '^'+PATTERN+'$') | map(attribute='addr') | join(',') }}"
  vars:
    PATTERN: floating