Ansible
Ansible 正則表達式在文件中添加塊是錯誤的
我想在下面顯示的 ansible 任務
<IfModule mod_ssl.c>
之間添加一個塊。我使用和。</IfModule>``/etc/apache2/mods-available/ssl.conf``blockinfile``insertbefore
不幸的是,該塊總是添加
</IfModule>
到文件底部之後。我想我的正則表達式是錯誤的。- name: Apache2 > update SSL conf become: yes blockinfile: path: /etc/apache2/mods-available/ssl.conf block: | # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains" Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure marker: "" insertbefore: '^<\/IfModule>' notify: - Restart apache2
我嘗試了以下正則表達式但沒有成功:
insertbefore: '/^<\/IfModule>/m' insertbefore: "<\/IfModule>" insertbefore: "</IfModule>" insertbefore: "</IfModule> " insertbefore: '^<\/IfModule>$' insertbefore: "</IfModule>" insertbefore: '(?m)^<\/IfModule>\\s?$' insertbefore: '^</IfModule>\s?$'
如果有人可以幫助我修復我的正則表達式,我將不勝感激。謝謝。
短篇小說:
獲勝者正則表達式是
insertbefore: "^</IfModule>\\s?$"
長話短說:
我有另一個想法來完成所有事情:
-首先,要
</IfModule>
在文件底部刪除一項任務-其次,要在文件底部添加塊的
一項任務-第三,要
</IfModule>
在底部添加一項任務文件的我寫了第一個新任務:
- name: Apache2 > Removes </IfModule> become: yes lineinfile: dest: /etc/apache2/mods-available/ssl.conf regexp: "^</IfModule>\\s?$" state: absent
我意識到我剛剛寫了正確的正則表達式……我的錯誤是逃避
/
。:-)
自行管理所有內容的正確任務:
- name: Apache2 > update SSL conf become: yes blockinfile: path: /etc/apache2/mods-available/ssl.conf block: | # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off ## HSTS (mod_headers is required) (15768000 seconds = 6 months) Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains" ## Transmit cookies over secure connection only Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure insertbefore: "^</IfModule>\\s?$" notify: - Restart apache2
Anx 的評論讓我放回了 blockinfile 標記以保持任務冪等。