Read a JSON text into a variable in Ansible without parsing it

Posted by ads' corner on Sunday, 2022-03-20
Posted in [Ansible]

For one project I need to insert the content of a local file into another file on the remote system, and the first file happens to be JSON. The JSON file is in compact format (jq --compact-output) and is supposed to stay this way. When Ansible reads the content of the file, it determines that the content is JSON, and parses the content into the variable - and along the way is uncompressing the format. Not what I want.

To keep the file content as string, it is necessary to tell Ansible to handle this as string.

Reading the file:

1
2
3
- name: Read JSON from file
  set_fact:
    json_content: "{{ lookup('file', '/home/user/text-shrinked.txt') | string }}"

When writing the file on the remote host (simplified):

1
2
3
4
- name: Write JSON
  copy:
    content: "{{ json_content | string }}"
    dest: "/tmp/json.txt"

The usage of the string filter avoids parsing the content as JSON.


Categories: [Ansible]
Tags: [Ansible] [Automation] [Jq] [Json] [Xml]