web-dev-qa-db-ja.com

Ansibleのlookup()モジュールの結果から改行文字「\ n」を削除する方法は?

ファイル全体を読み取り、コンテンツを変数に保存する[ファイルルックアップ]を使用しています。私のプレイは次のようになります。

  - 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
23
Nishant Singh

replace filter ?でそれを行うことができます。

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

Jinja trim フィルターを使用します。

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