08-無人值守自動批量安裝系統(上)


之前我們安裝系統都還是用光盤,后來光驅逐漸被淘汰,也就順應時事,開始使用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

 

 
       


免責聲明!

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



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