仅在主机不属于组时才运行任务

只有在当前剧本的主机不属于某个特定组的情况下,我才能够运行一个合理的任务。 在半伪代码中:

- name: my command command: echo stuff when: "if {{ ansible_hostname }} not in {{ ansible_current_groups }}" 

我应该怎么做?

这是另一种方法来做到这一点:

 - name: my command command: echo stuff when: "'groupname' not in group_names" 

group_names是一个魔术variables,如下所示: http : //docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts :

group_names是当前主机所在组的列表(数组)。

你可以在位于group_vars/variables文件中设置一个控制variables,或者直接在hosts文件中设置一个控制variables:

 [vagrant:vars] test_var=true [location-1] 192.168.33.10 hostname=apollo [location-2] 192.168.33.20 hostname=zeus [vagrant:children] location-1 location-2 

并运行这样的任务:

 - name: "test" command: "echo {{test_var}}" when: test_var is defined and test_var