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

我希望能够运行一个可行的任务,只有当前的主机 不属于这里的剧本到一个特定的组。在半伪代码中:

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

我该怎么做?

156452 次浏览

您可以在位于 group_vars/的 vars 文件中设置控制变量,或者直接在 host 文件中设置,如下所示:

[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

还有一个办法:

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

group_names是一个神奇的变量,如下所示:

Group _ name 是当前主机所在的所有组的列表(数组)。