天天看點

基于PXE 和 cobbler 自動安裝系統

1 概述

本文中将介紹基于pxe和cobbler兩種方式的自動化安裝。兩種方式實作的效果是一樣的,但是cobbler是pxe的二次封裝,在使用上更加友善,內建多個軟體進行實作。關于自動化安裝中的相關概念和ks檔案等的介紹,詳見部落格:http://ghbsunny.blog.51cto.com/7759574/1969593

本文是對本地自動化安裝系統的擴充。同時,本文在文檔後部附上了關于自動化安裝pxe系統環境的腳本。

2 基于pxe 自動化安裝

pxe(prebootexcutionenvironment)預啟動執行環境,intel公司研發基于client/server的網絡模式,支援遠端主機通過網絡從遠端伺服器下載下傳映像,并由此支援通過網絡啟動作業系統pxe可以引導和安裝windows,linux等多種作業系統

pxe網絡自動化安裝:通過搭建網絡yum源(http,ftp,nfs三者選一),tftp伺服器,dhcp伺服器,原理是,通過dhcp伺服器,使得機器啟動的時候,擷取到相關的ip,在dhcp裡指定了next-server,該next-server就是tftp伺服器的ip,這樣,機器擷取到ip後,會到指定的tftp伺服器的預設路徑/var/lib/tftpboot下去下載下傳相關的檔案,首先是加載pxelinux.cfg目錄下的default檔案,該default檔案就是安裝機器的菜單選項,在這菜單裡,指定kickstart檔案路徑和/var/lib/tftpboot下的initrd.img和vmlinuz的路徑,使得需要安裝的對應系統能夠啟動并加載kickstart檔案進行安裝。在kickstart檔案裡我們将指定了安裝包的路徑。

pxe工作原理

如下圖

基于PXE 和 cobbler 自動安裝系統

原理介紹

.client向pxe server上的dhcp發送ip位址請求消息,dhcp檢測client是否合法(主要是檢測client的網卡mac位址),如果合法則傳回client的ip位址,同時将啟動檔案pxelinux.0的位置資訊一并傳送給client

.client向pxe server上的tftp發送擷取pxelinux.0請求消息,tftp接收到消息之後再向client發送pxelinux.0大小資訊,試探client是否滿意,當tftp收到client發回的同意大小資訊之後,正式向client發送pxelinux.0

.client執行接收到的pxelinux.0檔案

.client向tftp server發送針對本機的配置資訊檔案(在tftp服務的pxelinux.cfg目錄下,這是系統菜單檔案,格式和isolinux.cfg格式一樣,功能也是類似),tftp将配置檔案發回client,繼而client根據配置檔案執行後續操作。

.client向tftp發送linux核心請求資訊,tftp接收到消息之後将核心檔案發送給client

.client向tftp發送根檔案請求資訊,tftp接收到消息之後傳回linux根檔案系統

.client啟動linux核心

.client下載下傳安裝源檔案,讀取自動化安裝腳本

這裡用pxe自動化安裝centos7為例說明

.安裝前準備:關閉防火牆和selinux,dhcp伺服器靜态ip

.安裝軟體包

環境準備,搭建以下三個服務

httpd/nfs/ftp(三選一,用于搭建yum源)tftp-server dhcp

檔案準備

通過以下兩個工具生成相關檔案

syslinux  : 生成menu.c32 和 pxelinux.0

system-config-kickstart:生成 kickstart檔案

.配置檔案共享服務:

.準備kickstart檔案

安裝路徑,這次是用http伺服器作為yum源,ks檔案中url --url=http:/192.168.32.72/os/7

開機時加載網卡,onboot選項

.配置tftp服務

.配置dhcp服務

可以直接拷貝配置檔案進行修改,主要該要使用的網段range和指定tftp伺服器next-server和tftp伺服器上的預設的檔案filename

配置tftp服務

.準備相關檔案

tftp路徑是

目前檔案清單如下:

.準備啟動菜單

修改啟動菜單

到這裡,pxe安裝centos7的環境已經準備完成了,這樣子,當有機器需要安裝系統的時候,開機,選擇網絡啟動就會按照pxe的設定進行安裝

3 基于cobbler自動化安裝系統

cobbler 介紹

cobbler快速網絡安裝linux作業系統的服務,支援衆多的linux發行版:red hat、fedora、centos、debian、ubuntu和suse,也可以支援網絡安裝windows,是pxe的二次封裝,将多種安裝參數封裝到一個菜單,基于python編寫,提供了cli和web的管理形式 

cobbler 工作流程

 以下圖形是cobbler和pxe工作的對比圖形

基于PXE 和 cobbler 自動安裝系統

cobbler 工作流程解釋如下

.client裸機配置了從網絡啟動後,開機後會廣播包請求dhcp伺服器(cobbler server)發送其配置設定好的一個ip

