Ansible
ansible replace 模組未按預期工作
我的 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>.*)'