【发布时间】:2018-11-05 18:24:47
【问题描述】:
我想将允许的 VLAN 列表作为变量提供给我的服务器。
Ansible playbook 应该能够根据此 VLAN 过滤服务器的 IP 地址。
我有一个服务器上所有可用 IP 地址的列表(
ansible_all_ipv4_addresses来自 ansible 事实)-
我有一个全局变量
my_subnets:my_subnets: - vlan: 2 subnet: "192.168.2.0/24" gateway: "192.168.2.10" - vlan: 3 subnet: "192.168.3.0/24" dns: "192.168.3.12" - vlan: 4 subnet: "192.168.4.0/24" - vlan: 5 subnet: "192.168.5.0/24" -
我有每个服务变量
allowed_vlans:allowed_vlans: - 2 - 5
我正在寻找一种方法来模板化 "192.168.2.0/24" 和 "192.168.5.0/24"
我在想:
1。神社方式
类似 extract 从 my_subnets 项目 匹配 allowed_vlans 和 map 它们与 ansible_all_ipv4_addresses 通过 ipaddr() 过滤器。
2。 JSON查询方式
我试过了:
{{ my_subnets | json_query('[?vlan in allowed_vlans].subnet') }}
但似乎 json_query 没有使用 python 语法来评估数组中是否存在某些内容。
【问题讨论】:
标签: ansible jinja2 jmespath json-query