2016-09-22 10 views
6

私は厄介な問題にぶち当たっています。 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 
} 

望ましい結果、それはインクルードには、スキップするだろうということです。

答えて

-1

ザ・は時に前に起こっままあります。

これで、ダイナミックインクルードを作成しました。

---- defaults/main.yml 
mode: "create" 

---- tasks/main.yml 
- include: "{{ mode + '.yml' }}" 
1

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

vars_promptから "True"として文字列を入力し、システムがブール値であることがわからない場合など、特定の型として値をキャストする。

だから、簡単な

when: not destroy 

はトリックをするために必要があります。

9

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 
関連する問題