我之前都是使用光碟鏡像來安裝Linux系統的方法,坦白講,該方法適用於只安裝少量Linux系統的情況。如果生產環境中有數百臺伺服器都需要安裝系統,這種方式就不合時宜了。這時,我們就需要使用PXE + TFTP +FTP + DHCP + Kickstart服務搭建出一個無人值守安裝系統。這種無人值守安裝系統可以自動地為數十臺伺服器安裝系統,大大提升了系統安裝的效率。
無人值守安裝系統的工作流程如圖所示
一、配置DHCP服務程序
當掛載好光碟鏡像並把Yum倉庫文件配置妥當後,就可以安裝DHCP服務程序軟體包了。
[root@pengqi ~]# yum -y install dhcp我們在這裡使用的配置文件有兩個主要區別:允許了BOOTP引導程序協議,旨在讓區域網內暫時沒有作業系統的主機也能獲取靜態IP位址;在配置文件的最下面加載了引導驅動文件pxelinux.0(這個文件會在下面的步驟中創建),其目的是讓客戶端主機獲取到IP位址後主動獲取引導驅動文件,自行進入下一步的安裝過程。
[root@pengqi ~]# vim /etc/dhcp/dhcpd.confallow booting;allow bootp;ddns-update-style interim;ignore client-updates;subnet 192.168.10.0 netmask 255.255.255.0{ option subnet-mask 255.255.255.0; option domain-name-servers 192.168.10.10; range dynamic-bootp 192.168.10.100192.168.10.200; default-lease-time 21600; max-lease-time 43200; next-server 192.168.10.10; filename "pxelinux.0";在確認DHCP服務程序的參數都填寫正確後,重新啟動該服務程序。
[root@pengqi ~]# systemctl restart dhcpd二、配置TFTP服務
vsftpd是一款功能豐富的文件傳輸服務程序,允許用戶以匿名開放模式、本地用戶模式、虛擬用戶模式來進行訪問認證。但是,當前的客戶端主機還沒有安裝作業系統,該如何進行登錄認證呢?而TFTP作為一種基於UDP協議的簡單文件傳輸協議,不需要進行用戶認證即可獲取到所需的文件資源。因此接下來配置TFTP服務程序,為客戶端主機提供引導及驅動文件。當客戶端主機有了基本的驅動程序之後,再通過vsftpd服務程序將完整的光碟鏡像文件傳輸過去。
[root@pengqi ~]# yum -y install tftp-serverTFTP是一種非常精簡的文件傳輸服務程序,它的運行和關閉是由xinetd網絡守護進程服務來管理的。xinetd服務程序會同時監聽系統的多個埠,然後根據用戶請求的埠號調取相應的服務程序來響應用戶的請求。需要開啟TFTP服務程序,只需在xinetd服務程序的配置文件中把disable參數改成no就可以了。保存配置文件並退出,然後重啟xinetd服務程序,並將其加入到開機啟動項中(在RHEL 7系統中,已經默認啟用了xinetd服務程序,因此在將其添加到開機啟動項中的時候沒有輸出信息屬於正常情況)。
[root@pengqi ~.d]# vim /etc/xinetd.d/tftpservice tftp{ socket_type = dgram protocol = udp wait=yes user = root server =/usr/sbin/in.tftpd server_args =-s /var/lib/tftpboot disable = no per_source =11 cps =1002 flags =IPv4[root@pengqi xinetd.d]# systemctl restart xinetdBash
[root@pengqi ~]# firewall-cmd --permanent --add-port=69/udp三、配置SYSLinux服務
[root@pengqi ~]# yum -y install syslinux[root@pengqi ~]# cd /var/lib/tftpboot[root@pengqi tftpboot]# cp /usr/share/syslinux/pxelinux.0.[root@pengqi tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}.[root@pengqi tftpboot]# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg}.[root@pengqi tftpboot]# mkdir pxelinux.cfg[root@pengqi tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/ default現在我們編輯這個default文件,把第1行的default參數修改為linux,這樣系統在開機時就會默認執行那個名稱為linux的選項了。對應的linux選項大約在64行,我們將默認的光碟鏡像安裝方式修改成FTP文件傳輸方式,並指定好光碟鏡像的獲取網址以及Kickstart應答文件的獲取路徑:
[root@lpengqi tftpboot]# vim pxelinux.cfg/default1 default linux64 append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet四、配置vsftpd服務
在這套無人值守安裝系統的服務中,光碟鏡像是通過FTP協議傳輸的,因此勢必要用到vsftpd服務程序。
[root@pengqi ~]# yum -y install vsftpd在確認系統光碟鏡像已經正常掛載到/media/cdrom目錄後,把目錄中的光碟鏡像文件全部複製到vsftpd服務程序的工作目錄中。
[root@pengqi ~]# cp -r /media/cdrom/*/var/ftp五、創建KickStart應答文件
其實在root管理員的家目錄中有一個名為anaconda-ks.cfg的文件,它就是應答文件。下面將這個文件複製到vsftpd服務程序的工作目錄中(在開機選項菜單的配置文件中已經定義了該文件的獲取路徑,也就是vsftpd服務程序數據目錄中的pub子目錄中)。使用chmod命令設置該文件的權限,確保所有人都有可讀的權限,以保證客戶端主機可以順利獲取到應答文件及裡面的內容:
[root@pengqi ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg[root@pengqi ~]# chmod +r /var/ftp/pub/ks.cfg首先把第6行的光碟鏡像安裝方式修改成FTP協議,仔細填寫好FTP伺服器的IP位址,並用本地瀏覽器嘗試打開下檢查有沒有報錯。然後把第21行的時區修改成上海(Asia/Shanghai)。
[root@pengqi ~]# vim /var/ftp/pub/ks.cfg 1#version=RHEL72# System authorization information3 auth --enableshadow --passalgo=sha512 45# Use CDROM installation media6 url --url=ftp://192.168.10.1019 rootpw --iscrypted $6$pDjJf42g8C6pL069$iI.PX/yFaqpo0ENw2pa7MomkjLyoae2zjMz2 UZJ7b H3UO4oWtR1.Wk/hxZ3XIGmzGJPcs/MgpYssoi8hPCt8b/20# System timezone21 timezone Asia/Shanghai--isUtc六、最後部署客戶機測試
在按照上文講解的方法成功部署各個相關的服務程序後,就可以使用PXE + Kickstart無人值守安裝系統了。在採用下面的步驟建立虛擬主機時,一定要把客戶端的網卡模式設定成與服務端一致的「僅主機模式」,否則兩臺設備無法進行通信,也就更別提自動安裝系統了。其餘硬體配置選項並沒有強制性要求,大家可參考這裡的配置選項來設定。
現在,我們就同時準備好了PXE + Kickstart無人值守安裝系統與虛擬主機。接下來就會按照圖那樣,開始傳輸光碟鏡像文件並進行自動安裝了—期間完全無須人工幹預,直到安裝完畢時才需要人員進行簡單的初始化工作。