2015-08-27 50 views
5

如何指定在某些行上具有前導空格的多行字符串?帶前導空格的多行字符串

如果我定義一個變量爲

multiline_str: | 
    foo 
     bar 
     baz 

然後將其寫入使用

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

則目標文件內容的文件是

foo 
bar 
baz 

什麼訣竅這裏?

+0

這是相關的? http://stackoverflow.com/questions/715818/ruby-write-escaped-string-to-yaml –

+0

@HighlyIrregular我不這麼認爲 – zerkms

回答

11

試試這個。

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

這太神奇了,謝謝。爲什麼它會如此改變行爲? – zerkms

+2

我不確定,但Ansible通常會在單個字符串中解析帶引號的key =值時遇到問題,並且您可以通過將params作爲YAML集合傳遞來避免它。感謝您提供一個簡潔的例子來鼓勵這種寫作風格。您也可以在這個主題上看到[過去的討論](https://groups.google.com/d/msg/ansible-project/GfJBkzuTTNM/iUkzUKPmBnAJ)。 – yaegashi

1

local_action相同的問題。

這工作:

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

您可以使用\ n(換行符)和\ S(空格)\ T(標籤)