matt3o
matt3o

Reputation: 653

Multiline Template - string escaping in Ansible

I'm trying to get an effect similar to this article: https://gryzli.info/2017/12/21/ansible-debug-print-variables/

Which means in my case:

- name: Gather facts
  vars:
    msg: |
    "{{ansible_distribution}}"
    "{{ansible_distribution_major_version}}"
    "{{ansible_distribution_release}}"
    "{{ansible_distribution_version}}"

The problem ist that without quotes it throws an error to add the quotes. With quotes it throws the same error:

We could be wrong, but this one looks like it might be an issue with missing quotes. Always quote template expression brackets when theystart a value....

How do I correctly escape this multiline string so that Ansible can parse it? Or does this kind of code no longer work?

Upvotes: 4

Views: 2721

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 67984

Q: "How do I correctly escape this multiline string so that Ansible can parse it?"

A: The problem is the indentation of the block. Quoting from Example 8.3. Invalid Block Scalar Indentation Indicators

ERROR:

  • A leading all-space line must not have too many spaces.
  • A following text line must not be less indented.
  • The text is less indented than the indicated level.

The correct syntax is (with or without quotation)

  vars:
    msg: |
      "{{ansible_distribution}}"
      "{{ansible_distribution_major_version}}"
      "{{ansible_distribution_release}}"
      "{{ansible_distribution_version}}"

Upvotes: 2

Related Questions