【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 1970-01-01
        • 2019-11-24
        • 2016-10-11
        • 1970-01-01
        • 2021-08-14
        • 2011-07-25
        相关资源
        最近更新 更多