一、廢話兩句 在雲數據中心,一次幾十臺甚至幾百台伺服器上線,系統安裝將變得非常繁瑣,系統安裝好了後還會涉及很多配置,如果一臺台來安裝的話工作量非常大。(雖然有加班費,開個玩笑)為瞭解決這個問題,我們需要實現無人值守批量部署系統。 簡單看一下拓撲圖: 1. 什麼是PXE? 簡單來說:PXE主要是引導作 ...
一、廢話兩句
在雲數據中心,一次幾十臺甚至幾百台伺服器上線,系統安裝將變得非常繁瑣,系統安裝好了後還會涉及很多配置,如果一臺台來安裝的話工作量非常大。(雖然有加班費,開個玩笑)
為瞭解決這個問題,我們需要實現無人值守批量部署系統。
簡單看一下拓撲圖:
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的記憶體。