目标是限制主机组在剧本中运行。以下代码不会将组限制为组群集,有时下面的playbook也会在localhost上运行
- hosts: all:!localhost
gather_facts: no
tasks:
...
库存文件如下:
[localhost]
127.0.0.1 ansible_connection=local
[cluster]
ip1
ip2
ip3
然而,尝试- hosts: cluster
,有时仍然在localhost
上运行。
可以通过cli限制组:
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'all:!localhost'
我的目标是限制从剧本源代码运行游戏的组。
- name: Ensure dir exists
file:
path: example/path
state: directory
owner: user
group: group
mode: 0755
when: inventory_hostname in groups['cluster']
以下是诀窍。它仅在您希望的组上运行任务。
when: inventory_hostname in groups['cluster']
然后在所需的主机组上运行
- hosts: cluster,cluster1,cluster2
gather_facts: no
tasks:
...
或者在清单中,您可以通过以下方式对主机组进行分组:
[cluster]
ip1
ip2
ip3
[clusters:children]
cluster
cluster1
然后在群集组上运行playbook