Ansible blockinfile oddity
I was reading Ansible's blockinfile sources for, uhm, reasons, and the code flow looked a bit odd.
So I checked what happens if a file has spurious block markers.
Give this file:
$ cat /tmp/test.orig line0 # BEGIN ANSIBLE MANAGED BLOCK line1 # END ANSIBLE MANAGED BLOCK line2 # END ANSIBLE MANAGED BLOCK line3 # BEGIN ANSIBLE MANAGED BLOCK line4
And this playbook:
$ cat test.yaml
---
- hosts: localhost
tasks:
- name: test blockinfile
blockinfile:
block: NEWLINE
path: /tmp/test
You get this result:
$ cat /tmp/test line0 # BEGIN ANSIBLE MANAGED BLOCK line1 # END ANSIBLE MANAGED BLOCK line2 # BEGIN ANSIBLE MANAGED BLOCK NEWLINE # END ANSIBLE MANAGED BLOCK line4
I was hoping that I was reading the code incorrectly, but it turns out that Ansible's blockinfile matches the last pair of begin-end markers it finds, in whatever order it finds them.