title: Ansible "when variable == true" not behaving as expected
body: <p>I have the following tasks in a playbook I'm writing (results listed next to the debug statement in &lt;>):</p>
  
  <pre><code>  - debug: var=nrpe_installed.stat.exists &lt;true&gt;
    - debug: var=force_install &lt;true&gt;
    - debug: var=plugins_installed.stat.exists &lt;true&gt;
  
    - name: Run the prep 
      include: prep.yml
      when: (nrpe_installed.stat.exists == false or plugins_installed.stat.exists == true or force_install == true)
      tags: ['prep']
  
    - debug: var=nrpe_installed.stat.exists &lt;true&gt;
    - debug: var=force_install &lt;true&gt;
    - debug: var=force_nrpe_install &lt;false&gt;
  
    - name: Install NRPE
      include: install-nrpe.yml
      when: (nrpe_installed.stat.exists == false or force_install == true or force_nrpe_install == true)
      tags: ['install_nrpe']
      vars:
        nrpe_url: 'http://url.goes.here'
        nrpe_md5: 3921ddc598312983f604541784b35a50
        nrpe_version: 2.15
        nrpe_artifact: nrpe-{{ nrpe_version }}.tar.gz
        nagios_ip: {{ nagios_ip }}
        config_dir: /home/ansible/config/
  </code></pre>
  
  <p>And I'm running it with the following command:</p>
  
  <pre><code>ansible-playbook install.yml -i $invFile --extra-vars="hosts=webservers force_install=True"
  </code></pre>
  
  <p>The first include runs, but the second skips with this output:</p>
  
  <pre><code> skipping: [server1] =&gt; {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}
  </code></pre>
  
  <p>I'm under the impression that the conditional check should pass for all of them as <code>force_install == true</code> evaluates to <code>true</code> which should make the whole <code>when</code> evaluate to true (since it's a series of 'OR's).</p>
  
  <p>How do I get the when to run when the variables are set appropriately?</p>
  
  <hr>
  
  <p>Edit:</p>
  
  <p>Changing the second when for the <code>Install NRPE</code> include to the following works, but doesn't explain why the other one, <code>Run the prep</code> runs appropriately:</p>
  
  <p>Working:</p>
  
  <pre><code>when: (not nrpe_installed.stat.exists or force_install or force_nrpe_install)
  </code></pre>
  
  <p>Also working:</p>
  
  <pre><code>when: (nrpe_installed.stat.exists == false or plugins_installed.stat.exists == true or force_install == true)
  </code></pre>
  
  <p>Not working:</p>
  
  <pre><code>when: (nrpe_installed.stat.exists == false or force_install == true or force_nrpe_install == true)
  </code></pre>
  
  <hr>
  
  <p>The truncated (duplicates removed) output of that particular section of the play is:</p>
  
  <pre><code>TASK [debug] *******************************************************************
  ok: [server2] =&gt; {
      "nrpe_installed.stat.exists": true
  }
  
  TASK [debug] *******************************************************************
  ok: [server2] =&gt; {
      "plugins_installed.stat.exists": true
  }
  
  TASK [debug] *******************************************************************
  ok: [server2] =&gt; {
      "force_install": true
  }
  
  TASK [Run the prep] ************************************************************
  included: /tasks/nrpe-install/prep.yml for server2, server3, server4, server5, server6, server7
  
  TASK [Prep and configure for installation | Install yum packages] **************
  ok: [server6] =&gt; (item=[u'gcc', u'glibc', u'glibc-common', u'gd', u'gd-devel', u'make', u'net-snmp', u'openssl-devel', u'unzip', u'tar', u'gzip', u'xinetd']) =&gt; {"changed": false, "item": ["gcc", "glibc", "glibc-common", "gd", "gd-devel", "make", "net-snmp", "openssl-devel", "unzip", "tar", "gzip", "xinetd"], "msg": "", "rc": 0, "results": ["gcc-4.1.2-55.el5.x86_64 providing gcc is already installed", "glibc-2.5-123.el5_11.3.i686 providing glibc is already installed", "glibc-common-2.5-123.el5_11.3.x86_64 providing glibc-common is already installed", "gd-2.0.33-9.4.el5_4.2.x86_64 providing gd is already installed", "gd-devel-2.0.33-9.4.el5_4.2.i386 providing gd-devel is already installed", "make-3.81-3.el5.x86_64 providing make is already installed", "net-snmp-5.3.2.2-20.el5.x86_64 providing net-snmp is already installed", "openssl-devel-0.9.8e-40.el5_11.x86_64 providing openssl-devel is already installed", "unzip-5.52-3.el5.x86_64 providing unzip is already installed", "tar-1.15.1-32.el5_8.x86_64 providing tar is already installed", "gzip-1.3.5-13.el5.centos.x86_64 providing gzip is already installed", "xinetd-2.3.14-20.el5_10.x86_64 providing xinetd is already installed"]}
  
  TASK [Prep and configure for installation | Make nagios group] *****************
  ok: [server2] =&gt; {"changed": false, "gid": 20002, "name": "nagios", "state": "present", "system": false}
  
  TASK [Prep and configure for installation | Make nagios user] ******************
  ok: [server6] =&gt; {"append": false, "changed": false, "comment": "User for Nagios NRPE", "group": 20002, "home": "/home/nagios", "move_home": false, "name": "nagios", "shell": "/bin/bash", "state": "present", "uid": 20002}
  
  TASK [debug] *******************************************************************
  ok: [server2] =&gt; {
      "nrpe_installed.stat.exists": true
  }
  
  TASK [debug] *******************************************************************
  ok: [server2] =&gt; {
      "force_install": true
  }
  
  TASK [debug] *******************************************************************
  ok: [server2] =&gt; {
      "force_nrpe_install": false
  }
  
  TASK [Install NRPE] ************************************************************
  skipping: [server2] =&gt; {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}
  </code></pre>