2014-01-08 15 views

Antwort

114

Hier ist eine andere Art und Weise, dies zu tun :

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

group_names ist eine magische Variable wie dokumentiert hier: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts:

group_names is a list (array) of all the groups the current host is in.

+2

Nicht so hacky als akzeptierte Antwort. Bitte benutze dies. –

+0

+1 und wenn Sie das umgebende Zitat nicht enthalten, erhalten Sie den Fehler: 'Dieser sieht leicht zu beheben. Es scheint, dass ein Wert mit einem Zitat gestartet wurde, und der YAML-Parser erwartet, dass die Zeile mit der gleichen Art von Zitat beendet wird. –

+1

Ich finde diesen Ansatz lesbarer und bequemer zu schreiben, aber beide funktionieren gleich gut . 'when: inventory_hostname nicht in groups.certain_groups' –

11

Sie können Datei wie folgt in group_vars/ oder direkt in Hosts, die sich eine Stellgröße in Vars Dateien eingestellt:

[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 

und führen Aufgaben wie folgt aus:

- name: "test" 
    command: "echo {{test_var}}" 
    when: test_var is defined and test_var 
+1

akzeptierte Antwort ist genauer für die Frage, aber dies führt Sie unten einen besseren Weg –

Verwandte Themen