使用 PXE+Kickstart 實現無人值守批量部署系統

1、廢話兩句

在雲數據中心,一次幾十臺甚至幾百臺服務器上線,系統安裝將變得很是繁瑣,系統安裝好了後還會涉及不少配置,若是一臺臺來安裝的話工做量很是大。(雖然有加班費,開個玩笑)
爲了解決這個問題,咱們須要實現無人值守批量部署系統。html

 簡單看一下拓撲圖:linux

1. 什麼是PXE?

 簡單來講:PXE主要是引導做用,具體的詳細信息這裏就很少說了,詳情百度便可。ios

PXE引導流程:vim

 

2. 什麼是Kickstart?

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

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

 

2、環境準備

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

3、準備工做

若是當初已是圖形化安裝了,則不須要該步驟。
生成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源:url

[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      // 重啓機器

4、安裝須要服務

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. 安裝好後驗證腳本信息

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

5、你可能會出現的問題

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

解決辦法:

檢查yum源配置是否爲: [development] ,配置好後,從新打開kickstart配置窗口便可。如圖:

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

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

解決辦法:

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

相關文章
相關標籤/搜索