web-dev-qa-db-ja.com

単一ブロックで複数行のJinja2条件を行う方法は?

以下のコードは構文的に正しくないため拒否されます:

{%
    if inventory_hostname in groups.aptcache
        set cachehost = 'localhost'
    else
        set cachehost = groups['aptcache'] | first
    endif
%}
cache={{ cachehost }}

私の願いは、Jinja2の第一人者が私を訂正できるように私の意図が十分に明確であることです。

3
Mikhail T.

If式でない限り、if-then-elseを1つのブロックに入れることはできません。どちらか:

{% if inventory_hostname in groups.aptcache %}
{%      set cachehost = 'localhost' %}
{% else %}
{%      set cachehost = groups['aptcache'] | first %}
{% endif %}
cache={{ cachehost }}

または

cache={{ 'localhost' if inventory_hostname in groups.aptcache else groups['aptcache'] | first }}
5
Mark Wagner