Execute a tarefa somente se o host não pertencer a um grupo
-
21-12-2019 - |
Pergunta
Gostaria de poder executar uma tarefa ansible somente se o host do manual atual não pertence a um determinado grupo.Em semi-pseudocódigo:
- name: my command
command: echo stuff
when: "if {{ ansible_hostname }} not in {{ ansible_current_groups }}"
Como devo fazer isso?
Solução
Aqui está outra maneira de fazer isso:
- name: my command
command: echo stuff
when: "'groupname' not in group_names"
group_names
é uma variável mágica conforme documentado aqui: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts :
group_names é uma lista (matriz) de todos os grupos em que o host atual está.
Outras dicas
Você pode definir uma variável de controle em arquivos vars localizados em group_vars/
ou diretamente no arquivo hosts como este:
[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
E execute tarefas como esta:
- name: "test"
command: "echo {{test_var}}"
when: test_var is defined and test_var
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow