Red Hat Training

A Red Hat training course is available for Red Hat Satellite

8.6. Cobbler 範本

在 RHN 衛星伺服器網站介面中,有用來建立變數以和 kickstart 發行套件與設定檔搭配使用的功能。比方說,若要建立一個 kickstart 設定檔變數,請參閱 節 4.4.9.3.3, “Kickstart 詳細資訊 ⇒ 變數”
Kickstart 變數為用來在 kickstart 檔案中支援 templating 的衛星伺服器中的基本架構變更的一部分。對於 kickstart 檔案來說,範本(template)為包含了使用來建置實際 kickstart 檔案之描述的檔案,而不是建立特定 kickstart。
這些範本接著便會被各種持有其自己的變數與相應值的設定檔和系統共享。這些變數會修改範本,並且稱為範本引擎(template engine)的軟體會將該範本和變數資料剖析至一個可用的 kickstart 檔案中。Cobbler 使用了一個稱為 Cheetah 的進階範本引擎,它提供了範本、變數和 snippets 上的支援。
使用範本的好處包括:
  • 能讓管理員在不重複作業,或在每個獨特狀況下手動式建立 kickstart 的情況下,建立和管理大量設定檔或系統的健全功能。
  • 雖然範本可能會非常複雜並包含了迴圈、條件和其它增強的功能和語法,不過它也能以不如此複雜的方式使用來建立 kickstart 檔案。

8.6.1. 使用範本

Kickstart 範本對於特定通用項目(例如 PXE 映像檔案名稱、子網位址和例如 /etc/sysconfig/network-scripts/ 的通用路徑)會有靜態的值。不過,範本和標準 kickstart 檔案不同的地方會被顯示於它們所使用的變數中。
比方說,標準的 kickstart 檔案可能會有個看似以下的網路作業路徑:
network --device=eth0 --bootproto=static --ip=192.168.100.24 --netmask=255.255.255.0 --gateway=192.168.100.1 --nameserver=192.168.100.2
不過,在 kickstart 範本檔案當中,網路作業路徑可能會看似:
network --device=$net_dev --bootproto=static --ip=$ip_addr --netmask=255.255.255.0 --gateway=$my_gateway --nameserver=$my_nameserver
這些變數將會被取代為設置於您 kickstart 設定檔變數中的值,或設置於您系統詳情變數中的值。若在設定檔和系統詳情中皆定義了相同的變數,那麼系統變數便會擁有優先權。
欲取得更多有關於 kickstart 範本的相關資訊,請參閱位於下列 URL 的 Cbbler 方案網頁:

8.6.2. Kickstart Snippets

若您在所有 kickstart 範本和設定檔上含有相同的通用配置,您便能利用 Cobbler 的 Snippets 功能,來有效利用程式碼再使用(code reuse)。
Kickstart snippets 為 kickstart 程式碼的一部分,它可被一個 $SNIPPET() 函式調用,被 Cobbler 剖析然後以 snippet 的內容來取代該函式調用。
比方說,若您在所有伺服器上都有個通用的硬碟分割區配置,例如:
clearpart --all
part /boot --fstype ext3 --size=150 --asprimary
part / --fstype ext3 --size=40000 --asprimary
part swap --recommended

part pv.00 --size=1 --grow

volgroup vg00 pv.00
logvol /var --name=var vgname=vg00 --fstype ext3 --size=5000
您可取這個 snippet,將它儲存至一個檔案中(例如 my_partition),然後將該檔案放置在 /var/lib/cobbler/snippets/ 中,如此一來 Cobbler 便可存取它們。
接著,您便可透過在您的 kickstart 範本中使用 $SNIPPET() 函式來使用 snippet。例如:
$SNIPPET('my_partition')
無論您在哪裡引動該函式,Cheetah 這個剖析程式都會將函式替換為包含在 my_partition 檔案中的程式碼 snippet。
欲取得更多有關於 kickstart snippet 的相關資訊,請參閱位於下列 URL 的 Cobbler 專案網頁: