在Ansible中,可以使用主机组和IP过滤来控制任务在特定主机或主机组上执行。以下是一个解决该问题的示例:
hosts.ini
,并在其中定义主机组和IP地址:[web-servers]
web1 ansible_host=192.168.0.1
web2 ansible_host=192.168.0.2
[db-servers]
db1 ansible_host=192.168.0.3
db2 ansible_host=192.168.0.4
playbook.yml
,并使用主机组和IP过滤来控制任务执行:- name: Example playbook
hosts: web-servers
tasks:
- name: Task 1
debug:
msg: "This task will only run on web-servers"
- name: Another playbook
hosts: db-servers
tasks:
- name: Task 2
debug:
msg: "This task will only run on db-servers"
- name: Yet another playbook
hosts: all
tasks:
- name: Task 3
debug:
msg: "This task will run on all hosts"
- name: Filtered playbook
hosts: all
tasks:
- name: Task 4
debug:
msg: "This task will only run on hosts with IP 192.168.0.1"
when: ansible_host == "192.168.0.1"
在上述示例中:
web-servers
主机组上运行。db-servers
主机组上运行。192.168.0.1
的主机上运行。要运行这个playbook,可以使用以下命令:
ansible-playbook -i hosts.ini playbook.yml
这样就可以根据主机组和IP过滤来控制任务在Ansible主机上的执行了。