web-dev-qa-db-fra.com

Exécuter la tâche uniquement si l'hôte n'appartient pas à un groupe

Je voudrais pouvoir exécuter une tâche ansible uniquement si l'hôte du playbook actuel n'appartient pas à un certain groupe. En semi pseudo-code:

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

Comment dois-je faire cela?

85
rgrinberg

Voici une autre façon de faire ceci:

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

group_names est une variable magique telle que documentée ici: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other -hosts :

nom_groupe est une liste (tableau) de tous les groupes dans lesquels se trouve l'hôte actuel.

154
Iskandar Najmuddin

Vous pouvez définir une variable de contrôle dans les fichiers vars situés dans group_vars/ ou directement dans le fichier hosts comme ceci:

[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

Et exécutez des tâches comme celle-ci:

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