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"
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''}}"