在Ansible中,可以使用主机变量来过滤主机。以下是一个示例解决方案:
filter_hosts的Ansible角色目录结构:filter_hosts/
├── tasks/
│ └── main.yml
└── vars/
└── main.yml
vars/main.yml文件中定义主机变量和对应的值。例如,我们定义一个名为env的变量,并设置为prod:# vars/main.yml
env: prod
tasks/main.yml文件中使用主机过滤器来过滤主机。例如,我们可以使用ansible_default_ipv4.address变量来过滤具有特定IP地址的主机:# tasks/main.yml
- name: Filter hosts based on variable
debug:
msg: "Filtered host: {{ inventory_hostname }}"
when: ansible_default_ipv4.address == '192.168.1.100'
inventory.ini的主机清单文件,并且我们只想对具有特定IP地址的主机执行该角色:- name: Apply filter_hosts role
hosts: all
gather_facts: true
roles:
- filter_hosts
ansible-playbook -i inventory.ini playbook.yml
注意:在实际应用中,您可以根据自己的需求定义不同的过滤条件和任务。以上示例仅作为演示目的。