Jinja:if语句里面的字符串变量

时间:2017-08-28 09:50:44

标签: python configuration ansible jinja2

我正在尝试在jinja中创建以下循环:

variable: >
[
    {% for replaceme in list %}
    {
        'name': "{{ "string-{{replaceme}}" if replaceme == 'somevalue' else "string-something-{{replaceme}}" }}",
        'sshKey': "{{ lookup(...) }}"
    }
    {% if not loop.last %},{% endif %}
    {% endfor %}
]

但这不起作用,任何想法?我尝试了不同的引号,不同的curlies组合等。

2 个答案:

答案 0 :(得分:5)

不允许使用嵌套{{..}}

尝试:{{ "string-"+replaceme if replaceme == 'somevalue' else "string-something"+replaceme }}

答案 1 :(得分:0)

您可以使用 string formatting operator

[
    {% for item in list %}
        {'name': {{ "s1-%s" % item }} },
    {% endfor %}
]