Search code examples
jinja2salt-project

Remove the empty lines left by Jinja2 variable definitions


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 ?


Solution

  • 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).