Ansible

ansible replace 模組未按預期工作

  • November 27, 2018

我的 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'

在這裡,我的虛擬主機結束線正在取消註釋,但開始線沒有..你能在這裡指導我嗎…..

  • 是正則表達式中的特殊字元,它是萬用字元。

將第一個任務替換為以下內容(我只修改了 regexp 參數):

  - name: uncomment virtualhost starting line
    replace:
      path: /opt/conf/httpd.conf
      regexp: '^#(.*<VirtualHost \*:443>.*)'
      replace: '\1'

嘗試逃避*in *:443。否則,它將被解釋為正則表達式的控製字元:

regexp: '^#(.*<VirtualHost \*:443>.*)'

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

引用自:https://serverfault.com/questions/941848