web-dev-qa-db-fra.com

Comment supprimer le caractère de saut de ligne '\ n' du résultat du module lookup () dans Ansible?

J'utilise [recherche de fichier] qui lit le fichier entier et stocke le contenu dans une variable. Ma pièce ressemble à ceci:

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

Ainsi, le code ci-dessus lit le foo.xml fichier et le stocke dans la variable, mais le problème est lorsque le foo.xml contient des sauts de ligne, il inclut également le saut de ligne dans la variable.

Ma foo.xml est ce fichier:

<?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>

La sortie supprime le saut de ligne\n mais inclut également les tabulations\r &\t

Je dois me débarrasser du \n, il faut aussi se débarrasser du formatage supplémentaire (\ r &\t). De plus, après le filtre de remplacement, j'obtiens l'erreur lors du lancement d'une requête de mise à jour DB comme

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

Vous pouvez le faire avec le filtre replace ?

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

Utilisez le filtre Jinja trim :

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