【问题标题】:How do I get an Ansible template to honor new lines after a conditional我如何获得一个 Ansible 模板以在有条件的情况下兑现新行
【发布时间】:2014-03-12 11:31:36
【问题描述】:

模板如下所示:

solr.replication.master=
    {% if ansible_eth0.ipv4.address == servermaster.eth0 %}
        false
    {% else %}
        true
    {% endif %}

solr.replication.slave=false

输出应该是这样的:

solr.replication.master=true
solr.replication.slave=false

我实际上得到的是:

solr.replication.master=truesolr.replication.slave=false

我知道 Jinja2 会去除空格,而 ansible 可能会默认配置它。但它似乎不尊重 -/+ 空白标签。

有没有办法强制换行?

【问题讨论】:

    标签: templates jinja2 ansible


    【解决方案1】:

    将以下行添加到模板的第一个位置:

    #jinja2: trim_blocks:False
    

    【讨论】:

    • 你在哪里找到的?文档参考会很棒,因为我找不到它,我认为我需要一些非常相似但不完全一样的东西
    • 这会导致仅包含条件的每一行都被打印为空行。对某些人来说可能没问题,但是...
    • @byoungb 请参阅this section of the docs,另外,the source 环境选项可能有用。
    • 是的,实际上我是想问在哪里记录了您可以将 jinja2 环境变量设置为模板顶部的 cmets。
    • 关于 ansible 模板中此类评论的文档:docs.ansible.com/ansible/latest/collections/ansible/builtin/…
    【解决方案2】:

    我有同样的问题。我通过添加解决了它

    {{''}}
    

    到行尾,例如:

    solr.replication.master={% if ansible_eth0.ipv4.address == servermaster.eth0 %}false{% else %}true{% endif %}{{''}}
    

    这会插入一个空字符串文字,其副作用是不会去除空格。

    【讨论】:

      【解决方案3】:

      正如您提到的,-/+ 空白标签不被接受,line macros 也未被启用(至少不是%% 或# 或##)。

      trim_blocks 在 ansible 中启用。我发现唯一有效的是trim_blocks 只忽略第一个换行符

      对于您的示例,只需添加一个额外的换行符就足够了

      solr.replication.master={% if ansible_eth0.ipv4.address == servermaster.eth0 %}false{% else %}true{% endif %}
      
      solr.replication.slave=false
      

      【讨论】:

        【解决方案4】:

        我相信使用ternary 过滤器可能会有所帮助。

        solr.replication.master={{ (ansible_eth0.ipv4.address == servermaster.eth0) | ternary('false', 'true') }}
        solr.replication.slave=false
        

        【讨论】:

          【解决方案5】:

          作为解决方法,您可以添加到您的模板中

          {% raw %}{% endraw %}
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-11
            • 1970-01-01
            • 1970-01-01
            • 2017-02-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多