我的 ansible play book 正在帮助我取消注释 .conf 文件中的某些行,但是对于某一特定行它失败了并且没有做出任何更改。
下面是我的.conf 文件部分。
#<VirtualHost *:443>
#SSLEnable
#Header always set Strict-Transport-Security "max-age=31536000 includeSubDomains; preload"
#</VirtualHost>
预期输出
<VirtualHost *:443>
SSLEnable
#Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</VirtualHost>
以下是我的玩法
- name: uncomment virtualhost starting line
replace:
path: /opt/conf/httpd.conf
regexp: '^#(.*<VirtualHost *:443>.*)'
replace: '\1'
- name: uncomment virtualhost end line
replace:
path: /opt/conf/httpd.conf
regexp: '^#(.*</VirtualHost>.*)'
replace: '\1'
这里我的虚拟主机结束行被取消注释,但起始行没有。你能指导我吗.....
答案1
* 是正则表达式中的特殊字符,它是一个通配符。
将第一个任务替换为以下内容(我只修改了 regexp 参数):
- name: uncomment virtualhost starting line
replace:
path: /opt/conf/httpd.conf
regexp: '^#(.*<VirtualHost \*:443>.*)'
replace: '\1'
答案2
尝试对*
中的 进行转义*:443
。否则,它将被解释为正则表达式的控制字符:
regexp: '^#(.*<VirtualHost \*:443>.*)'