Dynamic conditionals via with_items

We have a role that’s designed to install & configure nagios in one of our myriad environments. I’m in the process of getting it to work in a new environment. One of the tasks in this role installs a bunch of common nagios check scripts via a with_items loop in a pretty straightforward manner:

  • name: template custom plugins
    template: dest=/usr/lib64/nagios/plugins/{{ item }} src={{ item }} mode=0755 owner=root group=root
    with_items:
  • check_api
  • check_neo4j_replication

Since all these scripts are templated it means they each have variables in them that need to be resolved by Ansible. Some of these variables simply don’t exist in our new environment so I want to skip installing those scripts. To that end I rewrote the task as outlined here: https://gist.github.com/bpennypacker/bba41d293bb23134b82e

With the rewritten task it runs properly, however it also now causes Ansible to throw a warning:

[WARNING]: It is unnecessary to use ‘{{’ in conditionals, leave variables in loop expressions bare.

If I change the ‘when’ clause from when: “{{ item.when }}” to just when: item.when then I no longer get the warning, but Ansible also doesn’t interpret the conditionals properly. They always resolve to true, so the task tries to install the templates and subsequently fails because the associated variables don’t exist.

My question: Would it be considered a bug that Ansible is parsing when: “{{ item.when }}” properly but not when: item.when ?

Thanks,

-Bruce