【超級詳細】使用 PXE+Kickstart 實現無人值守批量部署系統


一、廢話兩句

在雲數據中心,一次幾十台甚至幾百台服務器上線,系統安裝將變得非常繁瑣,系統安裝好了后還會涉及很多配置,如果一台台來安裝的話工作量非常大。(雖然有加班費,開個玩笑)
為了解決這個問題,我們需要實現無人值守批量部署系統。

 簡單看一下拓撲圖:

1. 什么是PXE?

 簡單來說:PXE主要是引導作用,具體的詳細信息這里就不多說了,詳情百度即可。

PXE引導流程:

 

2. 什么是Kickstart?

簡單兩句就是:Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種參數;
比如:我們安裝系統的時候需要分區、設置時區、設置root密碼、安裝后執行的腳本等等,這些操作都記錄下來並生成一個名為ks.cfg的文件。

PXE+Kickstart 無人值守安裝操作系統完整過程:

 

二、環境准備

操作系統:CentOS 7.4 (最小化安裝)
實驗平台:VMware Workstation 14
網絡模式:NAT模式
服務器IP地址:192.168.115.21
防火牆:關閉
SElinux=Disable

三、准備工作

如果當初已經是圖形化安裝了,則不需要該步驟。
生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依賴於X Windows,所以我們需要安裝X Windows 和Desktop 並重啟系統,操作如下:

i. 掛載光盤:

[root@localhost ~]# mkdir /mnt/cdrom [root@localhost ~]# mount /dev/cdrom /mnt/cdrom

 

ii. 配置本地yum源:

[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo ------------------------------------------------------ [development] # 名稱必須為 “development”,否則到后面kickstart配置會出現軟件包選擇出現沒有軟件包信息 name=redhat baseurl=file:///mnt/cdrom
gpgcheck=0

iii. 安裝圖形化:

[root@localhost ~]# yum groupinstall "Server with GUI" -y [root@localhost ~]# systemctl set-default graphical.target  // 設置默認啟動到圖形界面
[root@localhost ~]# reboot      // 重啟機器

四、安裝需要服務

1. 配置DHCP

i. 安裝DHCP服務

[root@localhost ~]# yum install dhcp -y

ii. 修改/etc/dhcp/dhcpd.conf 配置文件

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf ------------------------- 配置如下 ------------------------------- subnet 192.168.115.0 netmask 255.255.255.0 {    //所在網段
range 192.168.115.100 192.168.115.199;          //分配IP地址范圍
option subnet-mask 255.255.255.0;              //給客戶端設置子網掩碼(netmask)
default-lease-time 21600;           //設置默認的IP租期時間
max-lease-time 43200;               //設置最大的IP租期時間
next-server 192.168.115.21;         //tfp服務端IP地址
filename "/pxelinux.0";             //網絡引導程序
}

iii. 啟動DHCP服務

[root@localhost ~]# systemctl start dhcpd [root@localhost ~]# systemctl enable dhcpd

iv. 測試DHCP是否成功

新建一個虛擬機進行測試,如下圖可以看出已經成功獲取IP地址和其他信息了。

2. 配置TFP

 i. 安裝TFP、Xinetd

[root@localhost ~]# yum install tftp-server xinetd -y

ii. 修改配置文件

[root@localhost ~]# vim /etc/xinetd.d/tftp -------------- 省略配置信息,看下圖 ------------- 將 disable 設置為 no

iii. 啟動服務

因為 tftp 服務是掛載在超級進程 xinetd 下的,所以通過啟動 xinetd 來啟動 tftp 服務。

[root@localhost ~]# systemctl start xinetd [root@localhost ~]# systemctl enable xinetd

iv. 檢查服務是否啟動成功

[root@localhost ~]# netstat -ntulp | grep 69 udp 0      0 0.0.0.0:69        0.0.0.0:*        2817/xinetd

3. 安裝Syslinux

i. 安裝syslinux只是為了要 pxelinux.0 引導加載程序,沒有別的用意。

[root@localhost ~]# yum install selinux -y

ii. 復制pxelinux.0 文件至/var/lib/tftpboot/ 文件夾中

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

iii. 拷貝光盤里的配置文件

[root@localhost ~]# cp /mnt/cdrom/isolinux/* /var/lib/tftpboot/

iv. 驗證改步驟是否成功

將新建的測試虛擬機重啟,就可以看到該界面了。

4. 配置HTTP

i. 安裝HTTP

系統的安裝方式可以選擇HTTP、FTP、 NFS,我們這里介紹HTTP方式的安裝,其他兩種方式的安裝,大家可以自行百度。

[root@localhost ~]# yum install httpd  -y

ii. 啟動HTTP

[root@localhost ~]# systemctl start httpd [root@localhost ~]# systemctl enable httpd

iii. 復制光盤全部內容至http 的根目錄/var/www/html/pub 下

[root@localhost ~]# mkdir /var/www/html/pub [root@localhost ~]# cp -r /mnt/cdrom/ /var/www/html/pub

iv. 測試改步驟是否成功

5. 配置kickstart

i. 安裝kickstart

[root@localhost ~]# yum install system-config-kickstart -y

ii. 在桌面環境下配置Kickstart,生成ks.cfg 文件

[root@localhost ~]# system-config-kickstart

A. 設置語言,鍵盤,時區,Root密碼,安裝完畢后重啟等。

B. 設置安裝方式,這篇文章介紹的是HTTP方式的安裝。

C. 安裝MBR

D. 設置分區

E. 配置網絡

F. 認證配置

G. SELinux 和防火牆配置

H. 圖形環境配置

I. 軟件包安裝選擇

注:如果你的軟件列表沒有信息,解決該問題看后面部分,如下圖:

J. 安裝后腳本

K. 保存導出配置文件

iii. 復制到HTTP下的ks目錄

[root@localhost ~]# mkdir /var/www/html/ks
[root@localhost ~]# cp ks.cfg  /var/www/html/ks/

iv. 驗證改步驟

6. 修改default

i. 創建配置文件夾

[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg

ii. 復制配置文件

[root@localhost ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
----------------------- 修改配置如下 --------------------------
label linux
  menu label ^Install PXE+Kickstart_RedHat7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0

參數解釋:

append initrd=initrd.img ks     // 存放ks配置文件的服務器地址和路徑,通過該路徑找到對應的ks.cfg文件來引導系統安裝
ksdevice=eth0                   // 指定該網卡進行ks的數據交互(可忽略)
net.ifnames=0 biosdevname=0     // 修改內核參數,讓網卡命名變為ethXX

iii. 開機驗證(需要手動選擇安裝)

iv. 全自動化安裝,無需手動選擇安裝

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
--------------------------------------------------------------
default linux            # 在配置文件第一行找到default,加上label的名稱即可。
label linux
  menu label ^Install PXE+Kickstart_RedHat7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0

v. 安裝好后驗證腳本信息

到此就完成了無人值守批量部署系統,收工下班。

五、你可能會出現的問題

1. 配置kickstart時,軟件包選擇出現沒有軟件包信息,如下圖:

解決辦法:

檢查yum源配置是否為: [development] ,配置好后,重新打開kickstart配置窗口即可。如圖:

2. 配置好后,進行自動化部署的時候出現如下報錯信息,如下圖:

"/sbin/dmsquash-live-root: line 273: write error: No space left on device"

解決辦法:

檢查虛擬機或服務器的內存大小,RedHat7.3以上的版本進行Kickstart安裝需要分配至少2GB的內存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM