linux conditional ansible ansible-playbook ansible-2.x

linux - Ejecutar una tarea ansible solo cuando la variable contiene una cadena específica



conditional ansible-playbook (6)

Desde ansible 2.5

when: variable1 is search("value")

Tengo múltiples tareas que dependen del valor de variable1. Quiero verificar si el valor está en {{variable1}} pero recibí un error:

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

Estoy usando ansible 2.0.2


Este ejemplo utiliza regex_search para realizar una búsqueda de subcadena.

- 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'')

Versión ansible: 2.4.3.0


Ninguna de las respuestas anteriores funcionó para mí en ansible 2.3.0.0, pero lo siguiente hace:

when: variable1 | search("value")

En ansible 2.9 esto está en desuso a favor de usar ~ concatenación para el reemplazo de variables:

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

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


Si variable1 es una cadena, y está buscando una subcadena en ella, esto debería funcionar:

when: ''"value" in variable1''

si variable1 es una matriz o dict, in lugar, buscará la cadena exacta como uno de sus elementos.


solía

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

significa - falla solo cuando la variable previamente registrada "promtool_version" no contiene la cadena ''1.5.2''.


utilizar esta

cuando: "{{''valor'' en variable1}}"

en lugar de

cuando: "''valor'' en {{variable1}}"

También para la comparación de cadenas puede utilizar

cuando: "{{variable1 == ''valor''}}"