Ниже приведен файл test.conf, в котором я буду sh добавлять блок перед тегами закрытия строки, т.е. перед строкой, начинающейся с </VirtualHost>
cat test.conf
#
##<VirtualHost _default_:443>
<VirtualHost *:443>
#ProxyPreserveHost On
</VirtualHost>
Ниже моя книга игр для добавления блока:
cat /tmp/test.yml
---
- name: "Play 1"
hosts: localhost
tasks:
- name: Debug
blockinfile:
path: "/tmp/test.conf"
marker: "#"
state: present
block: |
<FilesMatch "^.*\.(css|html?|js|pdf|txt|xml|xsl|gif|ico|jpe?g|png)$">
Require all granted
</FilesMatch>
insertbefore: '^[^#]*</VirtualHost>'
Я проверил свой test.conf и регулярное выражение ^[^#]*<\/VirtualHost>
онлайн python редактор https://regex101.com, и он соответствует правильной строке. Онлайн тестер и отладчик регулярных выражений: PHP, PCRE, Python, Golang и JavaScript Онлайн тестер регулярных выражений, отладчик с подсветкой для PHP, PCRE, Python, Golang и JavaScript. regex101.com
Файл изменяется, и блок вставляется в неправильном месте, как показано ниже:
TASK [Debug] ************************************************************************************************************************************************
changed: [localhost]
PLAY RECAP **************************************************************************************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
cat /tmp/test.conf
#
<FilesMatch "^.*\.(css|html?|js|pdf|txt|xml|xsl|gif|ico|jpe?g|png)$">
Require all granted
</FilesMatch>
#
##<VirtualHost _default_:443>
<VirtualHost *:443>
#ProxyPreserveHost On
</VirtualHost>
Подскажите, пожалуйста, что не так с моей пьесой и как заставить это работать?