Как удалить символ прерывания строки '\n' из результата модуля lookup() в Ansible?

Я использую [поиск файла], который читает весь файл и сохраняет содержимое в переменной. Моя игра выглядит примерно так:

  - name: Store foo.xml contents in a variable
    set_fact:
     foo_content: "{{ lookup('file', 'foo.xml' ) | replace('\n', '')}}"

Таким образом, приведенный выше код читает файл foo.xml и сохраняет его в переменной, но проблема в том, что в foo.xml есть разрывы строк в нем, он также включает разрыв строки в переменной.

Мой файл foo.xml - это файл:

<?xml version="1.0" encoding="utf-8"?>
<initialize_param>
    <secrets>
        <my_secret id="99">3VMjII6Hw+pd1zHV5THSI712y421USUS8124487128745812sajfhsakjfasbfvcasvnjasjkvbhasdfasgfsfaj5G8A9+n8CkLxk7Dqu0G8Jclg0eb1A5xeFzR3rrJHrb2GBBa7PJNVx8tFJP3AtF6ek/F/WvlBIs2leX2fq+/bGryKlySuFmbcwBsThmPJC5Z5AwPJgGZx</my_secret>
    </secrets>
</initialize_param>

Выход удаляет разрыв строки \n, но также включает вкладки \r &\t

Мне нужно избавиться от \n, нужно также избавиться от дополнительного форматирования (\ r &\t). Кроме того, после замены фильтра я получаю сообщение об ошибке при запуске запроса обновления базы данных как

stderr: /bin/sh: 1: cannot open ?xml: No such file

Ответы

Ответ 1

Вы можете сделать это с помощью фильтра replace?

contents: "{{ lookup('file', '/etc/foo.txt') | replace('\n', '')}}"

Ответ 2

Используйте фильтр обрезки Jinja:

"{{ lookup('file', 'foo.xml' ) | trim }}"