在Ansible中,可以使用filter
过滤器来按照特定属性过滤主机变量。下面是一个示例代码:
- hosts: all
gather_facts: False
vars:
my_hosts:
- name: host1
os: linux
- name: host2
os: windows
- name: host3
os: linux
tasks:
- name: Filter hosts by os
debug:
msg: "{{ item.name }}"
loop: "{{ my_hosts | selectattr('os', 'equalto', 'linux') | list }}"
在上面的示例中,my_hosts
变量定义了一个包含多个主机的列表,每个主机都有一个name
属性和一个os
属性。任务Filter hosts by os
使用selectattr
过滤器来按照os
属性值为linux
的主机。最后,使用loop
循环遍历过滤后的主机列表,并输出主机的name
属性。
运行上述代码后,将会输出host1
和host3
,这是因为只有这两台主机的os
属性为linux
。
上一篇:按特定属性对列表进行排序