ansible 替换模块未按预期工作

ansible 替换模块未按预期工作

我的 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>.*)'

https://docs.python.org/2/library/re.html

相关内容