Запустите задание, только если хост не принадлежит группе
-
21-12-2019 - |
Вопрос
Я хотел бы, чтобы иметь возможность запускать некоторую задачу, только если хост текущего Playbook
- 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
- это волшебная переменная, как документирована здесь: http://docs.ansable.com/playbooks_variables.html#magic-variablables-and-how-tom-ccess-information-about-other-hosts :
group_names - это список (массив) всех групп, в котором находится текущий хост.
Другие советы
Вы можете установить переменную управления в файлах vars, расположенных в group_vars/
или непосредственно в файле хостов, как это:
[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
. Не связан с StackOverflow