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

时间:2018-05-31 08:29:31

标签: ansible jinja2 ansible-2.x

我遇到了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;

我已经尝试了几个用于空格控制或缩进的模板组合,但它搞砸了结果。请善意告知

1 个答案:

答案 0 :(得分:1)

您希望在变量值之后打印 换行符后跟16个空格 ;,因此这是一个自然要求if-else声明:

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

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