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