Ansible 嵌套变量正则表达式搜索

Ansible Nested Variable Regex search

我们如何使用 Ansible 嵌套变量进行通配符搜索?

YAML

test:
  name:
    address:
         zipcode: 12345

Ansible 模板变量

{{ test[name][addre*].zipcode }}

How do we do a wildcard search with Ansible nested variable?

- debug:
    msg: >-
      {{ test.name
      | dict2items
      | selectattr("key", "match", "addr.*")
      | map(attribute="value.zipcode")
      | list }}

其中 dict2items 展开了 name 的子级,允许根据 key dict,如您所见,这通常是不可能的

然后我们现在有一个匹配 {"key": "address1234", "value": {"zipcode": "11111"}} 结构的列表,所以如果你想要所有这些结构的 zipcode 字段,只需进入 value dict 并拉出它zipcode 字段。

最后的 list 是一个让步,因为 map 生成一个 python 生成器,而不是一个实际的列表