我想将允许的 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.金贾方式
从匹配的项目中提取并通过ipaddr ()过滤器映射它们。my_subnets
allowed_vlans
ansible_all_ipv4_addresses
2.JSON查询方式
我试过了:
{{ my_subnets | json_query('[?vlan in allowed_vlans].subnet') }}
但似乎 json_query 没有使用 python 语法来评估数组中是否有东西。