2016-04-08 3 views
17

Ich habe mehrere Aufgaben vom Wert der Variable1 abhängen. Ich möchte überprüfen, ob der Wert in {{}} variable1, aber ich habe einen Fehler:Ausführen einer Ansible-Task nur, wenn die Variable eine bestimmte Zeichenfolge enthält

- name: do something when the value in variable1 
    command: <command> 
    when: "'value' in {{variable1}}" 

Ich verwende ansible 2.0.2

+0

Antwort unten funktioniert bei mir (na ja, ich benutze es in 'assert: ... dass:. .. "Welchen Fehler siehst du? – jhutar

Antwort

17

Wenn variable1 ein String ist, und Sie suchen nach ein Teil darin sollte diese Arbeit:

when: '"value" in variable1' 

wenn variable1 einen Array oder dict statt, wird in für den genauen String als eines seiner Elemente suchen.

+1

sollte es nicht sein: wenn:" 'Wert' in Variable1 " –

-1

I verwendet

failed_when: not(promtool_version.stdout.find('1.5.2') != -1) 

bedeutet - scheiterte nur, wenn die zuvor registrierte Variable "promtool_version" nicht enthält String '1.5.2'.

15

Keine der oben genannten Antworten arbeitete für mich in ansible 2.3.0.0, aber das folgende tut:

when: variable1 | search("value") 
+3

+1 Ich bevorzuge diese Antwort. Sie können auch" nicht "vor" Variable1 "hinzufügen, wenn Sie überprüfen möchten Diese Variable1 enthält keinen 'Wert'. when: not variable1 | search ("Wert") –

Verwandte Themen