Skip to content

Instantly share code, notes, and snippets.

@mgedmin
Created May 2, 2017 13:32
Show Gist options
  • Save mgedmin/77f966ef16f41a15ac8c60ca38ec9b7a to your computer and use it in GitHub Desktop.
Save mgedmin/77f966ef16f41a15ac8c60ca38ec9b7a to your computer and use it in GitHub Desktop.
Ansible 2.3 strange warning about {{/}} in when condition

I've an Ansible role that sets up Postfix transport maps. It's configured like this:

roles/mail-server/vars/defaults.yml

# maps domain -> primary mail server hostname/IP
# e.g. backup_mx_for: { example.com: mail.example.com }
backup_mx_for: {}

# same as above, only without a blanket accept rule
extra_postfix_transports: {}

It defines a helper variable like this

roles/mail-server/vars/main.yml

has_transport_maps: "{{ backup_mx_for|length + extra_postfix_transports|length }}"

and uses it like this:

roles/mail-server/tasks/main.yml

- name: set up postfix transport maps
  template: dest=/etc/postfix/transport src=transport.j2
  when: has_transport_maps
  notify:
    - postmap /etc/postfix/transport

Ansible 2.3 produces the following warning with the above role:

[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ backup_mx_for|length + extra_postfix_transports|length }}

To get rid of it I must do the following:

diff --git a/roles/mail-server/vars/main.yml b/roles/mail-server/vars/main.yml
--- a/roles/mail-server/vars/main.yml
+++ b/roles/mail-server/vars/main.yml
@@ -1,2 +1,2 @@
 ---
-has_transport_maps: "{{ backup_mx_for|length + extra_postfix_transports|length }}"
+has_transport_maps: backup_mx_for|length + extra_postfix_transports|length

shrug

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment