【问题标题】:Ansible jinja - If loop last without newlineAnsible jinja - 如果循环最后没有换行符
【发布时间】:2018-05-31 08:29:30
【问题描述】:

我在使用 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;

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

【问题讨论】:

    标签: ansible jinja2 ansible-2.x


    【解决方案1】:

    您想在变量值之后打印要么一个换行符,后跟 16 个空格, ;,因此对于 if- else 语句:

    server_name     {% for name in server_name -%}
                      {{ name }}
                    {%- if not loop.last %}
    
                    {% else %};{% endif %}{% endfor %}
    

    【讨论】:

    • 这确实成功了。我无法相信你解决它是多么容易。还是谢谢
    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多