32.7. 後續安裝 Script

您也可以選擇增加在安裝完成後要在系統上執行的指令,這個部份必須位於 kickstart 檔案的最後(如〈節 32.4, “Kickstart 的選項”〉所述),而且必須以 %post 指令作為起始、以 %end 結束。如果您的 kickstart 檔案也包括了 %pre 一節,那麼 %pre%post 的順序就無關宏旨。
此部份在安裝額外的軟體,以及設定另一部名稱伺服器時相當好用。

注意

如果您以靜態的 IP 資訊(含有一部名稱伺服器)來設定網路,您可以在 %post 部份存取網路並且解析 IP 位址。如果您設定網路為使用 DHCP,當安裝程式執行 %post 部份時,/etc/resolv.conf 檔案還尚未完成。您可以存取網路,不過您無法解析 IP 位址,因此如果您正在使用 DHCP,您必須在 %post 部份指定 IP 位址。

注意

後續安裝的 script 會在 chroot 環境下執行;因此將無法執行如從安裝媒體複製 script 或 RPM 之類的工作項目。
--nochroot
讓您可以指定您希望在 chroot 環境之外執行的指令。
以下範例將會複製 /etc/resolv.conf 檔案到剛安裝好的檔案系統中。
%post --nochroot
cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
--interpreter /usr/bin/python
您可以指定一個不同的 script 語言,例如 Python。請以您所希望使用的 script 語言取代 /usr/bin/python
--log /path/to/logfile
紀錄後續安裝 script 的輸出。請注意,您必須使用日誌檔案的路徑,無論您是否使用 --nochroot 選項。比方說,若沒使用 --nochroot 選項的話:
%post --log=/root/ks-post.log
使用 --nochroot:
%post --nochroot --log=/mnt/sysimage/root/ks-post.log

32.7.1. 範例

32.7.1.1. 註冊,然後掛載 NFS 共享目錄

向 Red Hat 訂閱管理伺服器註冊系統(在此例子中,是本地的訂閱資產管理員伺服器):
%post --log=/root/ks-post.log
/usr/sbin/subscription-manager register --username=admin@example.com --password=secret --serverurl=sam-server.example.com --org="Admin Group" --environment="Dev"
%end
從一個 NFS 的共享資源上執行一個名為 runme 的 script:
mkdir /mnt/temp
mount -o nolock 10.10.0.2:/usr/new-machines /mnt/temp
openvt -s -w -- /mnt/temp/runme
umount /mnt/temp
Kickstart 模式中並支援 NFS 檔案鎖定,因此在掛載 NFS 時需要 -o nolock

32.7.1.2. 在 RHN Classic 中註冊系統

rhnreg_ks 指令是用來向 Red Hat Network 註冊的工具程式,用於非互動式環境中(例如 Kickstart 式的安裝)。所有資訊可以在命令列或標準輸入(stdin)中指定。您已建立了啟動金鑰,並想透過金鑰註冊系統時,請使用此指令。
關於使用 rhnreg_ks 來自動註冊系統的詳情,請參閱〈知識庫文章〉。

32.7.1.3. 以 Post-Install script 方式執行 subscription-manager

subscription-manager 命令列 script 會向 Red Hat 註冊管理伺服器(客戶入口網站訂閱管理、訂閱資產管理員、或 CloudForms System Engine)註冊系統。這 script 也可以用來自動指定或「連接」系統與最適用於此系統的訂閱服務。
向客戶入口網站註冊時,請使用 Red Hat Network 的登入帳號。向訂閱資產管理員或 CloudForms System Engine 註冊時,請使用本地管理員所建立的使用者帳號。
註冊指令可以搭配額外選項,設定系統偏好的服務等級,並限制更新檔與勘誤套用至指定的作業系統版本。
%post --log=/root/ks-post.log
/usr/sbin/subscription-manager register --username=admin@example.com --password=secret --serverurl=sam-server.example.com --org="Admin Group" --environment="Dev" --servicelevel=standard --release="6.6"
%end
欲知使用 subscription-manager 的詳情,請參閱〈知識庫文章