2016-04-27 15 views
0

blockinfile scheint grundlegende Substitutionen mit {{ Vorlagen zu tun. In der Dokumentation werden keine Templating-Funktionen erwähnt.Ansible verwenden Sie eine Vorlage mit blockinfile

Es scheint jedoch nicht möglich, eine vollständige Vorlage zu machen, sagen wir mit einer Schleife. Dies scheitert mit 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 %} 

Das ist wie eine grundlegende usecase scheint, wo Ich mag vielleicht ein paar einmalige Änderungen für eine Konfigurationsdatei zu tun, müssen aber noch die Macht der Vorlagen.

Beachten Sie, dass mit with_items nicht wirklich tun, was ich hier will, weil ich genau 1 Zeile brauche.

Antwort

1

Ich denke, das Problem ist, dass Sie eine zusätzliche { in der Vorlage haben.

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

sollte

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

Ja, dumme Fehler sein. Ich habe schließlich herausgefunden, wie Block in Datei funktioniert. – 00500005