私は最も愚かな問題に直面しています。 Ansible 2.2タスクファイルでブール値をテストする方法がわかりません。
vars/main.yml
には、次のものがあります。
destroy: false
プレイブックには、次のものがあります。
roles:
- {'role': 'vmdeploy','destroy': true}
タスクファイルには、次のものがあります。
- include: "create.yml"
when: "{{ destroy|bool }} == 'false'"
私は以下のさまざまな組み合わせを試しました:
when: "{{ destroy|bool }} == false"
when: "{{ destroy|bool }} == 'false'"
when: "{{ destroy|bool == false}}"
when: "{{ destroy == false}}"
when: "{{ destroy == 'false'}}"
when: destroy|bool == false
when: destroy|bool == 'false'
when: not destroy|bool
上記のすべての場合、私はまだ得ます:
statically included: .../vmdeploy/tasks/create.yml
デバッグ出力:
- debug:
msg: "{{ destroy }}"
---
ok: [atlcicd009] => {
"msg": true
}
望ましい結果は、インクルードをスキップすることです。
destroy
がtrue
のときにタスクを実行するには:
---
- hosts: localhost
connection: local
vars:
destroy: true
tasks:
- debug:
when: destroy
destroy
がfalse
の場合:
---
- hosts: localhost
connection: local
vars:
destroy: false
tasks:
- debug:
when: not destroy
変数の値がhostvarsの下で定義されている場合、bool
Jinja filter を使用する必要はありません。
Vars_Promptから文字列を「True」として入力し、システムがそれがブール値であることを認識していない場合など、特定のタイプとして値をキャストします。
だからシンプル
when: not destroy
トリックを行う必要があります。