【问题标题】:Multiline strings with leading spaces带前导空格的多行字符串
【发布时间】:2015-08-27 22:32:35
【问题描述】:
如何指定在某些行有前导空格的多行字符串?
如果我将变量定义为
multiline_str: |
foo
bar
baz
然后使用
将其写入文件
- name: write multiline string
copy: content="{{ multiline_str }}" dest="/path/to/file"
那么目标文件内容就是
foo
bar
baz
这里有什么诀窍?
【问题讨论】:
标签:
ansible
ansible-playbook
【解决方案1】:
试试这个。
- name: write multiline string
copy:
content: "{{ multiline_str }}"
dest: /path/to/file
【讨论】:
-
-
我不确定,但是你经常会在 Ansible 解析单个字符串中引用的 key=values 时遇到问题,你可以通过将 params 作为 YAML 集合传递来避免它。感谢您提供一个简洁的例子来鼓励这种写作风格。你也可以在这个话题上看到a discussion in the past。
【解决方案2】:
与local_action 结合时遇到了同样的问题。
这行得通:
- name: write multiline string
local_action:
module: copy
content: "{{ multiline_str }}"
dest: /path/to/file
【解决方案3】:
您可以使用 \n(换行符)和 \s(空格)\t(制表符)
【解决方案4】:
您可以使用转义符号保留前导空格:
multiline_str: |
\ foo
\ bar
\ baz