
我希望設定一個 PPA 來向現場數百台 ubuntu 12.04 機器發送簡單的更改。簡單的更改意味著 bash 腳本更改和設定檔更新以及可能的其他軟體更新,包括可以透過 apt-get install 安裝的新軟體安裝。我想到的幾個問題是,
- PPA 可以用於發送腳本更新嗎?
- 我可以將客戶端計算機配置為僅從此 PPA 獲取更新並像無人值守升級一樣自動安裝它們嗎? (當然我知道這個選項是可能的,但需要一套很好的工具來實現這一點)。
我知道這是一個廣泛的問題,但高度讚賞沒有任何指示的答案。
答案1
我也想做同樣的事情,但我選擇使用透過reprepro
PPA 製作的私人儲存庫。我的所有客戶端都在同一個 LAN 上,所以對我來說更簡單。我認為無論您使用 PPA 還是私人儲存庫,這都是相當可行的。
- 修改現有的設定檔最好透過使用
dpkg
轉移來處理,IMO。config-package-dev
對此是一種祝福。這Debian 維基是有關這方面資訊的一個很好的起點。 - 透過打包添加腳本檔案或您自己的軟體並不是那麼困難。有很多包裝指南。再次,Debian 維基是一個很好的起點。製作二進位套件比介紹更簡單,腳本和設定檔就是這種情況。
- 從其他儲存庫新增軟體可以透過使它們成為軟體包的依賴項來完成。指定確切的版本或用途
apt
固定。 - 自訂儲存庫的無人值守升級已經處理:如何為任何儲存庫啟用靜默自動更新?我不知道伺服器有什麼方法可以將更新推送到客戶端。您可能需要考慮
puppet
(透過kick
ing)或類似的內容。或者您可以在伺服器上編寫一個腳本,使用 SSH 在客戶端上執行更新。或者有一個腳本可以在網路啟動時檢查更新。 - 最重要的是,確保您的套件維護腳本 (
preinst, postinst, prerm, postrm
) 是冪等的,並且刪除套件會撤銷所有變更。這些腳本可以做很多事情,但不會做任何影響apt
或dkpg
在其中的事情。最大限度地減少這些腳本中完成的工作。
就我而言,我使用一個套件來設定 LDAP 和 NTP、新增自訂全域vimrc
啟用通用選項、進行各種設定變更(例如啟用sudo
群組、禁止關閉)、新增非特權本機使用者/群組等。我們自行產生的CA 憑證和儲存庫簽署金鑰,並將它們標記為在postinst
腳本中受信任,並為我們的儲存庫新增一個條目sources.list.d
。
我還沒有將所有系統轉換為這個流程,所以我還不能評論它的有效性。