首页 > 解决方案 > Ansible 嵌套变量正则表达式搜索

问题描述

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

YAML

test:
  name:
    address:
         zipcode: 12345

Ansible 模板变量

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

标签: ansiblejinja2ansible-template

解决方案


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

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

允许一个模式匹配的孩子在哪里dict2items爆炸name- 或任何其他有趣的技巧 - 基于 的dict这通常 - 正如你所看到的 - 是不可能的

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

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


推荐阅读