Ansible使用带有blockinfile的模板

时间:2016-04-27 13:28:50

标签: jinja2 ansible-playbook ansible-2.x

blockinfile似乎使用{{模板进行基本的替换。文档没有提到任何模板功能。

然而,似乎没有可能做一个完整的模板,比如循环。这与template error while templating string: unexpected '%'

失败
  blockinfile:
    dest: /etc/haproxy/haproxy.cfg
    marker: "# {mark} ANSIBLE CONFIG certs"
    block: |
      {% if certs %}
      bind *:443 ssl crt {% for cert in certs %}{{cert}} {{% endfor %}
      {% endif %}

这似乎是一个基本的用例,我可能想对配置文件进行一些一次性编辑,但仍然需要模板的强大功能。

请注意,使用with_items并不能真正做到我想要的,因为我需要一行。

1 个答案:

答案 0 :(得分:3)

我认为问题在于您在模板中有额外的{

      bind *:443 ssl crt {% for cert in certs %}{{cert}} {{% endfor %}

应该是

      bind *:443 ssl crt {% for cert in certs %}{{cert}} {% endfor %}