在 Solaris 10 上自動執行靜默軟體部署
本質上,我想問的問題與 Solaris 10 上的軟體包部署自動化有關。
具體來說,我在 tar 文件中有一組軟體組件,它們在主機環境中解壓縮和配置後作為守護程序執行。就像任何伺服器端軟體包一樣,我需要確保在提取和執行軟體之前滿足先決條件列表。例如:
- 檢查某些使用者是否存在,並且他們與一個或多個使用者組相關聯。如果沒有,則創建它們及其組關聯。
- 檢查目標應用程序文件夾是否存在,如果不存在,則使用在組裝包時定義的預配置路徑值創建它們。
- 檢查此類文件夾是否具有特定使用者的適當訪問控制級別和所有權。如果沒有,則設置它們。
- 檢查是否在 /etc/profile 中定義了一組環境變數,指向預定義的路徑位置,添加到通用 $PATH 環境變數中,最後導出到使用者的環境中。其他文件包括 /etc/services 和 /etc/system。
顯然,手動對許多盒子(有問題的目標)執行此操作可能會很慢且容易出錯。
我相信更好的選擇是以某種方式自動化這個過程。到目前為止,我已經考慮了以下選項,並出於某種原因放棄了它們。
1)傳統的shell腳本。我以前只解決過這些問題,而且我對它們沒有太多經驗。這些將是我最後的手段。
使用 pexpect 庫分析系統命令輸出的 Python 腳本。這是我最初的選擇,因為目標 Solaris 環境已經安裝了它。但是,我想確保我不會再次重新設計輪子:P。
Ant 或 Gradle 腳本。它們可能是一個選項,因為這些框還啟用了 java 1.5,並且文件集抽象非常有用。但是,在處理使用者和文件夾權限檢查/設置時,它們可能會有所不足。
在我看來,我不是第一個遇到這種情況的人,但我似乎沒有找到適合此目的的實用程序框架。如果有更好的方法來實現這一點,請告訴我。
我感謝您的時間和幫助。
您可能希望為此使用變更自動化。例如,Puppet、Chef、cfengine、bcm2 或其他。
就個人而言,過去三年我一直在 Solaris 上使用 Puppet,並且對這個決定非常滿意。我們使用它來管理系統管理的各個方面:使用者、文件、cron 作業、ZFS 文件系統、NFS 掛載、區域、服務(通過 SMF)等等。它非常有用。
Puppet SRV4 包提供程序可以工作,但它缺乏遠端拉取文件的能力(例如,通過 HTTP)。您可以通過編寫一個為您安裝軟體包的函式來解決此問題。如果軟體包在本地可用(通過 NFS),則提供程序應該可以正常工作。
除了 Solaris 10,我們還使用相同的 Puppet 儲存庫來管理我們的 Solaris Express 和 Debian Linux 系統。
我寫了這篇文章可能會有所幫助: http: //mirrorshades.net/post/196593566