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
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")
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.
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
À Partir De L'Ansible 2.5
when: variable1 is search("value")
utiliser ce
quand: "{{"valeur" variable1}}"
au lieu de
quand: ""valeur" {{variable1}}"
vous pouvez aussi utiliser
quand: "{{ variable1 == 'valeur' }}"
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'.