How to add spaces at beginning of block in Ansible

2019-04-06 01:57发布

问题:

I found this blockinfile issue, where a user suggested adding a number after the "|" in the "block: |" line, but gives a syntax error. Basically, I want to use blockinfile module to add a block of lines in a file, but I want the block to be indented 6 spaces in the file. Here's the task

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

I expect

  authc:
    line0
      line1
      line2
      line3
        line4

but get

  authc:
line0
  line1
  line2
  line3
    line4

Adding spaces in the beginning of the lines does not do it. How can I accomplish this?

回答1:

How can I accomplish this?

Refer to this answer

Generally it's more canonical to use template files.



回答2:

You can use a YAML feature called "Block Indentation Indicator":

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

It's all about the 2 after the |

References:

  • https://groups.google.com/forum/#!topic/ansible-project/mmXvhTh6Omo
  • In YAML, how do I break a string over multiple lines?
  • http://www.yaml.org/spec/1.2/spec.html#id2793979