Red Hat Training
A Red Hat training course is available for Red Hat Satellite
入門指南
透過 Red Hat Network 衛星伺服器進行佈建和建置
版 2
Red Hat Engineering Content Services
摘要
章 1. 簡介
定義
- Kickstart
- 在少量或甚至是無使用者互動的情況下,完成安裝 Red Hat 系統的自動化程序。技術上來講,kickstart 亦代表 Anaconda 安裝程式中的一種機制,它能允許您為安裝程式提供機器的精簡內容詳述與配置,使其之後能套用。此種精簡系統定義亦稱為 Kickstart 設定檔。
- Kickstart 設定檔
- Kickstart 檔案是個指定了 kickstart 一部機器時所需的所有選項的文字檔案,它包含了磁碟分割資訊、網路配置,以及需安裝的套件。在 RHN 衛星伺服器中,Kickstart 設定檔為傳統 Anaconda kickstart 定義的超集,因衛星伺服器的實做能增強 Cobbler 的 kickstart。Kickstart 設定檔會假設 Kickstart 安裝樹已存在。
- Kickstart 安裝樹
- 要 kickstart 一部機器所需的軟體和支援檔案。這一般亦稱為「安裝樹」。這一般會是來自於特定發行版安裝媒介中的目錄結構和檔案。根據 Cobbler 的概觀,Kickstart 安裝樹為發行版的一部分。
- PXE(Preboot eXecution Environment)
- 一個可在開機時,在目標機器本身無預配置的情況下,kickstart 裸機系統(一般為實體或真實機器)的低階層協定。PXE 仰賴 DHCP 伺服器來通知客戶端有關於 bootstrap 伺服器的相關資訊(用於此文件乃 Satellite 5.3.0 或更新版本)。目標機器的軔體必須支援 PXE,才可使用它。您可在無 PXE 的情況下,使用衛星伺服器的虛擬化和重新安裝設施,儘管 PXE 對於啟動新實體機器,或對於重新安裝未向衛星伺服器註冊的機器來說,非常的有幫助。
佈建藍本
- 新安裝
- 佈建從未安裝任何作業系統的系統(亦稱為裸機安裝)。
- 虛擬安裝
- 衛星伺服器支援 KVM、Xen 完整虛擬化客座端,以及 Xen 半虛擬化客座端。
- 重新佈建
- 實體與客座端系統皆可重新佈建,不過它們必須向相同的衛星伺服器事例註冊。請參閱 節 2.5.2, “重新佈建”。
章 2. Kickstart
2.1. 必要的套件
rhn-tools Red Hat Network(RHN)頻道取得:
koanspacewalk-koan
rhn-tools 頻道,以由您的自訂頻道存取這些套件。
kernel 與 initrd 檔案位於 kickstart 安裝樹中的特定位置。然而,這些位置會根據不同架構而異。下列表格詳述了不同的位置:
表格 2.1. 架構所需的發行版檔案
| 架構 | kernel | 初始 RAM Disk 映像檔 |
|---|---|---|
| IBM System z | TREE_PATH/images/kernel.img | TREE_PATH/images/initrd.img |
| PowerPC | TREE_PATH/ppc/ppc64/vmlinuz | TREE_PATH/images/pxeboot/vmlinux |
| 所有其它架構 | TREE_PATH/images/pxeboot/vmlinuz | TREE_PATH/images/pxeboot/initrd.img |
2.2. Kickstart 安裝樹
過程 2.1. 自動式安裝 Kickstart 安裝樹
satellite-sync 進行正常頻道同步程序的一部分發生。
- 選擇您希望您的 kickstart 基於哪個發行版上,並找出該發行版的基礎頻道,以及其相應的 RHN Tools 頻道。比方說,若您希望在 x86 架構上使用 Red Hat Enterprise Linux 5,您將需要
rhel-i386-server-5頻道以及其相應的 RHN Tools 頻道rhn-tools-rhel-i386-server-5。 - 若您使用的是已連線的衛星伺服器,請透過
satellite-sync直接與 Red Hat 伺服器同步您的衛星伺服器。若您的衛星伺服器未連線的話,您將需要由 Red Hat 伺服器取得離線頻道傾印,並與這些傾印進行同步。 - 同步化頻道將會自動地建立與該發行版相應的 kickstart 安裝樹。
過程 2.2. 手動式安裝 Kickstart 安裝樹
- 將安裝 ISO 複製至您的衛星伺服器上,並將它掛載至
/mnt/iso - 將 ISO 的內容複製至自訂的位置。建議您在
/var/satellite中,為您所有的發行版建立一個目錄。比方說,您能將一個 RHEL beta 發行版的內容複製至/var/satellite/custom-distro/rhel-i386-server-5.3-beta/ - 透過 RHN Satellite 網站介面建立自訂的軟體頻道。透過「頻道 → 管理軟體頻道 → 建立新頻道」來建立一個含有適當名稱與標籤的父頻道。對於以上所使用的範例,您可使用「rhel-5.3-beta」這個標籤。
- 透過
rhnpush指令,來將軟體套件由安裝樹位置推送至新建的軟體頻道中。rhnpush --server=http://localhost/APP -c 'rhel-5.3-beta' \ -d /var/satellite/custom-distro/rhel-i386-server-5.3-beta/Server/
安裝樹中的子目錄可能會根據您的發行版而異。 - 當軟體套件推送後,您可透過使用
rm指令來將它們由安裝樹路徑中刪除。套件依然會存放在衛星伺服器上的頻道中,並且已不再需使用於安裝樹中。rm /var/satellite/custom-distro/rhel-i386-server-5.3-beta/Server/*.rpm
注意
您可選擇是否要將軟體套件留在 kickstart 安裝樹中。這能讓您之後透過yum指令隨時安裝它們。 - 使用 RHN Satellite 網站介面來建立發行版。透過「系統 → Kickstart → 發行版 → 建立新發行版」來建立發行版,並使用適當的標籤以及完整的安裝樹路徑(例如
/var/satellite/custom-distro/rhel-i386-server-5.3-beta/。請選擇您先前建立的基礎頻道,以及正確的安裝程式產生器(例如「Red Hat Enterprise Linux 5」)。若要完成建立程序,請選擇「建立 Kickstart 發行版」。 - 若要在多重環境與系統之間維護相同的軟體,您可將既有的 RHEL 基礎頻道中的 RHN Tools 子頻道複製為新建基礎頻道的子頻道。您可藉由下列步驟複製子頻道:
- 請在 Satellite 網站介面上點選「頻道 → 管理軟體頻道 → 複製頻道」
- 由「從...複製:」下拉式選單選取您希望複製的子頻道,並選擇複製狀態。
- 點選「建立頻道」。
- 填入必要資訊並選擇被複製的子頻道必須位於哪個父頻道之下。
- 點選「建立頻道」。

圖形 2.1. 建立 Kickstart 發行版
2.3. Kickstart 設定檔
過程 2.3. 以精靈建立 Kickstart 設定檔
- 點選系統 → Kickstart → 建立新 Kickstart 設定檔
- 提供一項適當的「標籤」、選擇欲使用的「基礎頻道」和「Kickstart 安裝樹」
- 選擇 kickstart 設定檔的下載位置。若您正在使用自訂的發行版,請將其安裝樹的位置輸入為 URI(支援 HTTP 和 FTP),否則,請使用預設的選項。請按下「下一步」,以繼續進行。
- 請輸入 root 密碼,並按下「完成」以完成設定檔建立程序。
- 至此,完整的 kickstart 設定檔將會被建立。您可透過點選「Kickstart 檔案」來檢視設定檔。
過程 2.4. 以 Raw 方式建立 Kickstart 設定檔
- 選擇系統 → Kickstart → 上載新的 Kickstart 檔案
- 提供一項適當的「標籤」、並選擇欲使用的「發行版」
- 選擇您想要的「虛擬化類型」。欲取得更多有關於虛擬化類型的相關資訊,請參閱 虛擬化類型。
- 若您擁有既有的 kickstart 設定檔,請上載該檔案。否則,請將 kickstart 設定檔寫入「檔案內容」文字方塊中。您可使用此原生 kickstart 範本,來作為起始點:
install text network --bootproto dhcp url --url http://$http_server/ks/dist/org/1/ks-rhel-i386-server-5 lang en_US keyboard us zerombr clearpart --all part / --fstype=ext3 --size=200 --grow part /boot --fstype=ext3 --size=200 part swap --size=1000 --maxsize=2000 bootloader --location mbr timezone America/New_York auth --enablemd5 --enableshadow rootpw --iscrypted $1$X/CrCfCE$x0veQO88TCm2VprcMkH.d0 selinux --permissive reboot firewall --disabled skipx key --skip %packages @ Base %post $SNIPPET('redhat_register') - 因為 RHN Satellite 在 kickstart 中不會將指定的發行版作為
url來處理,因此您在您的設定檔中,必須如下包含url --url選項:url --url http://satellite.example.com/ks/dist/org/1/my_distro
將my_distro替換為發行版標籤,並將1替換為您的 org id。 - 原生 kickstart 設定檔使用
$http_server,而非衛星伺服器的主機名稱。這會在 kickstart 範本轉換時,自動地填入。 redhat_register程式碼片段會被用來處理註冊。

圖形 2.2. 原生 Kickstart
所有 Kickstart 設定檔皆有與其相聯的虛擬化類型。此表格顯示了不同的選項:
表格 2.2. 虛擬化類型
| 類型 | 描述 | 使用方法 |
|---|---|---|
| 「無」 | 無虛擬化 | 使用此類型來進行一般的佈建、裸機安裝和非 Xen 或 KVM 的虛擬化安裝(例如 VMware 或是 Virtage) |
| 「KVM 虛擬化客座端 | KVM 客座端 | 使用此類型來佈建 KVM 客座端 |
| Xen 完整虛擬化客座端 | Xen 客座端 | 使用此類型來佈建 Xen 客座端
注意
此選項需要主機上擁有硬體支援,不過在客座端上無須擁有經過修改的作業系統。
|
| 「Xen 半虛擬化客座端」 | Xen 客座端 | 使用此類型來以 Xen 半虛擬化佈建虛擬客座端。半虛擬化為最快速的虛擬化模式。它在系統 CPU 上需要擁有 PAE 旗標,以及經修改的作業系統。Red Hat Enterprise Linux 5 支援在半虛擬化環境下的客座端。 |
| 「Xen 虛擬化主機」 | Xen 主機 | 佈建 Xen 半虛擬化的虛擬主機時,請使用此類型。若硬體相容,Xen 半虛擬化客座端和主機便受到支援。 |
%packages 部份中,必須包含 kernel-xen 套件。
%packages 部份中,必須包含 qemu 套件。
注意
2.4. 範本化
for 迴圈以及 if 表示式的流程控制表示式。這是透過使用 cheetah 工具來達成的。
- 在進行多項 kickstart 之間,重新使用 kickstart 的某特定部份,比方說磁碟分割的部份。
- 在進行多項 kickstart 時,一致性地進行某些
%post動作。 - 在多種伺服器角色(例如 DNS 伺服器、代理伺服器,以及網站伺服器)之間,定義程式碼片段。比方說,網站伺服器可能會定義下列程式碼片段:
httpd mod_ssl mod_python
在您 kickstart 檔案的%package部份中建立網站伺服器設定檔,包括網站伺服器程式碼片段。若您希望設定檔可使用於網站伺服器與代理伺服器,您可將這兩者的程式碼片段包含在套件部份中。若您希望新增其它套件至網站伺服器的程式碼片段中(比方說mod_perl),您可透過更新程式碼片段,所有使用該程式碼片段的設定檔也都會被動態式地更新。
範本化能讓您定義使用於 kickstart 檔案中的變數。變數可設置於某層級,並置換其下方的層級。因此,若變數定義於系統層級,它將會置換定義於設定檔或 kickstart 安裝樹層級的相同變數。相同地,若變數定義於設定檔層級中,它將會置換定義於 kickstart 安裝樹層級中的相同變數。
注意
程式碼片段會重新使用多個 kickstart 範本之間的程式碼。它們可散佈於多個行列上,並包含變數。它們可藉由使用 $SNIPPET('snippet_name') 文字,包含在 kickstart 設定檔中。您可為特定套件清單、特定 %post script,或是任何一般會包含在 kickstart 檔案中的文字製作程式碼片段。
/var/lib/cobbler/snippets/ 中。/var/lib/rhn/kickstarts/wizard/ 中有個精靈類型的 kickstart 範本,它詳述了各種不同的預設程式碼片段,以及其使用方法。
redhat_register 程式碼片段是個使用來將機器註冊至 RHN Satellite 伺服器作為 kickstart 一部分的預設程式碼片段。它使用了一個名為 redhat_management_key 的變數來註冊機器。若要使用此程式碼片段,請在系統、設定檔,或發行版層級中設置 redhat_management_key 變數,並將 $SNIPPET('redhat_register') 附加至 kickstart 的 %post 部份中。所有 RHN Satellite 伺服器所產生的精靈類型 kickstart 的 %post 部份中,皆會包含此程式碼片段。
/var/lib/rhn/kickstarts/snippets/ 目錄中。RHN Satellite 會將不同組織的程式碼片段存放在不同的目錄中,因此自訂的程式碼片段,會以類似以下的檔案名稱儲存,1 代表組織 ID:
$SNIPPET('spacewalk/1/snippet_name')
注意

圖形 2.3. Kickstart 程式碼片段
$ 和 # 字元會使用於進行範本化時,以指定變數和控制流程。若您需要在 script 中,為了其它用途使用這些字元,它們將需要被跳脫,如此一來它們才不會被視為是變數。這能以多種方法完成:
- 在所有您希望在進行範本化時忽略的
$或#的前方,放置一個反斜線(\)。 - 將整個 script 包含在
#raw ... #end raw中所有透過精靈方式的 kickstart 所建立的%pre和%postscript,就預設值皆會包含#raw...#end raw。這能在編輯%post或%prescript 時,透過使用「範本」核取方塊來進行切換。 - 在程式碼片段的第一行中包含
#errorCatcher Echo。
範例 2.1. 跳脫範本中的特殊字元
%post 部份中:
%post echo $foo > /tmp/foo.txt
$,範本化引擎將會嘗試尋找名為 $foo 的變數。這項動作將會失敗,因為變數中 foo 並不存在。
$ 最簡易的方式,就是透過使用反斜線字元(\):
%post echo \$foo > /tmp/foo.txt
\$foo 被轉換為 $foo。
#raw ... #end raw 中:
%post #raw echo $foo > /tmp/foo.txt #end raw
#errorCatcher Echo 包含在 kickstart 範本的第一行中。這會指示範本化引擎忽略任何不存在的變數,並將文字照樣地印出。此選項已包含在精靈形式的 kickstart 中,並且可包含在您手動式建立的原生 kickstart 中。
2.5. Kickstart 一部機器
2.5.1. 由一部裸機進行 kickstart
- 標準作業系統安裝媒介
- PXE 開機
過程 2.5. 透過安裝媒介開機
- 將安裝媒介插入機器中。媒介必須符合您欲使用的 kickstart。比方說,若 kickstart 已配置為使用
ks-rhel-i386-server-5-u2kickstart 安裝樹,請使用 Red Hat Enterprise Linux 5.2 i386 安裝媒介。 - 當您被提供開機提示時,請藉由下列指令來啟動 kickstart:
linux ks=http://satellite.example.com/path/to/kickstart
- 系統將會開機、下載 kickstart,並進行自動安裝。
過程 2.6. PXE 開機
重要
若您在網路上的另一部系統上建置了 DHCP 伺服器,您將需要 DHCP 伺服器的管理權限,才可編輯 DHCP 配置檔案。若您的機器位於多重網路上,您需要確認您的所有機器皆能連至 DHCP 伺服器。這可透過 multi-homing 您的 DHCP 伺服器(使用真實或切割過的 VLAN),和配置任何路由器或 switch,來在網路界線之間傳送 DHCP。請透過為您希望由 RHN Satellite 管理的系統設置next-server位址來配置您的 DHCP 伺服器,以使其指向 PXE 伺服器。若要在進行安裝程序時使用主機名稱,請藉由包含下列行列,以將 DHCP 配置為指向區域和 IP 位址:option domain-name DOMAIN_NAME; option domain-name-servers IP_ADDRESS1, IP_ADDRESS2;
- 請在 DHCP 伺服器上,切換為 root 使用者並開啟
/etc/dhcpd.conf檔案。請附加新的 class 與選項以進行 PXE 開機安裝:allow booting; allow bootp; class "PXE" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.2.1; filename "pxelinux.0"; }此 class 將會進行下列動作:- 以
bootp協定啟用網路開機 - 請建立一個名為
PXE的 class。若系統被配置為以 PXE 啟動為優先,它會將自己辨識為PXEClient。 - DHCP 伺服器會將系統指向 IP 位址為 192.168.2.1 的 Cobbler 伺服器。
- DHCP 伺服器會參照位於
/var/lib/tftpboot/pxelinux.0的開機映像檔。
- 配置 Xinetd。Xinetd 是個會管理一套服務的 daemon(包括 TFTP,也就是使用來將開機映像檔傳送至 PXE 客戶端的 FTP 伺服器)。透過
chkconfig指令啟用 Xinetd:chkconfig xinetd on
此外,請切換為 root 使用者,並開啟/etc/xinetd.d/tftp檔案。請找出disable = yes一行,並將它更改為disable = no。 - 啟用 Xinetd 服務,如此一來 TFTP 便能開始服務
pxelinux.0開機映像檔:chkconfig --level 345 xinetd on /sbin/service xinetd start
chkconfig指令會將xinetd服務啟用於所有使用者 runlevel,而/sbin/service指令則會即刻啟用xinetd。
2.5.2. 重新佈建
範例 2.2. 配置 Kernel 選項和 Post Kernel 選項
vnc vncpassword=PASSWORD 包含在 Kernel Options 一行中。
noapic kernel 選項開機,請將 noapic 附加至 Post Kernel Options 一行。
過程 2.7. 檔案保留
注意
- 請至系統 → Kickstart → 檔案保留 → 新建檔案保留清單,並建立一列需要保留的檔案之清單。
- 請至系統 → Kickstart → 設定檔,並透過選擇想要的設定檔,來使檔案保留清單與 kickstart 相聯。
- 請至系統詳細資料 → 檔案保留,並選擇檔案保留清單。
2.5.3. 虛擬客座端佈建
- KVM 虛擬化客座端
- Xen 完整虛擬化客座端
- Xen 半虛擬化客座端
過程 2.8. 佈建虛擬化客座端
- 檢查主機系統是否擁有「虛擬化」或[「虛擬化平台」系統權利。
- 請在「系統」網頁上,選擇適當的虛擬主機,然後選擇 虛擬化 → 佈建。請選擇適當的 kickstart 設定檔,並輸入一組客座端名稱。
- 若您希望配置額外的參數,例如客座端記憶體和 CPU 使用量,請點選「進階配置」按鈕。之後您便可進行以下的配置:
- 網路:靜態或 DHCP
- Kernel 選項
- 套件設定檔同步:當 kickstart 完成後,系統將會與另一部系統,或已儲存的設定檔同步其套件設定檔
- 記憶體分配:RAM(預設值為 512MB)
- 虛擬磁碟大小
- 虛擬 CPU(預設值為 1)
- 虛擬橋接:進行安裝用的網路作業橋接。Xen 的佈建預設值為
xenbr0,而 KVM 則為virbr0。注意
virbr0網路作業橋接不允許外部網路。若您需使用外部的網路,請配置主機,以建立實際的橋接來代替。然而,xenbr0乃實際的橋接,建議您盡可能使用它。 - 虛擬儲存裝置路徑:儲存客座端磁碟資訊的檔案、LVM 邏輯卷冊、目錄,或區塊裝置的路徑(例如
/dev/sdb、/dev/LogVol00/mydisk、VolGroup00或/var/lib/xen/images/myDisk)。
- 點選「排程 Kickstart 並結束」
2.5.4. 透過 RHN 代理伺服器進行佈建
- 當佈建虛擬客座端或為一部系統進行重新佈建時,請由「選擇衛星伺服器代理伺服器」下拉式方塊中選擇您要的代理伺服器。
- 當要進行裸機安裝時,請將 RHN Satellite 的完整網域名稱(FQDN)取代為代理伺服器的 FQDN。比方說,若 kickstart 檔案的 URL 為:
http://satellite.example.com/ks/cfg/org/1/label/myprofile
然後透過代理伺服器進行 kickstart,請使用:http://proxy.example.com/ks/cfg/org/1/label/myprofile
章 3. 多重衛星伺服器
ISS 需求
- 二或更多部 RHN Satellite 伺服器
- 至少一個 RHN Satellite,並且至少填入了一個頻道
- 為了安全的連線,所有的 slave RHN Satellite 皆需要 RHN Satellite SSL 憑證
3.1. Inter-Satellite Synchronization(ISS)
過程 3.1. 配置 Master 伺服器
- 啟用 Inter-Satellite 同步(ISS)功能。請開啟
/etc/rhn/rhn.conf檔案,並新增或修改為下列一行:disable_iss=0
- 請在
/etc/rhn/rhn.conf檔案中,找出allowed_iss_slaves=一行。就預設值,沒有 slave 衛星伺服器會被指定進行同步。請輸入各個 slave 衛星伺服器的主機名稱,並以逗號進行區隔:allowed_iss_slaves=slave1.satellite.example.org,slave2.satellite.example.org
- 儲存配置檔案,並重新啟用
httpd服務:service httpd restart
過程 3.2. 配置 Slave 伺服器
- 若要安全地將內容傳輸至 slave 伺服器,您需要來自於 master 伺服器的
ORG-SSL。您可透過 HTTP 由任何衛星伺服器的/pub/目錄下載憑證。該檔案名為RHN-ORG-TRUSTED-SSL-CERT,不過可重新命名並放置在 slave 衛星伺服器的任何本機檔案系統上,例如/usr/share/rhn/目錄中。 - 請以下列指令檢視可由 master 伺服器同步的頻道清單。這將會顯示正式的 Red Hat 頻道,以及任何可用的自訂頻道:
satellite-sync --iss-parent=master.satellite.example.com --ca-cert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT --list-channels
將 master.satellite.example.com 取代為 master 伺服器的主機名稱。
過程 3.3. 執行一項 Inter-Satellite Synchronization
- 請在 slave 伺服器上,使用您偏好的文字編輯器開啟
/etc/rhn/rhn.conf檔案,並新增 master 伺服器主機名稱和 SSL 憑證檔案路徑詳情:iss_parent = master.satellite.example.com iss_ca_chain = /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT
- 藉由執行
satellite-sync指令來進行同步:satellite-sync -c your-channel
注意
與satellite-sync指令一起提供的指令列選項會置換/etc/rhn/rhn.conf檔案中的所有自訂設定。
3.2. 組織同步化
- 若來源內容屬於
NULL組織(也就是任何 Red Hat 內容),它便會預設為NULL組織,儘管已指定了一個目的地組織。這可確保指定的內容總是會在此具有權限的NULL組織中。 - 若在指令列上指定了組織,內容便會由該組織中匯入。
- 若沒有指定組織的話,預設值便會是 organization 1。
orgid)被使用來在衛星伺服器之間,進行同步的範例情況:
範例 3.1. 將內容由 master 匯入至 slave 衛星伺服器
satellite-sync --parent-sat=master.satellite.example.com -c channel-name --orgid=2
範例 3.2. 由一個組織的匯出傾印匯入內容
$ satellite-sync -m /dump -c channel-name --orgid=2
範例 3.3. 由 Red Hat Network Hosted 匯入內容
$ satellite-sync -c channel-name
3.3. ISS 使用案例
範例 3.4. 暫存衛星伺服器


- 執行
satellite-sync指令以和「rhn_parent」同步資料(一般為 Red Hat Network Hosted):satellite-sync -c your-channel
- 請執行下列指令以從 staging 伺服器同步資料:
satellite-sync --iss-parent=staging-satellite.example.com -c custom-channel
範例 3.5. 已同步的 Slave

範例 3.6. Slave 自訂內容

範例 3.7. 雙向同步

- 確認各衛星伺服器皆能共享 SSL 憑證。
- 請在第一部衛星伺服器上,開啟
/etc/rhn/rhn.conf檔案,並將iss_parent選項設為指向第二部衛星伺服器的主機名稱。 - 請在第二部衛星伺服器上開啟
/etc/rhn/rhn.conf檔案,並將iss_parent選項設為指向第一部衛星伺服器的主機名稱。
章 4. 進階 API Method 與指令
4.1. XML-RPC API
表格 4.1. XML-RPC 方式
| XML-RPC Namespace | 使用方法 |
|---|---|
kickstart | 建立、匯入,和刪除 kickstart 設定檔。亦可用來列出可用的 kickstart 安裝樹和設定檔。 |
kickstart.tree | 建立、重新命名、更新和刪除 kickstart 安裝樹。 |
kickstart.filepreservation | 列出、建立,和刪除能與 kickstart 設定檔相聯的檔案保留清單。一旦建立了檔案保留清單後,它便能透過調用 kickstart.profile.system.add_file_preservations API method 來與 kickstart 設定檔相聯。 |
kickstart.keys | 列出、建立,和移除能夠與不同 kickstart 設定檔相聯的啟用金鑰(GPG/SSL)。
注意
一旦建立了加密金鑰後,它便能透過調用 kickstart.profile.system.add_keys API method,來與 kickstart 設定檔相聯。
|
kickstart.profile | 操作 IP 範圍、更改 kickstart 安裝樹和子頻道、下載與設定檔相聯的 kickstart 檔案、操作進階選項、操作自訂選項,和新增與某 kickstart 設定檔相聯的 pre/post script。 |
kickstart.profile.keys | 列出、新增(相聯),和移除(取消關聯)與 kickstart 設定檔相聯的啟用金鑰。 |
kickstart.profile.software | 操作與 kickstart 設定檔相聯的套件清單。 |
kickstart.profile.system | 管理檔案保留、管理加密金鑰、啟用/停用配置管理以及遠端指令、設定磁碟分割配置,以及設定與特定 kickstart 設定檔相聯的地區資訊。 |
system.provision_systemsystem.provision_virtual_guest
https://satellite.example.com/rpc/api 的 API 文件。
4.2. Cobbler
表格 4.2. Cobbler 指令
| 指令 | 使用方法 |
|---|---|
cobbler profile list | 在 RHN Satellite 主機上執行這項指令,以顯示設定檔清單 |
cobbler distro list | 顯示一列 kickstart 安裝樹、kernel、RAM disk 以及其它選項的清單 |
cobbler system list | 顯示一列系統紀錄清單(當 kickstart 被排程時所建立的) |
cobbler profile report --name=profile-name or cobbler system report --name=system-name | 顯示特定物件的更詳細輸出 |
cobbler profile edit --name=profile-name --virt-ram=1024 | 編輯各種參數。此範例會分配 1GB 的記憶體給各個設定檔的虛擬化安裝。 |
cobbler system edit --name=system-name --netboot-enabled=1 | 強制系統下次重新啟動時重新安裝 |
cobbler system edit --name=system-name --profile=new-profile-name --netboot-enabled=1 | 將系統指定給新的設定檔,以進行重新安裝 |
cobbler system find --profile=profile-name | 列出所有指定給特定設定檔的系統 |
cobbler system find --profile="abc" | xargs -n1 --replace cobbler system edit \ --name={} --profile="def" --netboot-enabled=1 | 將所有目前設為 abc 設定檔的系統全部設為 def 設定檔,並在它們下次重新啟動時,重新安裝它們: |
cobbler profile edit --name=profilename --kopts="variablename=3" --in-place | 在不修改其它任何變數的情況下,在設定檔上設定一個額外的範本化變數: |
cobbler system edit --name=systemname --kopts="selinux=disabled asdf=jkl" | 將各種變數指定至系統紀錄,並忽略任何已設置的較舊變數 |
cobbler profile find --name="*webserver*" | xargs -n1 --replace cobbler profile edit --name={} --profile="RHEL5-i386" | 將所有任何包含了 webserver 的新設定檔設為字串,以使用名為 RHEL5-i386 的設定檔 |
/etc/cobbler/settings 中只有少數 Cobbler 設定應直接更改。pxe_just_once 就是其中之一(描述於 過程 4.3, “配置 Cobbler 以使用 PXE” 中)。您亦可更改 server 選項,以反映 RHN Satellite 伺服器的位址或主機名稱。
/etc/cobbler/settings 之後,請執行下列指令以套用變更:
/sbin/service cobblerd restart cobbler sync
重要
/etc/cobbler/settings 中任何其它設定。RHN Satellite 需要此檔案保持為 RHN Satellite 安裝程式所決定的特定配置。相同地,負責控制認證來源的 /etc/cobbler/modules.conf 檔案,應維持 RHN Satellite 安裝程式建立它時的狀態。特別是,認證模組選擇必須保留為 authn_spacewalk,並且不可更改。
過程 4.1. 為 Cobbler 配置 SELinux
- 若要啟用 SELinux 以支援 Cobbler,您必須透過下列指令來設置 SELinux 布林值,以允許 HTTPD 網站服務元件:
setsebool -P httpd_can_network_connect true
-P切換選項是必要的,因為它能在系統重新啟動的情況下,維持啟用 HTTPD 連線的一致性。 - 透過在 Cobbler 伺服器上使用下列指令,來為 TFTP 設置 SELinux 檔案 context 規則,以處理開機映像檔:
semanage fcontext -a -t public_content_t "var/lib/tftpboot/.*"
- 您必須配置 IPTables,以允許 Cobbler 伺服器上連入和連出的網路流量。若您擁有既有的防火牆規則集,請新增下列規則,以如下開啟 Cobbler 相關的連接埠:TFTP:
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 69 -j ACCEPT /sbin/iptables -A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
HTTPD:/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
Cobbler:/sbin/iptables -A INPUT -m state --state NEW -m tcp -p udp --dport 25150 -j ACCEPT
Koan:/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 25151 -j ACCEPT
- 儲存防火牆配置:
/sbin/iptables-save
- 請透過執行下列指令,確認所有配置檔案皆已同步:
cobbler sync
- 啟動衛星伺服器:
/usr/sbin/rhn-satellite start
警告
請勿啟用或停用衛星伺服器的獨立cobblerd服務,因為這麼作可能會造成錯誤與其它問題。請總是使用/usr/sbin/rhn-satellite來啟用或停用 RHN Satellite。
過程 4.2. 配置 Cobbler 系統紀錄
- 請至各系統的 系統詳細資料 → 佈建,並選擇欲相聯的 kickstart 設定檔。
- 按下「建立 Cobbler 系統紀錄」以進行相聯。
- 此關聯將會遠永存在,除非您將
pxe_just_once選項設為 true。在此情況下,此關聯將會在成功進行 kickstart 後解除。有關於此設定,請參閱 過程 4.3, “配置 Cobbler 以使用 PXE”。
過程 4.3. 配置 Cobbler 以使用 PXE
pxe_just_once 配置選項。
- 通常,BIOS 順序會將 PXE 開機設為優先。這代表系統不會由本機磁碟啟動,除非 PXE 伺服器進行遠端的指示。這項設定可能會造成開機迴圈(boot loop),也就是系統會持續重新安裝。若要避免開機迴圈,請開啟
/etc/cobbler/settings檔案並新增下列行列:pxe_just_once: 1
此設定會在 kickstart 範本中增加一項$kickstart_done巨集,這會指示系統在完成安裝後,透過本機磁碟開機,而非透過網路開機。 - 若您包含了
pxe_just_once: 1設定,並且您之後希望重新安裝系統,您將需要啟用系統上的netboot-enabled旗標。這可透過使用 RHN Satellite 網站介面,或是直接透過 Cobbler 來完成。當系統下次重新啟動時,它將會執行一項 PXE 安裝,並再次恢復透過本機磁碟開機,直到旗標重新設置。若 BIOS 被設為由本機硬碟啟動的話,您便無須啟用pxe_just_once。然而,若要使用 PXE 來重新佈建系統,您需要將 MBR(master boot record)化零。
命名常規
- 發行版
$tree_name:$org_id:$org_name(若手動建立的話)$tree_name(若透過 RHN Satellite 同步的話)- 設定檔
$profile_name:$org_id:$org_name
重要
注意
/var/log/cobbler/ 檔案中
4.3. Koan
koan(kickstart over a network)能讓您由已佈建的主機,遠端存取 RHN Satellite。Koan 能讓您進行 kickstart 佈建、建立虛擬客座端(於虛擬主機上),以及列出 RHN Satellite 主機的可用 kickstart。它包含在 koan 套件中。
表格 4.3. Koan 指令
| 指令 | 使用方法 |
|---|---|
man koan | 請參閱 koan man page |
koan --replace-self --server=satellite.example.org --profile=profile-name 或 koan --replace-self --server=satellite.example.org --system=system-name | 佈建一部既有的系統。請在執行這項指令之後重新啟動,以安裝新的作業系統。這亦可使用來升級 kickstart(比方說將大量機器由某 Red Hat Enterprise Linux 版本升級至另一版本)。 |
koan --virt --server=satellite.example.org --profile=profile-name 或 koan --virt --server=satellite.example.org --system=system-name | 佈建虛擬客座端 |
koan --list=profiles --server=satellite.example.org 或 koan --list=systems --server=satellite.example.org | 查詢 Cobbler 以顯示一列可進行遠端安裝的設定檔或系統之清單 |
注意
/var/log/koan 中。
章 5. 疑難排解
- 5.1. 網站介面
- 5.2. Anaconda
- 5.3. Traceback
- 5.4. 註冊
- 5.5. Kickstart 和程式碼片段
5.1. 網站介面
/var/log/tomcat5/catalina.out 日誌檔案。
/var/log/httpd/error_log 日誌檔案。
5.2. Anaconda
Error downloading kickstart file 的錯誤。產生問題的原因為何?如何解決這項問題?
cobbler check 指令,並查看輸出,輸出會看似:
# cobbler check The following potential problems were detected: #0: reposync is not installed, need for cobbler reposync, install/upgrade yum-utils? #1: yumdownloader is not installed, needed for cobbler repo add with --rpm-list parameter, install/upgrade yum-utils? #2: The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed #3: fencing tools were not found, and are required to use the (optional) power management features. install cman to use them
cobbler check 未提供任何答案,請檢查下列:
- 驗證
httpd是否運作中:service httpd status - 驗證
cobblerd是否運作中:service cobblerd status - 驗證您是否能夠由不同主機使用
wget,以取得 kickstart 檔案:wget http://satellite.example.com/cblr/svc/op/ks/profile/rhel5-i386-u3:1:Example-Org
The file chkconfig-1.3.30.1-2.i386.rpm cannot be opened.。產生問題的原因為何?該如何解決這項問題?
--url 參數來由 RHN Satellite 取得內容。例如:
url --url http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3
200 OK 回應。您可藉由嘗試 wget 位於該 URL 的檔案來這麼作:
wget http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3 --2011-08-19 15:06:55-- http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3 Resolving satellite.example.com... 10.10.77.131 Connecting to satellite.example.com|10.10.77.131|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 0 [text/plain] Saving to: `ks-rhel-i386-server-5-u3.1' 2011-08-19 15:06:55 (0.00 B/s) - `ks-rhel-i386-server-5-u3.1' saved [0/0]
200 OK 以外的回應的話,請檢查錯誤紀錄,以找出問題。您亦可透過搜尋 access_log 檔案,以檢查 Anaconda 嘗試下載的實際檔案:
# grep chkconfig /var/log/httpd/access_log 10.10.77.131 - - [19/Aug/2011:15:12:36 -0400] "GET /rhn/common/DownloadFile.do?url=/ks/dist/ks-rhel-i386-server- 5-u3/Server /chkconfig-1.3.30.1-2.i386.rpm HTTP/1.1" 206 24744 "-" "urlgrabber/3.1.0 yum/3.2.19" 10.10.76.143 - - [19/Aug/2011:15:12:36 -0400] "GET /ks/dist/ks-rhel-i386-server-5-u3/Server/chkconfig- 1.3.30.1-2.i386.rpm HTTP/1.1" 206 24744 "-" "urlgrabber/3.1.0 yum/3.2.19" 10.10.76.143 - - [19/Aug/2011:15:14:20 -0400] "GET /ks/dist/ks-rhel-i386-server-5-u3/Server/chkconfig- 1.3.30.1-2.i386.rpm HTTP/1.1" 200 162580 "-" "urlgrabber/3.1.0 yum/3.2.19" 10.10.77.131 - - [19/Aug/2011:15:14:20 -0400] "GET /rhn/common/DownloadFile.do?url=/ks/dist/ks-rhel-i386-server- 5-u3/Server/chkconfig-1.3.30.1-2.i386.rpm HTTP/1.1" 200 162580 "-" "urlgrabber/3.1.0 yum/3.2.19"
access_log 檔案中,系統的網路作業設定可能有問題。若請求有出現,不過卻產生了錯誤,請檢查錯誤紀錄。
wget http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3/Server/chkconfig-1.3.30.1-2.i386.rpm
5.3. Traceback
Subject: WEB TRACEBACK from satellite.example.com Date: Wed, 19 Aug 2011 20:28:01 -0400 From: RHN Satellite <dev-null@redhat.com> To: admin@example.com java.lang.RuntimeException: XmlRpcException calling cobbler. at com.redhat.rhn.manager.kickstart.cobbler.CobblerXMLRPCHelper.invokeMethod(CobblerXMLRPCHelper.java:72) at com.redhat.rhn.taskomatic.task.CobblerSyncTask.execute(CobblerSyncTask.java:76) at com.redhat.rhn.taskomatic.task.SingleThreadedTestableTask.execute(SingleThreadedTestableTask.java:54) at org.quartz.core.JobRunShell.run(JobRunShell.java:203) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) Caused by: redstone.xmlrpc.XmlRpcException: The response could not be parsed. at redstone.xmlrpc.XmlRpcClient.handleResponse(XmlRpcClient.java:434) at redstone.xmlrpc.XmlRpcClient.endCall(XmlRpcClient.java:376) at redstone.xmlrpc.XmlRpcClient.invoke(XmlRpcClient.java:165) at com.redhat.rhn.manager.kickstart.cobbler.CobblerXMLRPCHelper.invokeMethod(CobblerXMLRPCHelper.java:69) ... 4 more Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://someserver.example.com:80/cobbler_api at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1236) at redstone.xmlrpc.XmlRpcClient.handleResponse(XmlRpcClient.java:420) ... 7 more
taskomatic 服務的通訊之間發生了問題。請檢查下列:
- 驗證
httpd是否運作中:service httpd status - 驗證
cobblerd是否運作中:service cobblerd status - 驗證沒有會造成
localhost連線失效的防火牆規則
5.4. 註冊
rhnreg_ks 指令時發生了錯誤,錯誤訊息為 ERROR: unable to read system id。產生問題的原因是?
%post 部份,這會使您的機器向 RHN Satellite 註冊:
# begin Red Hat management server registration mkdir -p /usr/share/rhn/ wget http://satellite.example.com/pub/RHN-ORG-TRUSTED-SSL-CERT -O /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT perl -npe 's/RHNS-CA-CERT/RHN-ORG-TRUSTED-SSL-CERT/g' -i /etc/sysconfig/rhn/* rhnreg_ks --serverUrl=https://satellite.example.com/XMLRPC --sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT --activationkey=1-c8d01e2f23c6bbaedd0f6507e9ac079d # end Red Hat management server registration
- 建立一個目錄以存放 RHN Satellite 所使用的自訂 SSL 憑證。
- 擷取欲在進行註冊時使用的 SSL 憑證。
- 這會按照順序建立一個目錄,以存放 RHN Satellite 所使用的自訂 SSL 憑證、取得 SSL 憑證以使用於註冊時、搜尋並取代來自於
rhn-register配置檔案的 SSL 憑證字串,並透過使用 SSL 憑證和啟動金鑰來向 RHN Satellite 註冊。所有的 kickstart 設定檔皆包含了一組啟動金鑰,這組金鑰可確保系統已被分配了正確的基礎和子頻道,並且取得了正確的系統權利。若是要佈建既有的系統,啟動金鑰也會確認這部系統是否與先前的系統設定檔相聯。
rhnreg_ks 指令失敗的話,您可能會在 ks-post.log 日誌檔案中看見類似此的錯誤顯示:
ERROR: unable to read system id.
rhn_check,並且系統尚未向 RHN Satellite 註冊的話,這些錯誤便會發生。
5.5. Kickstart 和程式碼片段
/var/lib/rhn/kickstarts/。在此目錄中,原生(非精靈產生)的 kickstart 位於 upload 子目錄中,而由精靈所產生的 kickstart 則位於 wizard 子目錄中:
Raw Kickstarts: /var/lib/rhn/kickstarts/upload/$profile_name--$org_id.cfg Wizard Kickstarts: /var/lib/rhn/kickstarts/wizard/$profile_name--$org_id.cfg
/var/lib/rhn/kickstarts/snippets 中。Cobbler 會透過使用符號連結 /var/lib/cobbler/snippets/spacewalk 來存取程式碼片段。
Snippets: /var/lib/rhn/kickstarts/snippets/$org_id/$snippet_name
重要
附錄 A. 修訂記錄
| 修訂記錄 | |||||||
|---|---|---|---|---|---|---|---|
| 修訂 4-2.3.400 | 2013-10-31 | Rüdiger Landmann | |||||
| |||||||
| 修訂 4-2.3 | Mon Mar 11 2013 | Terry Chuang | |||||
| |||||||
| 修訂 4-2.2 | Wed Mar 6 2013 | Terry Chuang | |||||
| |||||||
| 修訂 4-2.1 | Thu Feb 21 2013 | Terry Chuang | |||||
| |||||||
| 修訂 4-2 | Wed Sept 19 2012 | Dan Macpherson | |||||
| |||||||
| 修訂 4-1 | Thu Aug 9 2012 | Athene Chan | |||||
| |||||||
| 修訂 4-0 | Mon June 25 2012 | Athene Chan | |||||
| |||||||
| 修訂 3-0 | Thu May 31 2012 | Athene Chan | |||||
| |||||||
| 修訂 2-0 | Thu May 24 2012 | Athene Chan | |||||
| |||||||
| 修訂 1-3 | Mon Aug 15 2011 | Lana Brindley | |||||
| |||||||
| 修訂 1-2 | Wed Jun 15 2011 | Lana Brindley | |||||
| |||||||
| 修訂 1-1 | Fri May 27 2011 | Lana Brindley | |||||
| |||||||
| 修訂 1-0 | Fri May 6, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-8 | Thu May 5, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-7 | Thu April 14, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-6 | Wed March 23, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-5 | Tue March 22, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-4 | Tue March 22, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-3 | Mon March 21, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-2 | Thu March 17, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-1 | Wed Jan 5, 2011 | Lana Brindley | |||||
| |||||||
| 修訂 0-0 | Tue Dec 21, 2010 | Lana Brindley | |||||
| |||||||