template error while templating string: unexpected char u'\\' at 127

Hi!

The following ansible snippet worked fine in 1.7, but throws an error in 1.8. I suspect it has something to do with the {% … %} string I’m trying to insert into the file. I tried different ways to escape it, but can’t find the solution.

  • name: add logon banner
    lineinfile: dest=/usr/lib/python2.7/dist-packages/horizon/templates/auth/_login.html regexp=‘^ ’ line=" {% include "banner.html" %}"

fatal: [node] => template error while templating string: unexpected char u’\’ at 127

Without escaping the double quotes I get a different error:

lineinfile: dest=/usr/lib/python2.7/dist-packages/horizon/templates/auth/_login.html regexp=‘^ ’ line=’ {% include “banner.html” %}’

fatal: [node] => an unexpected type error occurred. Error was no loader for this environment specified

I appreciate any suggestions!

Christoph

Does it work if you use pure YAML syntax?

- name: add logon banner
  lineinfile:
    dest:
    /usr/lib/python2.7/dist-packages/horizon/templates/auth/_login.html
    regexp: '^ </fieldset>'
    line: ' </fieldset>{% include "banner.html" %}'

Giovanni

Unfortunately not. I tried:

  • name: add logon banner

lineinfile:

dest: /usr/lib/python2.7/dist-packages/horizon/templates/auth/_login.html

regexp: ‘^ ’

line: ’ {% include “banner.html” %}’

TASK: [add logon banner] ******************************************************

fatal: [node11] => an unexpected type error occurred. Error was no loader for this environment specified

Have you tried the replace module?
Would it be feasible for you to template that file?

What I really want is to add that line to the file. Templating would mean that I need to change my template everytime the original file changes.

I tried to template it anyway, but it also gives me an error since the content of the file contains curly braces. Apparently there used to be a way to change the variable_start_string, but that feature has been removed. It seems that I need to wait for this issue to be resolved first: https://github.com/ansible/ansible/issues/10031

try escaping with raw

ineinfile: dest=/usr/lib/python2.7/dist-packages/horizon/templates/auth/_login.html
regexp='^ </fieldset>' line=" </fieldset>{% raw %}{% include
\"banner.html\" %}(% endraw %}"

Brian, thanks a lot, this is working!

Cheers,

Christoph