2021-05-12 14:32:11
Cobbler實現自動化安裝(上)--原理篇
了解Cobbler之前,我們需要先對PXE及KickStart有一定的認識。
PXE
PXE(Pre-bootExecution Environment),預啟動執行環境,通過網路介面啟動計算機,支援Client通過網路從Server下載映像,並由此通過網路啟動作業系統;在啟動過程中,Client要求Server分配IP地址,再用TFTP下載一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成Client基本的軟體設定並安裝作業系統。
要達成PXE有兩個必須的條件:
(1)Client的網絡卡必須要支援PXE功能,並且開機時選擇從網絡卡啟動;
(2)完整的PXE Server必須要提供含有DHCP、TFTP服務,還要加上NFS/FTP/HTTP(選擇一樣即可)等提供安裝檔案(安裝映象的解壓檔案)。
KickStart
KickStart 是一種無人值守的安裝方式,它的工作原理是在安裝過程中記錄人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。我們可以簡單理解為一個自動安裝應答設定管理程式。通過讀取這個組態檔,系統知道怎麼去分割區,要安裝什麼包,配什麼IP,優化什麼核心引數等等。其主要組成部分包括:
- KickStart安裝選項,包含語言的選擇,防火牆,密碼,網路,分割區的設定等;
- %Pre部分,安裝前解析的指令碼,通常用來生成特殊的ks設定,比如由一段程式決定磁碟分割區等;
- %Package部分,安裝包的選擇,可以是@core這樣的group形式,也可以是vim-*這樣的包形式;
- %Post部分,安裝後執行的指令碼,通常用來做系統的初始化設定,比如啟動的服務,相關的設定等。
PXE+KickStart的工作流程
- 1. PXE Client向DHCP Server傳送請求:支援PXE的網路介面卡(NIC)的Client的BIOS設定成為網路啟動,通過UDP(簡單使用者資料包協定)傳送一個廣播請求,向網路中的DHCP Server索取IP地址等資訊。
- 2. DHCP Server提供資訊:DHCP Server收到Client的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給Client返回響應,響應內容包含了為Client分配的IP Address、TFTP Server以及組態檔所在位置。
- 3. PXE Client請求下載啟動檔案:Client收到DHCP Server的響應後,會回應一個幀,以請求傳送啟動所需檔案,這些啟動檔案包括:pxelinux.0(相當於boot loader)、pxelinux.cfg/default、vmlinuz、initrd.img等檔案。
- 4. TFTP Server響應Client請求並傳送檔案:Client會根據該檔案中定義的引導順序,啟動Linux安裝程式的引導核心。
- 5. 請求下載自動應答檔案:Client通過pxelinux.cfg/default檔案成功的引導Linux安裝核心後,安裝程式首先必須確定你通過什麼安裝媒介來安裝linux,如果是通過網路安裝(NFS, FTP, HTTP),則會在這個時候初始化網路,並定位安裝源位置。(或許你會說,剛才PXE不是已經獲取過IP地址了嗎?為什麼現在還需要一次?這是由於PXE獲取的是安裝用的核心以及安裝程式等,而安裝程式要獲取的是安裝系統所需的二進位制包以及組態檔。由於它們需要的內容不同造成PXE模組和安裝程式是相對獨立的,PXE的網路設定並不能傳遞給安裝程式。從而進行兩次獲取IP地址過程。)接著讀取該檔案中指定的自動應答檔案ks.cfg所在位置,根據該位置請求下載該檔案。
- 6. Client安裝作業系統:將ks.cfg檔案下載回來後,通過該檔案找到OS Server,並按照該檔案的設定請求下載安裝過程需要的軟體包。
Cobbler
概述
Cobbler由Python語言開發,是對PXE和KickStart的封裝,融合很多特性,提供了CLI和Web的管理形式,能更加方便地實行網路安裝;Cobbler也提供了API介面,因此使用其它語言也很容易做擴充套件。Cobbler不僅可以安裝物理機,同時也支援KVM、XEN虛擬化、Guest OS的安裝;更多的是它還能結合Puppet等集中化管理軟體,實現自動化的管理。
組成
Cobbler的結構基於一組註冊的物件,每個物件都是相互關聯的實體(該實體指向另一個實體,或者另一個實體指向該實體)。當一個物件指向另一個物件時,它就繼承了被指向物件的資料,並可覆蓋或新增更多特定資訊。物件型別的定義為:
- 發行版(Distribution):表示一個作業系統,它承載了kernel和initrd的資訊,以及核心引數等其它資料;
- 組態檔(Profile):包含一個發行版、一個KickStart檔案以及可能的儲存庫,還包含更多特定的核心引數等其它資料;
- 系統(System):包含一個組態檔或一個映象,還包含IP Address和MAC Address、電源管理(地址、憑據、型別)以及更為專業的資料等資訊;
- 儲存庫(Repository):儲存一個yum或rsync儲存庫的映象資訊;
- 映象(Image):可替換一個包含不屬於此類別的檔案的發行版物件。
基於註冊的物件以及各個物件之間的關聯,Cobbler 知道如何更改檔案系統以反映具體設定,因為系統設定的內部是抽象的,因此我們可以只關注想要執行的操作。
工作原理
Server端:
- 啟動Cobbler服務
- 進行Cobbler錯誤檢查,執行cobbler check命令
- 進行設定同步,執行cobbler sync命令
- 複製相關啟動檔案檔案到TFTP目錄中
- 啟動DHCP服務,提供地址分配
- DHCP服務分配IP地址
- TFTP傳輸啟動檔案
- Server端接收安裝資訊
- Server端傳送ISO映象與Kickstart檔案
Client端:
- 用戶端以PXE模式啟動
- 用戶端獲取IP地址
- 通過TFTP伺服器獲取啟動檔案
- 進入Cobbler安裝選擇介面
- 用戶端確定載入資訊
- 根據設定資訊準備安裝系統
- 載入Kickstart檔案
- 傳輸系統安裝的其它檔案
- 進行安裝系統
小結
- Cobbler可以看作是一個更多功能的PXE,它實現系統安裝和PXE+KickStart也差不多,需要的檔案和過程大致都一樣;
- Cobbler能自動管理DNS/TFTP/DHCP/RSYNC這四個服務(但似乎對TFTP的管理有點bug,需要手動啟動TFTP),且Cobbler依賴於HTTPD(PXE支援HTTP/NFS/FTP);
- 基本的系統安裝,Cobbler只需生成一個Distro和一個Profile即可:Distro相當於一個映象,它提供安裝系統過程中所需的一切檔案,如vmlinuz,initrd以及rpm包等;Profile的作用是為了自動修改pxelinux.cfg/default檔案,每生成或修改一次profile,都會在default檔案中修改或追加對應的label;
- 除了Distro/Profile之外,Cobbler還管理System/Images/Repository等,但是用的很少。
Cobbler實現自動化安裝(下)--實現過程 見 https://www.linuxidc.com/Linux/2018-10/154905.htm
相關文章