Что такое способ jinja для фильтрации списка IP-адресов с использованием списка подсетей для получения списка IP-адресов, присутствующих в этих подсетях?
В общих чертах, я хотел бы отфильтровать последовательность объектов, применив несколько тестов к каждому объекту и выбрав только объекты, у которых хотя бы один тест прошел успешно.
Вот более подробная информация:
У меня есть список IP-адресов сервера из доступных фактов:
"ansible_all_ipv4_addresses": [
"192.168.1.108",
"192.168.10.108",
"192.168.20.108",
"192.168.30.108"
]
И у меня есть список IP-подсетей, в которых служба должна быть включена (получена через this ):
"allowed_subnets": [
"192.168.1.0/24",
"192.168.5.0/24",
"192.168.10.0/24",
"192.168.30.0/24"
]
В Ansible также есть ipaddr фильтр , который можно использовать для фильтрации списка IP-адресов для тех, которые включены в указанную подсеть, например:
# {{ test_list | ipaddr('192.0.0.0/8') }}
['192.24.2.1', '192.168.32.0/24']
Я пробовал это:
subnet_list:
- "192.168.1.1"
- "192.168.2.1"
- "192.168.3.1"
- "192.168.4.1"
- "192.168.5.1"
и
{{ subnet_list | ipaddr("192.168.1.0/23", "192.168.5.0/24") }}
но результат - пустой список, поэтому я предполагаю, что фильтр ipaddr
использует логическое И .