Я хочу предоставить список разрешенных VLAN в качестве переменной для моего сервера.
Ansible playbook должен иметь возможность фильтровать IP-адреса сервера на основе этой VLAN.
У меня есть список всех IP-адресов, доступных на сервере (ansible_all_ipv4_addresses
из доступных фактов)
У меня есть глобальная переменная 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. Путь дзиндзя
Что-то вроде извлечение из my_subnets
элементов сопоставление allowed_vlans
и сопоставление их с ansible_all_ipv4_addresses
через ipaddr () фильтр.
2. Способ запроса JSON
Я пробовал:
{{ my_subnets | json_query('[?vlan in allowed_vlans].subnet') }}
но, похоже, json_query не использует синтаксис python для оценки, если что-то находится в массиве.