在Linux/CentOS上使用PXE+Kickstart無人值守安裝服務(自動化安裝系統)

無人值守系統

如果生產環境中有數百臺服務器都需要安裝系統,這種方式就不合時宜了。這時,我們就需要使用PXE + TFTP +FTP + DHCP + Kickstart服務搭建出一個無人值守安裝系統。這種無人值守安裝系統可以自動地爲數十臺服務器安裝系統,這一方面將運維人員從重複性的工作中解救出來,也大大提升了系統安裝的效率。

在這裏插入圖片描述

PXE(Preboot eXecute Environment,預啓動執行環境)是由Intel公司開發的技術,可以讓計算機通過網絡來啓動操作系統(前提是計算機上安裝的網卡支持PXE技術),主要用於在無人值守安裝系統中引導客戶端主機安裝Linux操作系統。Kickstart是一種無人值守的安裝方式,其工作原理是預先把原本需要運維人員手工填寫的參數保存成一個ks.cfg文件,當安裝過程中需要填寫參數時則自動匹配Kickstart生成的文件。所以只要Kickstart文件包含了安裝過程中需要人工填寫的所有參數,那麼從理論上來講完全不需要運維人員的干預,就可以自動完成安裝工作。

由於當前的客戶端主機並沒有完整的操作系統,也就不能完成FTP協議的驗證了,所以需要使用TFTP協議幫助客戶端獲取引導及驅動文件。vsftpd服務程序用於將完整的系統安裝鏡像通過網絡傳輸給客戶端。當然,只要能將系統安裝鏡像成功傳輸給客戶端即可,因此也可以使用httpd來替代vsftpd服務程序。

部署相關服務程序

配置DHCP服務程序
DHCP服務程序用於爲客戶端主機分配可用的IP地址,而且這是服務器與客戶端主機進行文件傳輸的基礎,因此我們先行配置DHCP服務程序。首先按照表19-1爲無人值守系統設置IP地址,然後按照圖19-2和圖19-3在虛擬機的虛擬網絡編輯器中關閉自身的DHCP服務。

                      無人值守系統與客戶端的設置

主機名稱 操作系統 IP地址
無人值守系統 CentOS 7 192.168.20.10
客戶端 未安裝操作系統 -
在這裏插入圖片描述

Yum倉庫文件配置妥當後,就可以安裝DHCP服務程序軟件包了。
yum install dhcp -y
在這裏插入圖片描述
允許了BOOTP引導程序協議,旨在讓局域網內暫時沒有操作系統的主機也能獲取靜態IP地址;在配置文件的最下面加載了引導驅動文件pxelinux.0(這個文件會在下面的步驟中創建),其目的是讓客戶端主機獲取到IP地址後主動獲取引導驅動文件,自行進入下一步的安裝過程。

allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.20.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.20.10;
range dynamic-bootp 192.168.20.200 192.168.20.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.20.10;
filename “pxelinux.0”;
}
v

在確認DHCP服務程序的參數都填寫正確後,重新啓動該服務程序,並將其添加到開機啓動項中。這樣在設備下一次重啓之後,在無須人工干預的情況下,自動爲客戶端主機安裝系統。

systemctl restart dhcpd
systemctl enable dhcpd
在這裏插入圖片描述
配置TFTP服務程序
關於vsftpd服務與TFTP服務。vsftpd是一款功能豐富的文件傳輸服務程序,允許用戶以匿名開放模式、本地用戶模式、虛擬用戶模式來進行訪問認證。但是,當前的客戶端主機還沒有安裝操作系統,該如何進行登錄認證呢?而TFTP作爲一種基於UDP協議的簡單文件傳輸協議,不需要進行用戶認證即可獲取到所需的文件資源。因此接下來配置TFTP服務程序,爲客戶端主機提供引導及驅動文件。當客戶端主機有了基本的驅動程序之後,再通過vsftpd服務程序將完整的光盤鏡像文件傳輸過去。
yum install tftp-server
在這裏插入圖片描述
TFTP是一種非常精簡的文件傳輸服務程序,它的運行和關閉是由xinetd網絡守護進程服務來管理的。xinetd服務程序會同時監聽系統的多個端口,然後根據用戶請求的端口號調取相應的服務程序來響應用戶的請求。需要開啓TFTP服務程序,只需在xinetd服務程序的配置文件中把disable參數改成no就可以了。保存配置文件並退出,然後重啓xinetd服務程序,並將其加入到開機啓動項中(在RHEL 7系統中,已經默認啓用了xinetd服務程序,因此在將其添加到開機啓動項中的時候沒有輸出信息屬於正常情況)。
在這裏插入圖片描述
TFTP服務程序默認使用的是UDP協議,佔用的端口號爲69,所以在生產環境中還需要在firewalld防火牆管理工具中寫入使其永久生效的允許策略,以便讓客戶端主機順利獲取到引導文件。
firewall-cmd --permanent --add-port=69/udp

firewall-cmd --reload
在這裏插入圖片描述
配置SYSLinux服務程序
SYSLinux是一個用於提供引導加載的服務程序。與其說SYSLinux是一個服務程序,不如說更需要裏面的引導文件,在安裝好SYSLinux服務程序軟件包後,/usr/share/syslinux目錄中會出現很多引導文件。

yum install syslinux
在這裏插入圖片描述
我們首先需要把SYSLinux提供的引導文件複製到TFTP服務程序的默認目錄中,也就是前文提到的文件pxelinux.0,這樣客戶端主機就能夠順利地獲取到引導文件了。另外在RHEL 7系統光盤鏡像中也有一些我們需要調取的引導文件。確認光盤鏡像已經被掛載到/media/cdrom目錄後,使用複製命令將光盤鏡像中自帶的一些引導文件也複製到TFTP服務程序的默認目錄中。
mkdir /media/cdrom -p
mount /dev/cdrom /media/cdrom
df 查看掛載情況

cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .
然後在TFTP服務程序的目錄中新建pxelinux.cfg目錄,雖然該目錄的名字帶有後綴,但依然也是目錄,而非文件!將系統光盤中的開機選項菜單複製到該目錄中,並命名爲default。這個default文件就是開機時的選項菜單,如圖所示。
在這裏插入圖片描述
默認的開機菜單中有兩個選項,要麼是安裝系統,要麼是對安裝介質進行檢驗。既然我們已經確定採用無人值守的方式安裝系統,還需要爲每臺主機手動選擇相應的選項,未免與我們的主旨(無人值守安裝)相悖。現在我們編輯這個default文件,把第1行的default參數修改爲linux,這樣系統在開機時就會默認執行那個名稱爲linux的選項了。對應的linux選項大約在64行,我們將默認的光盤鏡像安裝方式修改成FTP文件傳輸方式,並指定好光盤鏡像的獲取網址以及Kickstart應答文件的獲取路徑:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
配置VSFtpd服務程序
在我們這套無人值守安裝系統的服務中,光盤鏡像是通過FTP協議傳輸的,因此勢必要用到vsftpd服務程序。當然,也可以使用httpd服務程序來提供Web網站訪問的方式,只要能確保將光盤鏡像順利傳輸給客戶端主機即可。如果打算使用Web網站服務來提供光盤鏡像,一定記得將上面配置文件中的光盤鏡像獲取網址和Kickstart應答文件獲取網址修改一下。

yum install vsftpd -y

在這裏插入圖片描述
systemctl restart vsftpd
systemctl enable vsftpd

在這裏插入圖片描述

在確認系統光盤鏡像已經正常掛載到/media/cdrom目錄後,把目錄中的光盤鏡像文件全部複製到vsftpd服務程序的工作目錄中。
mount /dev/cdrom /media/cdrom
df 查看掛載情況
[root@linuxprobe ~]# cp -r /media/cdrom/* /var/ftp

在這裏插入圖片描述

這個過程大約需要3~5分鐘。在此期間,我們也別閒着,在firewalld防火牆管理工具中寫入使FTP協議永久生效的允許策略,然後在SELinux中放行FTP傳輸:
firewall-cmd --permanent --add-service=ftp

firewall-cmd --reload

setsebool -P ftpd_connect_all_unreserved=on
在這裏插入圖片描述

