I have a task that I would like to conditionally run even in check_mode 
(actually I want to set it for an entire role, but I'm seeing the same 
behavior in regular tasks).


The idea is that this would NOT run the task:
ansible-playbook always_run.yml --check

And then to actually execute the task in check_mode:

ansible-playbook always_run.yml -e '{"runit":true}' --check


But that's not the behavior I'm seeing. The problem is that alwasy_run 
always evaluates to 'true'.

Playbook (I've tried a few different variations. The only one that properly 
evaluates always_run is always_run: false):

---
- name: Do cool stuff
  hosts: localhost
  connection: local
  gather_facts: no

  vars:
    runit: false

  tasks:
  - name: show runit
    debug: var=runit
  - name: show stuff
    command: whoami
    always_run: "runit == true"
    #always_run: "{{runit|default(false)}}"
    #always_run: "{{runit}}"
    #always_run: runit
    #always_run: false
    register: me
  - name: show me
    debug: var=me.stdout_lines



Actual Results:

mikeb@mikeb-laptop:~/ansible-test$ ansible-playbook always_run.yml --check

PLAY [Do cool stuff] 
***********************************************************

TASK [show runit] 
**************************************************************
ok: [localhost] => {
    "runit": false
}

TASK [show stuff] 
**************************************************************
changed: [localhost]

TASK [show me] 
*****************************************************************
ok: [localhost] => {
    "me.stdout_lines": [
        "mikeb"
    ]
}

PLAY RECAP 
*********************************************************************
localhost                  : ok=5    changed=2    unreachable=0    failed=0

   
Expected Results:

mikeb@mikeb-laptop:~/ansible-test$ ansible-playbook always_run.yml --check

PLAY [Do cool stuff] 
***********************************************************

TASK [coolrole : show stuff from role] 
*****************************************
changed: [localhost]

TASK [show runit] 
**************************************************************
ok: [localhost] => {
    "runit": false
}

TASK [show stuff] 
**************************************************************
skipping: [localhost]

TASK [show me] 
*****************************************************************
ok: [localhost] => {
    "me.stdout_lines": "VARIABLE IS NOT DEFINED!"
}

PLAY RECAP 
*********************************************************************
localhost                  : ok=4    changed=1    unreachable=0    failed=0 
  



-- 
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/08a9df18-1be7-4596-ba35-ecce6c8d67bc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to