我在使用变量按属性过滤列表时遇到问题。
我们说我有变量"网络"在ansible登记。
{
"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(',') }}
但搜索模式存储在变量PATTERN中,值为"浮动"我想找到确切的值(不是浮动值XYZ)。
几乎同样的问题被描述为here,但没有变量部分。
答案 0 :(得分:0)
使用字符串连接:
- debug:
msg: "{{ network.addresses.private_man | selectattr('type', 'match', '^'+PATTERN+'$') | map(attribute='addr') | join(',') }}"
vars:
PATTERN: floating