Exécuter une tâche possible seulement lorsque la variable contient une chaîne spécifique

j'ai plusieurs tâches dépendent de la valeur de variable1. Je veux vérifier si la valeur est dans {{variable1}} mais j'ai une erreur:

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

j'utilise ansible 2.0.2

23
demandé sur ᴳᵁᴵᴰᴼ 2016-04-08 13:08:32

6 réponses

Aucune des réponses ci-dessus, a travaillé pour moi dans ansible 2.3.0.0, mais la suivante:

when: variable1 | search("value")
29
répondu Denise Mauldin 2017-05-25 17:55:58

Si variable1 est une chaîne de caractères, et vous êtes à la recherche d'une chaîne, cela devrait fonctionner:

when: '"value" in variable1'

si variable1 est un tableau ou dict à la place,in recherche exact chaîne de caractères comme l'un de ses éléments.

19
répondu ᴳᵁᴵᴰᴼ 2016-04-08 10:35:36

cet exemple utilise regex_search pour effectuer une recherche de sous-chaîne.

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

version ansible: 2.4.3.0

2
répondu object 2018-04-30 14:24:35

À Partir De L'Ansible 2.5

when: variable1 is search("value")
0
répondu imjoseangel 2018-08-31 09:31:35

utiliser ce

quand: "{{"valeur" variable1}}"

au lieu de

quand: ""valeur" {{variable1}}"

vous pouvez aussi utiliser

quand: "{{ variable1 == 'valeur' }}"

0
répondu sdin 2018-09-13 17:50:11

j'ai utilisé

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

moyen - échec uniquement lorsque la inscrit auparavant variable "promtool_version" ne contient la chaîne '1.5.2'.

-1
répondu Wojciech Sciesinski 2017-03-30 13:10:57