在任何發行版上完全自動化 Apache
我遇到的問題似乎對所有失真都是正確的,但讓我們假設我使用全預設
debian-stable
(伺服器),然後執行apt update -y
.在 Apache 中安裝、升級、重新啟動以及啟用或禁用模組都是與版本無關的操作,我發現這是一個問題:
- 安裝或升級 Apache 應該是
apt upgrade apache1
或apt upgrade apache2
. 它不能只是使用任何版本的“apt upgrade apache”,例如apt upgrade zip
orapt upgrade unzip
等等。- 要重新啟動 Apache
systemctl restart apache2
,必須啟用或禁用 Apache 模組,必須說a2enmod http2 deflate expires
或a2dismod http2 deflate expires
.我考慮過的解決這個問題的方法
我認為 Ansible 可能會通過使用 Ansible 的
apt
模組state=latest
選項轉錄舊的安裝命令來提供幫助,但Ansible Apache 文件不包含這些命令的非版本無關語法,並且也只安裝 Apache2,所以即使 Apache3 出現,我也會仍然必須手動將其從 2.4 升級到 3.x,即使我基本上使用 Ansible(如zip
和unzip
)不斷升級上述作業系統軟體的所有其餘部分。**1.**將 Ansible 與正則表達式結合(如 Ansible 的 apt
apache*
或systemctl restart apache*
)仍然不夠或至少“脆弱”。**2.**甚至將 Ansible 與
tasksel
with 和 regex 結合起來:- name: Install latest Apache apt: lamp-server^ state: latest - do stuff and restart Apache command: args: argv: - aenmod http2 deflate expires # Non version-agnostic http version; - systemctl restart apache*
可能還不夠,因為當 Apache 3 或 4 或 5 出現時(例如,現有的虛擬主機文件),它仍然需要我進行手動更改。
我的問題
我知道這可能是一個極端的願望,但有沒有一種方法可以順利安裝並完全持續升級 Apache(包括 release_upgrades 和虛擬主機文件等)?
也許一個公共維護和良好支持的 Ansible-Galaxy 角色是正確的方法。也許我應該選擇另一個網路伺服器 - 我不知道。
每條評論更新
它來自 Michael Hampton 的評論,這完全是 Debian 特定的,其他發行版可能有與版本無關的方式來安裝 Apache - 老實說,我考慮 ArchLinux 是因為它完全滾動發布作業系統升級模型。一個答案可能是一些發行版,它們可能足以滿足我在 Apache 中尋求的方法。
你是對的
“得到良好支持的 Ansible-Galaxy 角色是正確的方法”。
我正在尋找對Apache 角色的貢獻。您可能想建議其他角色。