A for loop in my jinja template is like this
{% for m in grp %}
abc {{ m.length }}
pqr
xyz
{% if m.flag is defined and m.flag == "f" %}
yes f {% endif %}
{% for r in uv %}
abcdef
{% endfor %}
{% endfor %}
Now the problem is in some members of grp don't have the flag variable. Wherever flag is present, the option true line is getting added properly. But when if condition is not satisfied, it just adds one blank line. These 4 or 5 lines are supposed to be without extra blank lines otherwise the generated config file gets marked as invalid.
Can anyone please help me with this?
Q: A blank line is added if the condition is not satisfied.
A: See Whitespace Control. Quoting:
If you add a minus sign (-) to the start or end of a block (e.g. a For tag), a comment, or a variable expression, the whitespaces before or after that block will be removed.
The template below does what you want
{% if m.flag is defined and m.flag == "f" %}
yes f
{% endif -%}
For example, given the data
grp:
- {length: 1, flag: x}
- {length: 2}
- {length: 3, flag: f}
- {length: 4, flag: f}
{% for m in grp %}
{{ m.length }}
xyz
{% if m.flag is defined and m.flag == "f" %}
yes f {% endif %}
{% endfor %}
adds the blank lines
1
xyz
2
xyz
3
xyz
yes f
4
xyz
yes f
{% for m in grp %}
{{ m.length }}
xyz
{% if m.flag is defined and m.flag == "f" %}
yes f
{% endif -%}
{% endfor %}
there are no blank lines
1
xyz
2
xyz
3
xyz
yes f
4
xyz
yes f
{% for m in grp %}
{{ m.length }}
xyz
{% if m.flag|default('') == "f" %}
yes f
{% endif -%}
{% endfor %}
Example of a complete playbook for testing
- hosts: localhost
vars:
grp:
- {length: 1, flag: x}
- {length: 2}
- {length: 3, flag: f}
- {length: 4, flag: f}
tasks:
- debug:
msg: |
{% for m in grp %}
{{ m.length }}
xyz
{% if m.flag is defined and m.flag == "f" %}
yes f {% endif %}
{% endfor %}
tags: t1
- debug:
msg: |
{% for m in grp %}
{{ m.length }}
xyz
{% if m.flag is defined and m.flag == "f" %}
yes f
{% endif -%}
{% endfor %}
tags: t2
- debug:
msg: |
{% for m in grp %}
{{ m.length }}
xyz
{% if m.flag|d('') == "f" %}
yes f
{% endif -%}
{% endfor %}
tags: t3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With