Ultimate way to escape braces? (strange corner case inside)

60 views
Skip to first unread message

Andrew Pashkin

unread,
Oct 4, 2015, 11:11:31 AM10/4/15
to ansible...@googlegroups.com
With Ansible 1.9.2 and this playbook:

---
- name: test
  hosts: localhost
  connection: local
  tasks:
    - name: register variable
      shell: >
        echo {% raw %} '{{ .Suddenly.Go.Template.String }}' {% endraw %}
      register: var
    - debug:
        var: var
After invoking like it: ansible-playbook test.yml
You will get this:

fatal: [localhost] => Failed to template {{var}}: Failed to template echo '{{ .Suddenly.Go.Template.String }}': template error while templating string: unexpected '.'
I actually barely understand, why it may happen. Seems like Ansible renders var twicely, and in a second pass it cannot parse Go template string. Or I'm doing something wrong?
-- 
With kind regards, Andrew Pashkin.
cell phone - +7 (985) 898 57 59
Skype - waves_in_fluids
e-mail - andrew....@gmx.co.uk

Borys Borysenko

unread,
Oct 4, 2015, 4:39:58 PM10/4/15
to Ansible Project
The .Suddenly.Go.Template.String is not valid Ansible variable name. Take a look on "What Makes A Valid Variable Name" section of Ansible documentation.

it cannot parse Go template string

I suppose it just typo, but to be clear Ansible support only jinja2 template language.

Andrew Pashkin

unread,
Oct 5, 2015, 6:48:08 AM10/5/15
to ansible...@googlegroups.com
The Go template part is not expected to be parsed by Ansible's template engine at all, and it's enclosed in {% raw %}...{% endraw %} tag because of that.
--
You received this message because you are subscribed to a topic in the Google Groups "Ansible Project" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ansible-project/B2UcEtj0Rok/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/01656db2-0210-41ff-90da-26a95ac243da%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Borys Borysenko

unread,
Oct 5, 2015, 7:49:58 AM10/5/15
to Ansible Project
Hi Andrew, now it's more clear. I did not realize what you want to achieve at first. According to the Jinja docs it should work:

shell: >
        echo {% raw %} {{ '{{.Suddenly.Go.Template.String }}' }} {% endraw %} > /tmp/test
Reply all
Reply to author
Forward
0 new messages