系統自動化安裝kickstart
自動化安裝的方法:
Kickstart
Cobbler
1.簡介
1.1 什麼是PXE
PXE,全名Pre-boot Execution Environment,預啟動執行環境;
通過網路介面啟動計算機,不依賴本地儲存裝置(如硬碟)或本地已安裝的作業系統;
由Inter和Systemsoft公司於1999年9月20日公佈的技術;
Client/Server的工作模式;
PXE客戶端會呼叫網路協議(IP)、使用者資料協議(UDP)、動態主機設定協議(DHCP)、小型檔案傳輸協議(TFTP)等網路協議;
PXE客戶端(Client)這個術語是指機器在PXE啟動過程中的角色,一個PXE客戶端可以是一臺伺服器,膝上型電腦或其他裝有PXE啟動程式碼的機器我們電腦的網絡卡)。
1.2PXE的工作過程
PXE+Kickstart無人值守安裝作業系統完成過程
PXE工作示意圖
- PXE Client向DHCP傳送請求
PXE Client從指甲的PXE網絡卡啟動,通過PXE BootROM(自啟動晶片)會以UDP(簡單使用者資料報協議)傳送一個廣播請求,向本 網路中的DHCP伺服器索取IP - DHCP伺服器提供資訊
DHCP伺服器接收到客戶端的請求,驗證是否來自合法的PXE Client的請求,驗證通過它將給客戶端一個“提供”響應,這個“提供”響應中包含了為客戶端分配的IP地址、pxelinux啟動程式(TFTP)位置,以及配置檔案所在位置。 - PXE客戶端請求下載啟動檔案
客戶端收到伺服器的“迴應”後,會迴應一個幀,以請求傳送啟動所需檔案,這些啟動檔案包括:(pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img)等檔案。 - Boot Server響應客戶端請求並傳送檔案
當伺服器收到客戶端的請求後,他們之間之後將由更多的資訊再客戶端與伺服器之間作應答,用以決定啟動引數。BootROM由TFTP通訊協議從Boot Server下週啟動安裝程式所需的檔案(pxelinux0、pxelinux.conf/default)。default檔案下載完成後,會根據該檔案中定義的引導順序,啟動linux安裝程式引導核心 - 請求下載自動應答檔案
客戶端通過(pxelinux.cfg/default)檔案成功的引導Linux安裝核心後,安裝程式首先必須確定你通過什麼安裝介質來安裝linux,如果是通過網路安裝(NFS,FTP,HTTP),則會在這個時候初始化網路,並定位安裝源位置,接著會讀取default檔案中指定的自動應答檔案ks.cfg所在位置,根據該位置請求下載該檔案。
這裡有個問題,在第2部和第5部初始化2次網路了,這是由於PXE獲取的是安裝用的核心以及安裝程式等,而安裝程式要獲取的是安 裝系統所需的二進位制包
以及配置檔案,因此PXE模組和安裝程式時相對獨立的,PXE的網路配置並不能傳遞給安裝程式,從而進行兩次 獲取IP地址過程,但IP地址在DHCP租期是
一樣的。 - 客戶端安裝作業系統
將ks.cfg檔案下載回來後,通過該檔案找到OS Server,並按照該檔案的配置請求下載安裝過程需要的軟體包,OS Server和安裝端建立連線後,將開始傳輸軟體包,客戶端將開始安裝作業系統,安裝完成後,將提示重新引導計算機。
1.3 批量裝機軟體介紹
Redhat系統主要由兩種Kickstart和Cobbler。
Kickstart是一種無人值守的安裝方式,它的工作原理是在安裝過程中記錄人工干預填寫的各種引數,並生成一個名叫ks.cfg的檔案。如果在自動安裝過程中出現要填寫的情況,安裝程式首先會去查詢ks.cfg檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便會彈出對話方塊讓安裝者手工填寫,所以,如果ks.cfg檔案涵蓋了安裝過程中所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處下載ks.cfg檔案,然後就去忙自己的事情,等安裝完畢,安裝程式會根據ks.cfg中的設定重啟/關閉系統,並結束安裝。
Cobbler幾種和簡化了通過網路安裝作業系統所需要使用到的DHCP、TFTP和DNS服務的配置。Cobbler不僅有一個命令列介面,還提供了一個Web介面,大大降低了使用者的入門水平,Cobbler內建了一個輕量級配置管理系統,但它也支援和其它配置管理系統整合,如Puppet,暫時不支援SaltStack。
簡單的說,Cobbler是對kickstart的封裝,簡化安裝步驟,使用流程,降低使用者的門檻。
1.4 系統環境準備
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[[email protected] ~]# uname -r
2.6.32-504.el6.x86_64
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive
[[email protected] ~]# vim /etc/selinux/config
SELINUX=permissive
[[email protected] ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[[email protected] ~]# hostname linux-node1.example.com
[[email protected] ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=linux-node1.example.com