2015-08-27 16 views
5

Wie würde man die mehrzeiligen Strings spezifizieren, die auf einigen Zeilen führende Leerzeichen haben?Mehrzeilige Strings mit führenden Leerzeichen

Wenn ich eine Variable als

multiline_str: | 
    foo 
     bar 
     baz 

definieren und dann schreiben Sie es in eine Datei

- name: write multiline string 
    copy: content="{{ multiline_str }}" dest="/path/to/file" 

dann die Zieldatei Inhalt unter Verwendung ist

foo 
bar 
baz 

Was ist der Trick hier ist, ?

+0

Ist das relevant benutzen? http://stackoverflow.com/questions/715818/ruby-write-escaped-string-to-yaml –

+0

@HighlyIrregular Ich glaube nicht – zerkms

Antwort

11

Versuchen Sie dies.

- name: write multiline string 
    copy: 
    content: "{{ multiline_str }}" 
    dest: /path/to/file 
+0

Das ist erstaunlich, danke. Warum verändert es das Verhalten so sehr? – zerkms

+2

Ich bin mir nicht sicher, aber Sie hätten oft Probleme mit der Analyse von zitierten key = -Werten in einer einzelnen Zeichenfolge, und Sie könnten dies vermeiden, indem Sie params als YAML-Auflistung übergeben. Danke, dass Sie ein kurzes Beispiel gegeben haben, um diese Art von Schreibaufgaben zu fördern. Sie können auch [eine Diskussion in der Vergangenheit] (https://groups.google.com/d/msg/ansible-project/GfJBkzuTTNM/iUkzUKPmBnAJ) zu diesem Thema sehen. – yaegashi

1

Hatte das gleiche Problem kombiniert mit local_action.

Dies funktioniert:

- name: write multiline string 
    local_action: 
    module: copy 
    content: "{{ multiline_str }}" 
    dest: /path/to/file 
1

Sie können möglicherweise \ n (Newline) und \ n (Leerzeichen) \ t (tab)

Verwandte Themen