Ansible extra-varsで真偽値(True/False)を使う

概要

ansibleの実行時にextra-varsで変数の真偽値(True/False)を変更する場合、 そのまま指定しても変更できません。

参考

例えば、以下のように実行すると、test_boolに"True"という文字列が入るため、 真偽値のTrueのような使い方は出来ません。

$ ansible-playbook exstra_vars_boolean.yml -e test_bool=true

解決策

extra-varsで値を辞書型で宣言すれば、真偽値をアップデートできます。

$ ansible-playbook exstra_vars_boolean.yml -e '{"test_bool": True}'

実行例

# exstra_vars_boolean.yml
---
- hosts: localhost
  gather_facts: no
  vars:
    test_bool: false
  tasks:
    - name: debug test_bool
      debug: var=test_bool
      when: test_bool == True

上記のymlを実行する場合、下記のように実行することで、test_boolの値をアップデート出来る

$ ansible-playbook exstra_vars_boolean.yml -e '{"test_bool": True}'
PLAY [localhost] *************************************************************************

TASK [debug test_bool] *******************************************************************
ok: [localhost] => {
    "test_bool": true
}

PLAY RECAP *******************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0