如何在 Ansible blockinfile 的块开头添加空格?

How to add spaces at beginning of block in Ansible's blockinfile?

我发现这个 blockinfile issue,用户建议在“|”后添加一个数字在 "block: |" 行中,但给出语法错误。基本上,我想使用 blockinfile 模块在文件中添加一个行块,但我希望该块在文件中缩进 6 个空格。这是任务

- name: Added a block of lines in the file
  blockinfile:
  dest: /path/some_file.yml
  insertafter: 'authc:'
  block: |
    line0
      line1
      line2
      line3
        line4

我期待

  authc:
    line0
      line1
      line2
      line3
        line4

但得到

  authc:
line0
  line1
  line2
  line3
    line4

行首添加空格不起作用。我怎样才能做到这一点?

您可以使用名为 "Block Indentation Indicator" 的 YAML 功能:

- name: Added a block of lines in the file
  blockinfile:
  dest: /path/some_file.yml
  insertafter: 'authc:'
  block: |2
      line0
        line1
        line2
        line3
          line4

都是关于 |

之后的 2

参考文献:

我试图使用另一个答案中称为“块缩进指示器”的 YAML 功能,但它对我不起作用 (ansible 2.9.10.post0)。丑陋但可行的解决方案是:

- name: docker-compose.yml - service has links to another container
  lineinfile:
    path: "/path/to/docker-compose.yml"
    insertafter: "service:"
    line: "    links:\n      - apache2:proxy.example.com\n      - apache2:proxy2.example.com"

您基本上需要在元素之前放置尽可能多的空格。并使用 \n 换行。

| 之后的数字描述了该块缩进了多少行。 例如:

  block: |2
    insert some stuff
  ^^ 2 spaces here.

  block: |4
      insert some stuff
  ^^^^ 4 spaces here.

如果您想在目标文件中缩进您的行,您可以使用此解决方法:

  block: |
    # this is a comment
      insert some stuff

在此示例中,行 # this is a comment 不会缩进,行 insert some stuff 将有 2 个前导空格。