Remove the empty lines left by Jinja2 variable definitions

ITChap picture ITChap · Feb 3, 2015 · Viewed 21.4k times · Source

When writing template files using Jinja2 for Saltstack, I often define some variables at the beginning of the file. For example:

{% set ip = grains['ip4_interfaces']['eth1'][0] %}
{% set domain = pillar['company_domain'] %}
{% set version = pillar['site_version'] %}
{% set site_url = 'www.' + domain %}

[...]

Everything works fine but when opening the generated file, I get a block of empty lines where the jinja code was.

Am I doing something wrong ? If not, is there any way to get rid of those empty lines when using templates ?

Answer

oeuftete picture oeuftete · Feb 3, 2015

There is whitespace control in Jinja2. You might want:

{%- set ip = grains['ip4_interfaces']['eth1'][0] -%}
{%- set domain = pillar['company_domain'] -%}
{%- set version = pillar['site_version'] -%}
{%- set site_url = 'www.' + domain -%}

[...]

As well, the salt configuration file supports jinja_trim_blocks and jinja_lstrip_blocks (jinja_env:trim_blocks, jinja_env:lstrip_blocks, jinja_sls_env:trim_blocks, and jinja_sls_env:lstrip_blocks as of 2018.3).