.dhcp伺服器(cobbler server)收到請求後發送responese,包括其ip位址

.client裸機拿到ip後再向cobbler server發送請求os引導檔案的請求

.cobbler server告訴裸機os引導檔案的名字和tftp server的ip和port

.client裸機通過上面告知的tftp server位址通信,下載下傳引導檔案

.client裸機執行執行該引導檔案,确定加載資訊,選擇要安裝的os,期間會再向cobbler server請求kickstart檔案和os image

.cobbler server發送請求的kickstart和os iamge

.client裸機加載kickstart檔案

.client裸機接收os image,安裝該os image

cobbler 實作步驟

.安裝包,并設定服務

.檢查配置

.根據上面提示修改配置

.下載下傳啟動相關檔案菜單

.分别導入centos的安裝源,并檢視

.準備kickstart檔案并導入cobbler

.配置web管理界面

.測試

cobbler 相關術語

.發行版:表示一個作業系統版本,它承載了核心和initrd 的資訊,以及核心參數等其他資料

.配置檔案:包含一個發行版、一個kickstart 檔案以及可能的存儲庫,還包含更多特定的核心參數等其他資料

.系統:表示要配置的主機,它包含一個配置檔案或一個鏡像,還包含ip 和mac 位址、電源管理(位址、憑據、類型)以及更為專業的資料等資訊

.存儲庫:儲存一個yum 或rsync 存儲庫的鏡像資訊

.鏡像:可替換一個包含不屬于此類别的檔案的發行版對象(例如,無法分為核心和initrd 的對象)

cobbler 各種配置目錄說明

cobbler 依賴epel 源安裝

yum -y install cobbler

一般是會自動安裝相關的包的,如http,dns等,安裝完成後,如果還有沒有安裝的服務,要手動安裝,如dhcp。

yum -y install dhcp

.配置檔案目錄/etc/cobbler

cobbler 目錄介紹

cobbler 指令介紹

cobbler 重要的參數

./etc/cobbler/settings中重要的參數設定

cobbler 環境檢查

.執行cobbler check指令常見如下異常,一般是配置檔案沒更改導緻

cobbler check常見報錯解決辦法如下

.修改/etc/cobbler/settings檔案中的server參數的值為提供cobbler服務的主機相應的ip位址或主機名

.修改/etc/cobbler/settings檔案中的next_server參數的值為提供pxe服務的主機相應的ip位址

.如果目前節點可以通路網際網路,執行“cobbler get-loaders”指令即可;否則,需要安裝syslinux程式包,而後制/usr/share/syslinux/{pxelinux.0,memu.c32}等檔案至/var/lib/cobbler/loaders/目錄中

.執行“chkconfig rsync on”指令即可

.執行“openssl passwd -1 生成密碼,并用其替換/etc/cobbler/settings檔案中

default_password_crypted參數的值

cobbler 相關管理

.下載下傳啟動菜單:cobbler get-loaders

.管理distro ,這一步是導入CD光牒的所有檔案,時間會比較長,根據CD光牒的大小決定時間長短

.管理profile ,即啟動菜單

.檢視profiles

.檢視引導檔案

.同步cobbler配置

.cobbler sync

多系統引導方案

導入多個ks檔案,并将ks檔案和yum源做管理

cobbler的web管理實作

.cobbler-web提供cobbler的基于web管理界面,服務包來自epel源

配置檔案在/etc/httpd/conf.d/cobbler_web.conf,在httpd的配置目錄下,是以要使得cobbler生效,必須重新開機httpd服務

.認證方式

.定義認證方法:/etc/cobbler/modules.conf,這裡介紹兩種驗證方法認證cobbler_web使用者, authn_configfile和authn_pam

基于authn_configfile子產品認證

.[authentication]塊中module = authn_configfile,系統預設就是authn_configfile這個驗證方法

.建立其認證檔案/etc/cobbler/users.digest,并添加所需的使用者

#以上語句中cobbler是必須要有的,而且第一個字母c大寫

#admin是新增加的檔案,可以自己随意命名

.注意:添加第一個使用者時,使用“-c”選項,後續添加其他使用者時不要再使用,cobbler_web的realm隻能為cobbler

重新開機cobbler服務

基于authn_pam子產品認證

.更改配置檔案/etc/cobbler/modules.conf裡的 [authentication]塊中指定module = authn_pam

.建立cobbler使用者:useraddcobbler

.修改檔案/etc/cobbler/users.conf,将自己建立的使用者設定為管理者

[admins]

admin = "cobbleruser"其他不用更改

測試

a.安裝新的linux系統

b. 通過浏覽器https://cobblerserver/cobbler_web 輸入使用者名和密碼就可以通路

安裝cobbler步驟如下

1 安裝包

2 根據cobbler check 提示進行修改

重新開機服務并同步檔案

2)生成dhcp模版檔案

3) 準備啟動檔案和和菜單風格檔案

