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

Ama*_*ala 2 jinja2 ansible ansible-template

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

YAML

test:
  name:
    address:
         zipcode: 12345
Run Code Online (Sandbox Code Playgroud)

Ansible 模板变量

{{ test[name][addre*].zipcode }}
Run Code Online (Sandbox Code Playgroud)

mda*_*iel 6

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

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

dict2items爆炸的孩子name,允许一个模式匹配-或任何其他有趣的小窍门-基于关键dict,这通常-如你所看到的-是不可能的

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

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