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?
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.
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