【发布时间】:2019-05-09 16:35:29
【问题描述】:
我们如何使用 Ansible 嵌套变量进行通配符搜索?
YAML
test:
name:
address:
zipcode: 12345
Ansible 模板变量
{{ test[name][addre*].zipcode }}
【问题讨论】:
标签: ansible jinja2 ansible-template
我们如何使用 Ansible 嵌套变量进行通配符搜索?
YAML
test:
name:
address:
zipcode: 12345
Ansible 模板变量
{{ test[name][addre*].zipcode }}
【问题讨论】:
标签: ansible jinja2 ansible-template
我们如何使用 Ansible 嵌套变量进行通配符搜索?
- debug:
msg: >-
{{ test.name
| dict2items
| selectattr("key", "match", "addr.*")
| map(attribute="value.zipcode")
| list }}
dict2items 爆炸了name 的子代,允许一个基于dict 的key 的模式匹配——或任何其他有趣的技巧,通常——你已经看到了——不可能
然后我们现在有一个匹配的{"key": "address1234", "value": {"zipcode": "11111"}} 结构列表,所以如果你想要所有这些结构的zipcode 字段,只需进入value 字典并拉出它的zipcode 字段。
最后的list 是一个让步,因为map 生成一个python 生成器,而不是一个实际的列表
【讨论】: