2015-05-09 5 views
6

Wie kann ich Zeichen in Ansibles Zeilenfilemodul entkommen lassen?Wie kann man das '#' Kommentarzeichen innerhalb des Ansible-Line-Infile-Moduls umgehen?

Hier ist die Linie, die ich auf dem Server eingefügt werden soll:

EMAIL='[email protected]' # Server notification email address enter only 1 address

Aber wenn ich die folgende versuchen, weigert ansible es zu analysieren aufgrund YAML Fehler:

line="EMAIL='{{ email_address }}' # Server notification email address enter only 1 address"

Ich vermute, es liegt daran, dass ich eine seltsame Kombination aus doppelten Anführungszeichen, einfachen Anführungszeichen, gleichem Zeichen und Pfundzeichen habe.

+0

nicht gerade eine saubere Lösung, aber können Sie '' 'Teil Ihrer Variablen selbst machen? haben Sie auch versucht, einfache Anführungszeichen und Gleichheitszeichen zu umgehen? – Mxx

+0

Wie entkomme ich einfache Anführungszeichen und das Gleichheitszeichen? Theoretisch erfordert ansible keine einfachen Anführungszeichen in Anführungszeichen, aber es ist sicherlich einen Versuch wert. Ich denke eigentlich, ich muss dem '#' Zeichen entkommen, aber keine Ahnung, wie ich das machen soll. Ich versuchte '\ #' und Ansible akzeptierte es (deshalb denke ich, dass es das zugrundeliegende Problem war), aber dann setzte Ansible das gesamte '\ #' auf den Server, so dass es offensichtlich nicht ganz wie erwartet funktionierte. –

Antwort

10

Das Problem ist in der Tat die in Ihrer Zeichenfolge - aus welchen Gründen auch immer.

Obwohl Sie bequem die Analysefehler verhindern kann diesen Trick unter Verwendung:

line="EMAIL='{{ email_address }}' {{ '#' }} Server notification email address enter only 1 address" 
1

Für längere Form Kommentare oder zur besseren Lesbarkeit können Sie auch Kommentare wie vars: hinzufügen.

name: Do something 
vars: 
    comment: '# Server notification email address enter only 1 address' 
lineinfile: 
    ... 
    line="EMAIL='{{ email_address }}' {{ comment }}"