【发布时间】:2020-02-06 05:07:32
【问题描述】:
下面是test.conf,我希望在行结束标记之前添加一个块,即在以</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>'
我在在线 python 编辑器 https://regex101.com 上检查了我的 test.conf 和正则表达式 ^[^#]*<\/VirtualHost>,它得到了正确的匹配行。
在线正则表达式测试器和调试器:PHP、PCRE、Python、Golang 和 JavaScript
在线正则表达式测试器,带有 PHP、PCRE、Python、Golang 和 JavaScript 突出显示的调试器。
正则表达式101.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>
您能否建议我的剧本有什么问题以及如何让它发挥作用?
【问题讨论】:
标签: regex insert ansible ansible-2.x