Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)

一、PXE服務簡介:

PXE(preboot execute environment)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持來自網絡的操作系統的啓動過程,其啓動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啓動軟件包到本機內存中並執行,由這個啓動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。在Linux中有多種的安裝方式:HD、USB、CDROM、PXE及遠程管理卡等。在我們的系統運維的生涯中,經常要安裝操作系統,然而我們維護的機器不是一兩臺而已,一般的企業服務器數量都在幾十、幾百、幾千、甚至上萬臺。這麼多的機器,如果人工的一臺一臺去安裝,那我們這些運維人員,可能要把大部分時間都花費在了安裝系統上,所以,我們一般都會建立一個PXE服務器,通過網絡來批量部署系統。

二、PXE部署系統自動化安裝流程

(1) 設置擁有pex功能的客戶端主機開機啓動項爲網絡啓動,一般默認都此選項,如果沒有可自行設置bios啓動項
(2) 客戶端開機之後進入網絡啓動,此時客戶端沒有IP地址需要發送廣播報文(pxe網卡內置dhcp客戶端程序),dhcp服務器相應客戶端請求,分配給客戶端相應的IP地址與掩碼等信息
(3) 客戶端得到IP地址之後,與tftp通信,下載pxelinux.0,default文件,根據default指定的vmlinuz,initrd.img啓動系統內核,並下載指定的ks.cfg文件
(4) 根據ks.cfg文件去文件共享服務器(http/ftp/nfs)上面下載RPM包開始安裝系統,注意此時的文件服務器是提供yum服務器的功能的。

環境搭建部署:

環境:Centos7.0 (VM)

關閉防火牆systemctl stop firewalld,臨時關閉selinuxsetenforce 0
首先我們在服務端一次性裝完所需要用到的包,配置本地yum源我參考我之前寫的文章centos7配置本地yum源

yum install dhcp vsftpd xinetd tftp tftp-server syslinux -y

Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)
如圖顯示,安裝完畢
接下來我們配置DHCP服務

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf  ##覆蓋,然後y
vim /etc/dhcp/dhcpd.conf
#以下是配置的內容,按照自己的環境配置
    subnet 10.30.40.0 netmask 255.255.255.0 {
      range 10.30.40.95 10.30.40.100;
      option domain-name-servers 10.30.40.4;
      option routers 10.30.40.1;
      option broadcast-address 10.30.40.255;
      default-lease-time 600;
      max-lease-time 7200;
      next-server 10.30.40.4;  #本機ip
      filename "pxelinux.0"; #必填,最後別忘記分號啊
    }

systemctl restart dhcpd #重啓dhcp服務


配置完了DHCP,我們接下來配置TFTP

vim /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot #可自定義修改路勁
        disable                 = no #修改這裏,yes改爲no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

接下來就是引導文件的一些操作了

#我們需要將引導文件複製到tftp目錄下(這裏我使用的是tftp默認路勁)
#注意:下面的mnt目錄是我本地光盤掛載的目錄,你們如果跟我掛載的目錄不一樣,也需要修改成你們自己所掛載的目錄
[root@localhost ~] cd /var/lib/tftpboot/
[root@localhost tftpboot] cp /usr/share/syslinux/pxelinux.0 .
[root@localhost tftpboot] cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .    
[root@localhost tftpboot] cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
[root@localhost tftpboot] mkdir pxelinux.cfg
[root@localhost tftpboot] cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

然後我們修改我們剛剛複製的default文件

vim pxelinux.cfg/default
    default linux #第一行
    label linux
      menu label ^Install CentOS 7
      kernel vmlinuz
      append initrd=initrd.img text ks=ftp://10.30.40.4/ks.cfg #64行

Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)
修改完成以後,我們把本地的自動安裝文件複製到ftp的默認目錄下

[root@localhost ~] cd /var/ftp/
[root@localhost ~] cp /root/anaconda-ks.cfg ks.cfg
[root@localhost ~] vim ks.cfg ##編輯五六行
        # Use CDROM installation media
    url --url="ftp://10.30.40.4/pub" #必須修改,跟下面掛載目錄對應
    ------------
    %packages
    @core
    @base #加個包
    %end

Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)
接下來我們將我們的鏡像掛載到/var/ftp/pub目錄(可以同時掛到兩個目錄)

[root@localhost ftp] mount /dev/cdrom /var/ftp/pub/
    mount: /dev/sr0 is write-protected, mounting read-only

然後重啓所有的服務

[root@localhost ~] systemctl restart dhcpd
[root@localhost ~] systemctl restart xinetd
[root@localhost ~] systemctl restart tftp.socket #重要!!!
[root@localhost ~] systemctl restart tftp
[root@localhost ~] systemctl restart vsftpd

測試

Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)
獲取IP的過程,一閃而過
Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)
大概也就是怎麼個情況
Centos7下無人值守安裝部署(PXE + DHCP+TFTP+ Kickstart+FTP)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章