it-swarm.com.de

Führen Sie eine Ansible-Aufgabe nur aus, wenn die Variable eine bestimmte Zeichenfolge enthält

Ich habe mehrere Aufgaben, die vom Wert von Variable1 abhängen. Ich möchte prüfen, ob der Wert in {{variable1}} ist, aber ich habe einen Fehler erhalten:

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

Ich verwende ansible 2.0.2 

29
mndhr

Keine der obigen Antworten hat für mich in Ansible 2.3.0.0 funktioniert, aber Folgendes tut es:

when: variable1 | search("value")

In Version 2.9 wird dies zugunsten der Verwendung von ~ Verkettung für die Ersetzung von Variablen abgelehnt:

when: "variable1.find('v=' ~ value) == -1"

http://jinja.pocoo.org/docs/dev/templates/#other-operators

31
Denise Mauldin

Wenn variable1 eine Zeichenfolge ist und Sie nach einer Teilzeichenfolge darin suchen, sollte dies funktionieren:

when: '"value" in variable1'

wenn variable1 ein Array oder ein Diktat ist, sucht in nach dem exact string als eines seiner Elemente.

27
guido

Von Ansible 2.5

when: variable1 is search("value")
4
imjoseangel

In diesem Beispiel wird mit regex_search eine Teilzeichenfolgen-Suche ausgeführt. 

- name: make conditional variable
  command: "file -s /dev/xvdf"
  register: fsm_out

- name: makefs
  command: touch "/tmp/condition_satisfied"
  when: fsm_out.stdout | regex_search(' data')

ansible version: 2.4.3.0

2
object

benutze das 

wann: "{{'Wert' in Variable1}}"

anstatt 

wann: "Wert" in {{Variable1}} "

Auch für den Stringvergleich können Sie verwenden

wann: "{{variable1 == 'value'}}"

1
sdin

Einige Antworten funktionieren nicht mehr wie erklärt.

Momentan funktioniert hier in ansible 2.6.x etwas

 when: register_var.stdout is search('some_string')
0
Drew