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

Ansible jinja - If loop last without newline

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

这是我在groups/all.yml

中定义的变量
server_name:
  - domain1.mydomain.com
  - domain2.mydomain.com
  - domain3.mydomain.com
  - domain4.mydomain.com

这是我 myvhost.conf.j2

的模板
server_name     {% for name in server_name -%}
                  {{ name }}
                {% if loop.last -%};{%- endif -%}{% endfor %}

结果是:

server_name     domain1.mydomain.com
                domain2.mydomain.com
                domain3.mydomain.com
                domain4.mydomain.com
                ;

预期输出:

server_name     domain1.mydomain.com
                domain2.mydomain.com
                domain3.mydomain.com
                domain4.mydomain.com;

我已经尝试了几种模板组合与空白控制或缩进,但它搞砸了结果。请多多指教

您想打印或者一个换行符后跟16个空格,或者 ;,在变量值之后,所以这是对 if-else 语句的自然要求:

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

                {% else %};{% endif %}{% endfor %}