x - список. В списке есть элементы, без атрибутов. Элемент, например, x.1 может быть проверен
"{{ x.1|selectattr('a', 'ipaddr','192.168.3.0/24')|list }}"
, но selectattr не распознает ipaddr как тест . Это фильтр .
The error was: TemplateRuntimeError: no test named 'ipaddr'
Есть несколько вариантов действий. Можно зациклить список. Задание ниже
- debug:
msg: "{{ item.a|ipaddr('192.168.3.0/24') }}"
loop: "{{ x }}"
дает
"msg": ""
"msg": "192.168.3.23"
"msg": ""
или добавьте троичный фильтр. Задание ниже
- debug:
msg: "{{ item.a|ipaddr('192.168.3.0/24')|ternary( item.a, 'not in range') }}"
loop: "{{ x }}"
дает
"msg": "not in range"
"msg": "192.168.3.23"
"msg": "not in range"
, или задачи ниже
- set_fact:
a_list: "{{ a_list|default([]) + [ item.a|ipaddr('192.168.3.0/24') ] }}"
loop: "{{ x }}"
- debug:
var: a_list
дать список
"a_list": [
null,
"192.168.3.23",
null
]