Variable1の値に依存する複数のタスクがあります。値が{{variable1}}にあるかどうかを確認したいのですが、エラーが発生しました:
- name: do something when the value in variable1
command: <command>
when: "'value' in {{variable1}}"
私はansible 2.0.2を使用しています
Ansible 2.3.0.0では上記の答えはどれもうまくいきませんでしたが、次のようになります:
when: variable1 | search("value")
Ansible 2.9では、変数の置換に〜連結を使用することで、これは非推奨です。
when: "variable1.find('v=' ~ value) == -1"
variable1
が文字列で、その中の部分文字列を検索している場合、これは機能するはずです:
when: '"value" in variable1'
代わりにvariable1
が配列または辞書の場合、in
はその項目の1つとしてexact文字列を検索します。
Ansible 2.5から
when: variable1 is search("value")
この例では、regex_searchを使用して部分文字列検索を実行します。
- 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')
ansibleバージョン:2.4.3.0
説明どおり、一部の回答は機能しなくなりました。
現在、ansible 2.6.xで私のために働くものがここにあります
when: register_var.stdout is search('some_string')
これを使って
when: "{{'value' in variable1}}"
の代わりに
when:「{{variable1}}の「値」」
文字列の比較にも使用できます
when: "{{variable1 == 'value'}}"