使用 Puppet 在 Ubuntu 系統上自動安裝 Oracle JDK
” 在 Ubuntu 系統上,使用 Deb 套件安裝 Oracle JDK” 這篇文章中,山姆鍋分享如何手動安裝 Oracle JDK。雖然比每次都要從 Oracle 官網下載方便許多,但如果能夠加以自動化,自然是更加符合敏捷與精實的精神。本文山姆鍋就提供 Puppet 的腳本,讓未來有需要的話可以加快在不同機器上安裝的動作。
準備工作
本文假設您的 Ubuntu 系統為 Ubuntu 12.04 LTS x86_64,且已經安裝 Puppet 以及必要套件。您也可以像山姆鍋一樣,使用 Vagrant+VirtualBox 來進行實驗。
建立 Puppet 模組
建立一個 Puppet 模組,名稱為’oracle_jdk’,最終此模組的結構會成為:
1 | -- oracle_jdk/manifests/init.pp |
init.pp 檔案內容
1 | class oracle_jdk::oracle_jdk($version='present') { |
在 Vargrant 提供的虛擬機中,第一次的’apt_update’如果沒有執行,'python-software-properties’套件就無法正確安裝。'apt_update2’是在安裝 PPA 套件來源後更新列表,讓後續的’oracle-java7-installer’可以安裝成功。其中最讓人不理解的是’set-licence-selected’跟’set-licence-seen’可以消除 Oracle JDK 安裝過程需要人確認的動作,我想這跟 APT/Deb 套件工具的運作有關,目前就當作是黑箱作業。
java.sh 檔案內容
1 | export JAVA_HOME=/usr/lib/jvm/java-7-oracle |
這個檔案的目的是要設定系統環境變數’JAVA_HOME’,由於有些工具會使用這個變數來找到 Java 安裝的路徑,保險起見加入這個檔案。
引用 oracle_jdk 模組
在您的 Puppet 組態檔案中,例如:’/etc/puppet/manifests/site.pp’,加入下列片段:
1 | class { 'oracle_jdk::oracle_jdk': version => '7u40-0~webupd8~0', } |
其中,'7u40-0webupd80’可以換成您指定的版本。如果要安裝最新版本,則使用:
1 | class { 'oracle_jdk::oracle_jdk': } |
參考來源
小結
在開發、測試或部署的環境,套件都會使用特定的版本以確保整個環境組態盡可能相同。另位請注意:本文提供的腳本還有不少改進的空間,請自行斟酌使用。