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?
You basically need to put as many spaces as necessary before elements. And use \n for newlines.
Ansible blockinfile module is used to insert/update/remove a block of lines. The block will be surrounded by a marker, like begin and end, to make the task idempotent. If you want to modify/ insert only a line, use lineinfile module.
blockinfile module – Insert/update/remove a text block surrounded by marker lines.
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:
The number after the |
describes how many lines the block is indented. For example:
block: |2 insert some stuff ^^ 2 spaces here. block: |4 insert some stuff ^^^^ 4 spaces here.
If you like to indent your line in the destination file you can use this workaround:
block: | # this is a comment insert some stuff
In this example, the line # this is a comment
will not be indented and the line insert some stuff
will have 2 leading spaces.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With