Greetings,

In one of my playbooks, I prompt for a value that, if specified as a 
string, will later be used in another play. However, I can't seem to find a 
consistent way to evaluate the truthiness/falsiness of the var. Here's a 
sample playbook:

---
- name: Test playbook.
  hosts: localhost
  gather_facts: False

  vars_prompt:
    - name: "test_var"
      prompt: "set a test var string"
      private: no
      default: ""

  tasks:
    # prints when test_var == ""
    # doesn't print when test_var == "a string"
    - debug: msg="I work as expected"
      when: not test_var

    # Doesn't run as expected per 
http://docs.ansible.com/playbooks_variables.html
    - debug: msg="I will never run"
      when: test_var | bool

    - debug: msg="I will never run either"
      when: "{{ test_var | bool }}"

    # I will fail if you don't enter a string
    - debug: msg="test_var is Truthy (no bool)"
      when: test_var


I think I understand the last task is failing because I'm not explicitly 
testing "test_var". However, I don't understand why the two bool tests 
consistently get skipped. My understanding is that the Jinja "when" syntax 
should pretty much follow Python logic, yes? e.g.:

>>> bool("")
False
>>> bool("a string")
True

Is there something I'm missing with regard to testing the 
truthiness/falsiness of a string? This is Ansible 1.8.2.

Many thanks,

-Aaron

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/aa579d50-1200-4240-b71d-969af48519f2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to