複制菜單風格檔案

 /var/lib/cobbler/loaders中如果缺少一些網絡啟動加載程式,可以運作'cobbler get-loaders'來下載下傳它們,或者,如果您隻想處理x86 / x86_64 netbooting,則可以確定已安裝 安裝

了syslinux軟體包的一個新版本,可以完全忽略這個消息。 該目錄中的檔案,如果要支援所有架構,應包括pxelinux.0,menu.c32,elilo.efi和yaboot。 “cobbler get-loaders”

指令是解決這些要求的最簡單方法。

連接配接internet

不連internet,隻複制menu.c32,pxelinux.0兩個檔案的話,隻支援安裝x86/x86_64架構的系統,是以建議還是執行cobbler get-loaders,将所需的檔案都下載下傳到 /var/lib/cobbler/loaders來。

cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders

檢視啟動菜單的菜單選項,指令如下

如果不需要相關菜單,可以用以下指令移除,

3 導入yum源

這一步執行完成後,會将目前的CD光牒檔案全部拷貝到/var/www/cobbler/ks_mirror這個目錄下,并且生成新的目錄,目錄名稱自己指定,如centos7.3,這裡這個目錄的名字一旦設定好了之後,

後續就不要繼續更改目錄名,否則生成菜單檔案會異常,因為名字不比對

4 生成ks

#注意,這裡的應答檔案是根據yum源自動生成的,我們也可以自己生成生成ks檔案,然後在做管理,把應答檔案裡的安裝方式改成 url  --url=$tree,就會

自動去找到對應的目錄,當然這裡也可以直接指定對應的路徑

這裡的$tree 的路徑可以通過以下指令檢視,

cobbler  distro list 找到源配置檔案,如centos73-x86_64

cobbler distro tree centos73-x86_64 就可以看到tree這個變量具體指哪個,如下

kickstart metadata             : {'tree': 'http://@@http_server@@/cblr/links/centos73-x86_64'}

注意,cobbler專門放應答檔案的目錄是/var/lib/cobbler/kickstarts,将新生成的ks檔案拷貝到這裡/var/lib/cobbler/kickstarts即可,如

cp  ks73min.cfg /var/lib/cobbler/kickstarts/

然後再将應答檔案和yum源做關聯

#以上指令将安裝的新生成的ks檔案和要對應的安裝的yum源關聯起來,--name要新生成的菜單項的名字,--distro指定yum源(cobbler distro list

這個指令檢視目前有多少個yum源,及其名稱),--kickstart指定ks檔案的路徑

cobbler sync

5 啟用網頁管理

到這裡cobbler安裝完成了

6 測試

a安裝虛拟機,注意網卡模式選擇橋接模式

b打開cobbler管理頁面

https://172.18.50.73/cobbler_web

4 半自動化安裝pxe環境腳本實作

這裡附上自動化安裝pxe環境的半自動化腳本

将菜單配置檔案,dhcp配置檔案,ks檔案打包放在附件中,有需要可以下載下傳檢視

這些配中,需要注意的是ks的檔案中,對包源路徑指定,如

url --url="http://192.168.32.72/os/6i386/"

還有菜單檔案中,ks路徑的指定

 append initrd=6i386/initrd.img ks=http://192.168.32.72/ksdir/ks65desk.cfg

還有,dhcp配置設定的網絡段的配置設定,和目前的網絡是可通的

在腳本中,有幾個地方需要注意

共準備了三個版本的CD光牒,32位的6.5版本,64位的6.9版本,和64位的7版本

挂載:/var/www/html/os/{6i386  6x86_64  7 }三個檔案夾分别挂載對應的CD光牒,這裡建議手動挂載

啟動引導檔案:建議手動核心和虛拟根檔案到/var/lib/tftpboot{ 6i386  6x86_64  7}這三個檔案夾下

ks檔案,建議提前準備好,也是手動複制到/var/www/html/ksdir下

雖然腳本實作了自動化的複制,但是前提是/dev/sr0 ---> 6x86_64 ,/dev/sr1 ---> 6i386 ,/dev/sr2 ---> 7

腳本内容如下

5 小結

關于pxe和cobbler安裝,兩個實作的效果一樣,都是自動化安裝系統,而且實作原理上也基本一緻,但是,由于cobbler是pxe的改良版,所有個人感覺,cobbler的安裝更加友善。

文章末尾,附上的pxe安裝環境,也類似實作了自動化安裝pxe,自動拷貝了腳本,當使用者同樣是挂載三個CD光牒,而且挂載的路徑和文章中介紹的一樣,就可以實作自動化挂載,同時,需要準備了相關的ks檔案,放到指定目錄下時,根據腳本的提示也可以實作自動化拷貝到相關目錄下。文末附件将附上腳本中的6個ks檔案,dhcp配置和菜單檔案的設定。

上一篇: Git基礎04
下一篇: Git基礎03

繼續閱讀