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
Aucune des réponses ci-dessus n'a fonctionné pour moi dans ansible 2.3.0.0, mais les suivantes:
when: variable1 | search("value")
Dans ansible 2.9, il est déconseillé d'utiliser la concaténation pour remplacer les variables:
when: "variable1.find('v=' ~ value) == -1"
Si variable1
est une chaîne et que vous recherchez une sous-chaîne, cela devrait fonctionner:
when: '"value" in variable1'
si variable1
est plutôt un tableau ou un dict, in
recherchera la chaîne exact comme l'un de ses éléments.
À partir de Ansible 2.5
when: variable1 is search("value")
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
utilisez ceci
quand: "{{'valeur' 'dans variable1}}"
au lieu de
quand: "'valeur' dans {{variable1}}"
Aussi pour la comparaison de chaînes, vous pouvez utiliser
quand: "{{variable1 == 'valeur'}}"
Certaines des réponses ne fonctionnent plus comme expliqué.
Actuellement, voici quelque chose qui fonctionne pour moi dans ansible 2.6.x
when: register_var.stdout is search('some_string')