Ansible jinja - 如果循环最后没有换行符

Ala*_*mHo 0 jinja2 ansible ansible-2.x

我在使用 ansible jinja 模板时遇到了问题。基本上我只需要列出 server_name 是更具可读性的格式。

这是我在 groups/all.yml 中定义的变量

server_name:
  - domain1.mydomain.com
  - domain2.mydomain.com
  - domain3.mydomain.com
  - domain4.mydomain.com
Run Code Online (Sandbox Code Playgroud)

这是我的 myvhost.conf.j2 模板

server_name     {% for name in server_name -%}
                  {{ name }}
                {% if loop.last -%};{%- endif -%}{% endfor %}
Run Code Online (Sandbox Code Playgroud)

结果是:

server_name     domain1.mydomain.com
                domain2.mydomain.com
                domain3.mydomain.com
                domain4.mydomain.com
                ;
Run Code Online (Sandbox Code Playgroud)

预期输出:

server_name     domain1.mydomain.com
                domain2.mydomain.com
                domain3.mydomain.com
                domain4.mydomain.com;
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种带有空格控制或缩进的模板组合,但它弄乱了结果。请亲切指教

tec*_*raf 6

要打印任何一个换行符后跟16个空格,或者 ;,在变量值之后,所以它是一个if-else语句的必然要求:

server_name     {% for name in server_name -%}
                  {{ name }}
                {%- if not loop.last %}

                {% else %};{% endif %}{% endfor %}
Run Code Online (Sandbox Code Playgroud)