web-dev-qa-db-ja.com

Ansible When節でTrue Falseを使用する

私は最も愚かな問題に直面しています。 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
}

望ましい結果は、インクルードをスキップすることです。

22
Simply Seth

destroytrueのときにタスクを実行するには:

---
- hosts: localhost
  connection: local
  vars:
    destroy: true
  tasks:
    - debug:
      when: destroy

destroyfalseの場合:

---
- hosts: localhost
  connection: local
  vars:
    destroy: false
  tasks:
    - debug:
      when: not destroy
36
techraf

変数の値がhostvarsの下で定義されている場合、boolJinja filter を使用する必要はありません。

Vars_Promptから文字列を「True」として入力し、システムがそれがブール値であることを認識していない場合など、特定のタイプとして値をキャストします。

だからシンプル

when: not destroy

トリックを行う必要があります。

13
Henrik Pingel