Ansible解析字符串到布尔值失败(变量赋值)

时间:2018-06-18 07:17:19

标签: ansible

我正在尝试将字符串比较的结果分配给ansible(2.5.4)中的布尔变量,但不管我怎么做它的 False ,即使它应该是 True

OS_ENV: "test"
IS_TEST: '{{ "OS_ENV" == "test"}}'
#IS_TEST: '{{ "OS_ENV" == "test"}}'
#IS_TEST: '{{ "OS_ENV" == "test" | bool}}'
#IS_TEST: "{{ OS_ENV == 'test' | bool }}"
#IS_TEST: ("{{OS_ENV}}" == 'test')
#IS_TEST: true
test_boolean: "{{'TEST_IS_TRUE' if IS_TEST else 'TEST_IS_FALSE'}}"

打印结果的任务:

- name: "test_boolean is {{ test_boolean }} when IS_TEST is {{ IS_TEST }}"
  debug:
    msg: "Message is:  test_boolean is {{ test_boolean }} when IS_TEST is {{ IS_TEST }}"

在上述所有案例中都给出了:

   "msg": "Message is:  test_boolean is TEST_IS_FALSE when IS_TEST is False"

这是错的,我错过了什么?

1 个答案:

答案 0 :(得分:2)

以下表达式将始终生成false

  • IS_TEST: '{{ "OS_ENV" == "test"}}'
    

    字符串OS_ENV与字符串test不匹配。

  • IS_TEST: '{{ "OS_ENV" == "test" | bool}}'
    

    字符串OS_ENVfalse不匹配(即字符串test强制转换为布尔值,因为|优先于==。)

  • IS_TEST: "{{ OS_ENV == 'test' | bool }}"
    

    变量OS_ENV值与false不匹配。

  • IS_TEST: ("{{OS_ENV}}" == 'test')
    

    字符串{{OS_ENV}}与字符串test不匹配。

将变量值与字符串进行比较的表达式为:

IS_TEST: '{{ OS_ENV == "test" }}'