限制组从playbook源代码运行播放

问题描述 投票:0回答:2

目标是限制主机组在剧本中运行。以下代码不会将组限制为组群集,有时下面的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'

我的目标是限制从剧本源代码运行游戏的组。

ansible ansible-2.x ansible-inventory
2个回答
0
投票
- 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']

0
投票

然后在所需的主机组上运行

    - hosts: cluster,cluster1,cluster2
      gather_facts: no
      tasks:
      ... 

或者在清单中,您可以通过以下方式对主机组进行分组:

    [cluster]
    ip1
    ip2
    ip3

    [clusters:children]
    cluster
    cluster1 

然后在群集组上运行playbook

© www.soinside.com 2019 - 2024. All rights reserved.