創建KickStart應答文件
畢竟,我們使用PXE + Kickstart部署的是一套“無人值守安裝系統服務”,而不是“無人值守傳輸系統光盤鏡像服務”,因此還需要讓客戶端主機能夠一邊獲取光盤鏡像,還能夠一邊自動幫我們填寫好安裝過程中出現的選項。簡單來說,如果生產環境中有100臺服務器,它們需要安裝相同的系統環境,那麼在安裝過程中單擊的按鈕和填寫的信息也應該都是相同的。那麼,爲什麼不創建一個類似於備忘錄的需求清單呢?這樣,在無人值守安裝系統時,可以從這個需求清單中找到相應的選項值,從而免去了手動輸入之苦,更重要的是,也徹底解放了人的干預,徹底實現無人值守自動安裝系統,而不是單純地傳輸系統光盤鏡像。

有了上文做鋪墊,相信大家現在應該可以猜到Kickstart其實並不是一個服務程序,而是一個應答文件了。是的!Kickstart應答文件中包含了系統安裝過程中需要使用的選項和參數信息,系統可以自動調取這個應答文件的內容,從而徹底實現了無人值守安裝系統。那麼,既然這個文件如此重要,該去哪裏找呢?其實在root管理員的家目錄中有一個名爲anaconda-ks.cfg的文件,它就是應答文件。下面將這個文件複製到vsftpd服務程序的工作目錄中(在開機選項菜單的配置文件中已經定義了該文件的獲取路徑,也就是vsftpd服務程序數據目錄中的pub子目錄中)。使用chmod命令設置該文件的權限,確保所有人都有可讀的權限,以保證客戶端主機可以順利獲取到應答文件及裏面的內容:

cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
在這裏插入圖片描述
Kickstart應答文件並沒有想象中的那麼複雜,它總共只有46行左右的參數和註釋內容,大家完全可以通過參數的名稱及介紹來快速瞭解每個參數的作用。在這裏挑選幾個比較有代表性的參數,其他參數建議大家自行修改測試。

首先把第6行的光盤鏡像安裝方式修改成FTP協議,仔細填寫好FTP服務器的IP地址,並用本地瀏覽器嘗試打開下檢查有沒有報錯。然後把第21行的時區修改成上海(Asia/Shanghai),最後再把29行的磁盤選項設置爲清空所有磁盤內容並初始化磁盤:

                           vim /var/ftp/pub/ks.cfg 

在這裏插入圖片描述

在這裏插入圖片描述

如果覺得系統默認自帶的應答文件參數較少,不能滿足生產環境的需求,則可以通過Yum軟件倉庫來安裝system-config-kickstart軟件包。這是一款圖形化的Kickstart應答文件生成工具,可以根據自己的需求生成自定義的應答文件,然後將生成的文件放到/var/ftp/pub目錄中並將名字修改爲ks.cfg即可。

自動部署客戶機

在按照上文講解的方法成功部署各個相關的服務程序後,就可以使用PXE + Kickstart無人值守安裝系統了。在採用下面的步驟建立虛擬主機時,一定要把客戶端的網卡模式設定成與服務端一致的“僅主機模式”,否則兩臺設備無法進行通信,也就更別提自動安裝系統了。其餘硬件配置選項並沒有強制性要求,大家可參考這裏的配置選項來設定。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

接下來的默認配置
在這裏插入圖片描述

設置網卡一致爲 vm1
在這裏插入圖片描述
啓動
在這裏插入圖片描述

現在,我們就同時準備好了PXE + Kickstart無人值守安裝系統與虛擬主機。在生產環境中,大家只需要將配置妥當的服務器上架,接通服務器和客戶端主機之間的網線,然後啓動客戶端主機即可。 ,開始傳輸光盤鏡像文件並進行自動安裝了—期間完全無須人工干預,直到安裝完畢時才需要運維人員進行簡單的初始化工作。

在這裏插入圖片描述
在這裏插入圖片描述
可以看到root密碼已經設置完畢
在這裏插入圖片描述

等待安裝完畢即可!

發佈了49 篇原創文章 · 獲贊 4 · 訪問量 2623
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章