Oracle 基礎雲 快速部署、監控、自動化策略 第 5 回
製作自己的裝配集
以製作 Oracle Linux 6.5 的裝配集為例,首先需要通過 OVM 管理界面建立一台虛擬機器,並定位出該虛擬機器的磁碟檔的全路徑。測試用的虛擬機器磁碟檔案盡可能小,以減少 I/O 等待時間(圖1)。同時由於該虛擬機器是半虛擬化的,不支援虛擬光碟機案安裝,所以要事先將 OL6.5 安裝光碟中的內容,通過 HTTP 服務分享出來(圖2)。


這台虛擬機器還需做一些優化,如禁用不需要的服務、關閉防火牆和 SELinux。虛擬機器啟動後有靜態位址,但仍然需要將網路卡設定檔 /etc/sysconfig/network-script/ifcfg-eth0 中的BOOTPROTO 改成 dhcp,ONBOOT 由 no 改成 yes。另外為了滿足 Agent 程式部署的需求,還需要追加安裝一些依賴套件,包括 gcc、glibc-devel.i686、libstdc++、libaio-devel,而且需要建立一個使用者 oracle,設置密碼。並以該使用者身份在其家目錄中建立一個 agent 資料夾,路徑為 /home/oracle/agent,最後將 EM 或者 OVM Manager 上的 /etc/sudoers 檔複製一份過來覆蓋本地同名檔案。完成上述操作之後,需要從 Oracle 官方的 add on 頻道中下載和安裝一些範本準備工具,包括以下幾個套裝軟體。
ovm-template-config.noarch 0:3.0-73.el6
ovm-template-config-authentication.noarch 0:3.0-73.el6
ovm-template-config-datetime.noarch 0:3.0-73.el6
ovm-template-config-firewall.noarch 0:3.0-73.el6
ovm-template-config-network.noarch 0:3.0-73.el6
ovm-template-config-selinux.noarch 0:3.0-73.el6
ovm-template-config-ssh.noarch 0:3.0-73.el6
ovm-template-config-system.noarch 0:3.0-73.el6
ovm-template-config-user.noarch 0:3.0-73.el6
libovmapi-3.0-6.el6.x86_64
ovmd-3.0-38.el6.x86_64
xenstoreprovider-3.0-11.el6.x86_64
python-simplejson.x86_64
如果虛擬機器可以存取互聯網,在 Oracle Linux 預設提供的軟體倉庫中就可以直接通過 yum install 下載並安裝,否則可能需要找個其他可上網的伺服器,並使用以下命令代為下載。
yum install –downloadonly 套件名稱 (ENTER)
這些套裝軟體提供了一整套系統初始化環境的配置工具,可將一個已經安裝在 OVM 環境上的 Oracle Linux 虛擬機器還原到最初始狀態。還原的內容包括認證、網路、時間日期、防火牆、SELinux、用戶、遠端登入等等。但是完全不需要一個個配置,而只需要啟動其中的 ovmd 服務,並執行 cleanup 操作即可。
chkconfig –level 345 ovmd on (ENTER)
/etc/init.d/ovmd start (ENTER)
ovmd -s cleanup (ENTER)
service ovmd enable-initial-config (ENTER)
執行完上述操作之後虛擬機器可以關機。這樣用於建立範本的虛擬機器磁碟檔就準備就緒。注意如果在整個環境中已經有 DHCP 服務並可為虛擬機器分配 IP 位址和主機名稱,就不需要執行 ovmd -s cleanup和service ovmd enable-initial-config。因為上述兩個命令執行完成之後,網路卡會在下次開機時自動被關閉。現在通過 OVM 界面上的設定檔檢視器,可以查看該虛擬機器的設定檔,從而進一步定位該虛擬機器的磁碟檔所在路徑和名稱(圖3)。

下面需要做的,就是找到一個 Oracle 官方的裝配集檔,來替換其中的磁碟檔。雖然這些裝配集檔的標準格式都是 .ova,但實際上他們也是通過 tar 命令來進行壓縮並重命名產生的。所以如果將 .ova 檔案改名為 .tgz,是可以用 tar 命令解開的(注意不要加 x 選項)。解開的壓縮包中包括了一個磁碟映像檔 .img,一個校驗和檔 .mf 以及一個 xml 格式的說明檔案 .ovf。我們要做的就是採用移花接木的方法,把剛才自建的虛擬機器磁碟檔,更名為 System.img,並替換原有的 System.img 檔,並根據該檔的大小,修改 ovf 檔中的資訊,最後壓縮磁碟檔,用 tar 命令打包並再更名為 .ova 檔案(圖4)。

先建立一個空的臨時目錄名為 assembly,將 Oracle 官方的裝配集檔複製一份過來,改名為 tar 檔案並用 tar 命令解開。
cd assembly (ENTER)
mv OVM_OL6U5_x86_64_PVM.ova OVM_OL6U5_x86_64_PVM.tar (ENTER)
tar -xf OVM_OL6U5_x86_64_PVM.tar (ENTER)
然後將虛擬機器磁碟檔複製到 assembly 目錄下,更名並覆蓋原有的 System.img 檔案。
mv 0004fb00001200007bed4ef8d96a2c37.img System.img (ENTER)
使用 gzip 命令將 System.img 檔案壓縮成gz格式,並重新改名為 System.img,原因是在 ovf 描述檔中對磁碟檔的格式有要求,必須為 gz 格式。
gzip System.img (ENTER)
mv System.img.gz System.img (ENTER)
計算出 System.img 檔案的 sha1 校驗,並取得 System.img 檔案的大小。
sha1sum System.img (ENTER)
ll System.img (ENTER)
將計算後取得的資訊替換掉 mf 檔中原有的校驗和。然後將通過 ll 命令取得的檔大小資訊,替換 .ovf 檔中原有的 System.img 檔案大小。例如下面這段設定檔中已經定義的 System.img 檔的大小以及 capacity,都需要以新的值替換掉。
<ovf:References>
5 <ovf:File ovf:compression=”gzip” ovf:href=”System.img” ovf:id=”system” ovf:size=”10737418240″/>
6 </ovf:References>
7 <ovf:DiskSection ovf:required=”true”>
8 <ovf:Info>Virtual disks</ovf:Info>
9 <ovf:Disk ovf:capacity=”10737418240″ ovf:diskId=”system” ovf:fileRef=”system” ovf:format=”Raw disk image”/>
10 </ovf:DiskSection>
其他的資訊如果沒有把握可以不用更改。完成之後保存退出,重新計算 ovf 檔的 sha1 校驗和。
sha1sum OVM_OL6U5_x86_64_PVM.ovf (ENTER)
將取得的磁碟檔和 ovf 檔的 SHA1 校驗值,更新到 OVM_OL6U5_x86_64_PVM.mf 中,替換原來設定檔的校驗值,替換完成的 mf 檔內容如下。
SHA1(OVM_OL6U5_x86_64_PVM.ovf)= 1cbece4de8375e2f05764d7074e391ed3c5aafef
SHA1(System.img)= 59e6d08c0e9ff98b2ff41c5be960ecf838d43875
最後將這三個檔重新將其打包為 tar 檔,並最後更名為 ova 檔。
tar -cf OVM_OL6U5_x86_64_PVM.tar OVM_OL6U5_x86_64_PVM.ovf OVM_OL6U5_x86_64_PVM.mf System.img (ENTER)
注意上述命令執行的時候,ovf 檔必須作為第一個參數,否則在軟體倉庫中加入該裝配集的時就會報錯。
mv OVM_OL6U5_x86_64_PVM.tar OVM_OL6U5_x86_64_PVM.ova (ENTER)