之前我們安裝系統都還是用光盤,后來光驅逐漸被淘汰,也就順應時事,開始使用U盤安裝;但是在企業中,這個方式需要將刻錄好系統的U盤插在每台需要安裝系統的服務器上;所以,為了更加便捷快速,節約時間;也就開始使用批量安裝系統,並行網絡安裝
無人值守自動批量安裝系統(上)中需要使用到的服務:PXE + Kickstart + DHCP + TFTP + FTP
其原理相對來說也還是較為簡單的,以下這幅圖就可大致了解:
整個架構:PXE + Kickstart + DHCP + TFTP + FTP
PXE;PXE 並不是一種安裝方式,而是一種引導的方式,所以需要網卡支持網絡引導
PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的技術,工作於Client/Server的網絡模式,
PXE客戶端會調用網際協議(IP)、用戶數據報協議(UDP)、動態主機設定協議(DHCP)、小型文件傳輸協議(TFTP)等網絡協議;
KickStart:是一個項目,不是軟件
工作原理就是記錄安裝過程中所需人工干預填寫的各種參數,並生成一個名為 ks.cfg的文件;然后在安裝過程中當出現要求填寫參數的情況時,安裝程序會首先去查找 ks.cfg讀取設置
而后由DHCP服務提供IP地址,TFTP提供啟動文件(pxelinux.0 ;isolinux/* ;pxelinux.cfg/default),FTP提供自動應答文件下載和安裝系統所需的所有rpm包
雖然看着架構需要的服務挺多的,但是所有的服務都可以由一台服務器來提供,節省資源
[root@ks-server ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@ks-server ~]# uname -r 3.10.0-862.el7.x86_64 [root@ks-server ~]# uname -i x86_64 [root@ks-server ~]# uname -n ks-server
外網IP
10.0.0.101
內網IP
172.16.1.101
一、准備ks.cfg文件;
第一種方案如果有安裝圖形化界面可以使用圖形界面來生成:
[root@ks-server ~]# system-config-kickstart
bash: system-config-kickstart: command not found...
[root@ks-server ~]# yum intsall system-config-kickstart
這就是圖形配置界面,如果發現軟件包這塊是空白無法選擇的話,可以將yum源更改為本地源
,並且請將倉庫ID設置為[development] (試過其他的無效)
yum remove -y system-config-kickstart
yum clean all
yum makecache
yum install -y system-config-kickstart
system-config-kickstart
重新安裝運行即可
第二種方案:其實在安裝系統的時候,系統就已經自動替我們保存了一份;就是/root家目錄下的anaconda-ks.cfg
只需要對這個配置文件稍加修改即可
第三種方案:完全自己手動編寫一個方案
推薦對ks.cfg配置文件熟悉,但是也無需每次批量安裝的時候都重新編寫,可以留存一個模板,然后根據實際需求稍加修改,這樣會省時省力些!
ks.cfg的組成:
命令段
包組段
以%packages開頭,以%end結束
腳本段
以%post開頭,以%end結束,在安裝完系統之后執行的相關Linux命令、腳本
以%pre開頭,以%end結束,在安裝完系統之前執行的相關Linux命令、腳本
設置root密碼最好使用密文,增加安全性:python -c 'import crypt; print(crypt.crypt("密碼"))'
或 try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
編寫好ks配置文件后可用ksvalidator 來檢查語法
yum install pykickstart
ksvalidator ks.cfg
二、DHCP服務
[root@ks-server ~]# yum install dhcp -y #安裝服務 [root@ks-server ~]# grep -vE "#|^$" /usr/share/doc/dhcp*/dhcpd.conf.example #默認的模板配置文件
這里我們只需一個subnet段即可,最簡單的配置
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.200; # 可分配的起始IP-結束IP option subnet-mask 255.255.255.0; # 設定netmask default-lease-time 21600; # 設置默認的IP租用期限 max-lease-time 43200; # 設置最大的IP租用期限 next-server 172.16.1.101; # 告知客戶端TFTP服務器的ip filename "/pxelinux.0"; # 告知客戶端從TFTP根目錄下載pxelinux.0文件 }
[root@ks-server ~]# cat /etc/dhcp/dhcpd.conf subnet 172.16.1.0 netmask 255.255.255.0 { range 172.16.1.150 172.16.1.200; option subnet-mask 255.255.255.0; default-lease-time 21600; max-lease-time 43200; next-server 172.16.1.101; filename "/pxelinux.0"; }
啟動服務:
[root@ks-server ~]# systemctl start dhcpd
三、TFTP服務器
安裝tftp服務
[root@ks-server ~]# yum -y install tftp-server
修改配置文件
vim /etc/xinetd.d/tftp disable = no #將原先的disable = yes更改為disable = no
拷貝所需文件
[root@ks-server ~]# yum -y install syslinux
[root@ks-server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@ks-server ~]# mount /dev/sr0 /mnt
[root@ks-server ~]# cp /mnt/isolinux/* /var/lib/tftpboot/
[root@ks-server ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@ks-server ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
tftp服務最終目錄顯示
[root@ks-server ~]# tree -F /var/lib/tftpboot/ /var/lib/tftpboot/ ├── boot.cat ├── boot.msg ├── grub.conf ├── initrd.img ├── isolinux.bin ├── isolinux.cfg ├── memtest ├── pxelinux.0 ├── pxelinux.cfg/ │ └── default ├── splash.png ├── TRANS.TBL ├── vesamenu.c32 └── vmlinuz* 1 directory, 13 files
啟動服務
[root@ks-server ~]# systemctl start tftp.socket
四、FTP服務
安裝服務
[root@ks-server ~]# yum install vsftpd -y
拷貝所需的rpm包等文件
[root@ks-server pub]# cp -a /mnt/ /var/ftp/pub/
拷貝ks文件
[root@ks-server ~]# cp anaconda-ks.cfg /var/ftp/pub/ [root@ks-server ~]# cd /var/ftp/pub/ [root@ks-server pub]# mv anaconda-ks.cfg ks.cfg
[root@ks-server pub]# mv anaconda-ks.cfg ks.cfg
[root@ks-server pub]# vim ks.cfg
#cdrom #這里將cdrom指向ftp共享的路徑
url --url="ftp://172.16.1.101/pub/mnt/"
啟動服務
[root@ks-server ~]# systemctl start vsftpd
[root@ks-server ~]# setenforce 0
[root@ks-server ~]# systemctl stop firewalld
五、編輯default文件
[root@ks-server pub]# cat -n /var/lib/tftpboot/pxelinux.cfg/default 61 label linux 62 menu label ^Install CentOS 7 63 kernel vmlinuz 64 #append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet 65 append initrd=initrd.img inst.repo=ftp://172.16.1.101/pub/mnt inst.ks=ftp://172.16.1.101/pub/ks.cfg 66
將label linux的append那一行配置文件修改,ks文件指向正確的位置;rpm等文件正確的位置指向
這個配置文件就是開始時的選擇
默認600即60秒
六、開始測試安裝
出現錯誤
如果出現這個錯誤,基本上都是共享文件服務(FTP/HTTP/NFS)出現了問題,所以需要確保selinux,防火牆都不是影響因素
服務是否開啟
而有地址指向的配置文件也需要確保;ks.cfg以及default是否寫錯
權限是否存在問題
這里上面ks文件權限沒給,chmod -R 777 /var/ftp/pub/
還有一個問題就是內存不能給的過小,至少2G
要詳細過程可以用抓包的方式獲取
yum install wireshark -y #安裝抓抓包件 tshark -ni 網卡名 #抓包
還可以監控日志
tail -f /var/log/messages