ansible模板 - 尽可能使其干燥

时间:2015-01-02 14:19:32

标签: ansible jinja2

有没有办法使用default()过滤器正确干燥此块?

{% if item.aliases is defined %}
   server_name {{ item.target }} {{ item.aliases|join(" ") }}
{% else %}
  server_name {{ item.target }};
{% endif %}

我试过没有任何成功=> error: expected token 'end of print statement', got 'item'

  {{item.target item.aliases|join(" “)|default( item.target ) }}

我也试过这个,但没有给出预期的结果。

    server_name {{[item.target ,item.aliases|default('')]|join(' ')}};

    # this print :  
    #    server_name actual.domain.com ['alias1.domain.com', 'alias2.domain.com'];
    # and my expected result is
    #    server_name actual.domain.com alias1.domain.com alias2.domain.com ;
    #  or ( when item.aliases is not defined 
    #    server_name actual.domain.com

1 个答案:

答案 0 :(得分:0)

得到了......我的印刷陈述错了:

  server_name {{item.target}} {{item.aliases|default('')|join(' ')}};

输出

  server_name actual.domain.com alias1.domain.com alias2.domain.com ;
  # or
  server_name actual.domain.com;