在Ansible中,如何通过对象的属性是否包含值来过滤对象?例如:我想通过过滤private_man对象(其中addr包含“1.2.3.4”)来返回具有属性name =“a2”的private_man对象。Ansible按属性过滤包含值
这里的Ansible代码:
- hosts: localhost
connection: local
gather_facts: no
vars:
network:
addresses:
private_ext:
- name: a1
addr:
- 1.2.3.4
private_man:
- name: a2
addr:
- 10.10.20.30
- 1.2.3.4
- name: a3
addr:
- 10.90.80.10
我试过如下:
- debug:
msg: "{{ item.name }}"
with_items: "{{ network.addresses.private_man | selectattr('addr', 'in', '1.2.3.4'}} | list"
我想到这显示 “A2”,因为A2对象的地址元素包含1.2.3.4
然而,当我运行它时,它完全失败了,可能是因为selectaddr('addr','in','1.2.3.4')无效。