根据Jinja的Template Designer Documentation,“一个木匠传递一个字符串,每次调用时都会返回该字符串,除了第一次。”
所以,如果我在我的模板中多次使用它,那么它唯一一次表现如预期的那样是第一次。在任何其他时候,它会在字符串之前应用过滤器。
例如:
{% set comma = joiner(", ") %}
{% for version in ssl_versions %}
{{ comma() }}'{{ version }}'
{% endfor %}
{% for backend in auth_backends %}
{{ comma() }}{{ backend }}
{% endfor %}
将输出:
'1', '2', '3'
, backend1, backend2
相反,我希望我的模板看起来像这样:
'1', '2', '3'
backend1, backend2
除了创建多个加入者之外,我还能做些什么来实现这种行为?
有没有办法重置我的joiner变量?
答案 0 :(得分:1)
对于未来的人,他们将在2017年之后寻找答案:
到目前为止,实际上,您可以一次又一次发出{% set comma = joiner(", ") %}
来重新创建具有相同名称的连接器。在这种情况下,连接器每次都会重置,并以您期望的方式运行。
已检查Ansible 2.8