李志煒 田秀云
關(guān)鍵詞:自動(dòng)部署;Linux;PXE
0引言
互聯(lián)網(wǎng)從誕生開始,就打破了計(jì)算機(jī)各自獨(dú)立的局面,將無數(shù)的計(jì)算機(jī)連接成巨大的信息交互網(wǎng)絡(luò)。一方面網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都需要提供穩(wěn)定的服務(wù),一個(gè)節(jié)點(diǎn)可能就是由數(shù)十上百臺的服務(wù)器構(gòu)成,如果這些服務(wù)器需要完全一致的安裝設(shè)置和軟件配置,靠人員手動(dòng)操作效率太低和難免出錯(cuò)。另一方面,網(wǎng)絡(luò)的一端到另一端可能跨越半個(gè)地球,要想對相距遙遠(yuǎn)的兩臺服務(wù)器進(jìn)行統(tǒng)一的安裝和初始化,除了派送人員安裝,另外一個(gè)不錯(cuò)的方法就是利用覆蓋全球的網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程安裝。這就引出2個(gè)系統(tǒng)安裝的需求:能全自動(dòng)的對數(shù)十臺服務(wù)器做統(tǒng)一的安裝設(shè)置;能通過網(wǎng)絡(luò)對遠(yuǎn)程的服務(wù)器進(jìn)行安裝。PXE技術(shù)就完全滿足了這2個(gè)需求,PXE相較于前者有著不少的優(yōu)勢,使用PXE不需要額外添加硬件設(shè)備,在原有的網(wǎng)卡固件上就能實(shí)現(xiàn)。它解決了TFTP+BOOTP+DHCP方案不能提供定制設(shè)置的問題。另外小型化的PXE占用的資源很少。其能支持的客戶端很多,從功能完備、算力強(qiáng)大的大型計(jì)算機(jī)到功能專一且小巧的單片機(jī),都有很好的支持,本研究有一定的現(xiàn)實(shí)意義。
1整體方案
PXE需要DHCP服務(wù)的支持,DHCP給客戶端分配一個(gè)合法IP地址并告知TFTP的IP地址,使客戶端能從TFTP獲取引導(dǎo)文件pxelinux.O、內(nèi)核文件vmlinuz和initrd.img等。再根據(jù)菜單配置文件default提供的光盤鏡像文件和應(yīng)答文件在網(wǎng)絡(luò)中的位置,客戶端取得光盤鏡像,并根據(jù)應(yīng)答文件的設(shè)置進(jìn)行自動(dòng)安裝。最后運(yùn)行應(yīng)答文件中的初始化腳本,完成初始化。服務(wù)器響應(yīng)服務(wù)圖如圖1所示。
2PXE各個(gè)服務(wù)的具體部署
2.1PXE服務(wù)器提供DHCP服務(wù)
用命令yum-y install dhcp進(jìn)行DHCP服務(wù)的安裝,安裝后用命令rpm-q dhcp進(jìn)行確認(rèn)。DHCP配置文件的路徑/etc/dhcp/dhcpd.conf,下面幾個(gè)是配置DHCP的重要參數(shù)以及說明。
range dynamic-bootp 192.168.233.26 192.168.233.30.可分配給客戶端的lP范圍,將192.168.233.0網(wǎng)段中的26-30作為IP池。option routers 192.168.233.2,指定客戶端的網(wǎng)關(guān)。option domain-name-servers223.5.5.5,指定客戶端的DNS。default-lease-time21600,默認(rèn)租約時(shí)間,單位為s。max-lease-time43200,最大租約時(shí)間,單位為s。next-server192.168.233.50,TFFP服務(wù)器在內(nèi)網(wǎng)中的位置,即IP地址。filename”pxelinux.0”,引導(dǎo)文件的名稱??蛻舳藦腄HCP服務(wù)器(PXE服務(wù)器)中獲得IP地址192.168.233.26,并得知DHCP服務(wù)器的IP地址192.168.233.50和網(wǎng)關(guān)地址192.168.233.2。
2.2 PXE服務(wù)器提供Tbq'P服務(wù)
用命令yum-y install tftp-server進(jìn)行TFTP服務(wù)的安裝,安裝后用命令rpm-q trip-server進(jìn)行確認(rèn)。TFTP的配置文件為/ete/xinetd.d/tftp,其中參數(shù)server args=-s/var/lib/tftpboot,其含義為安裝所用到的引導(dǎo)文件和內(nèi)核文件等都是放在此目錄下的。安裝syslinux服務(wù),將/usr/share/syslinux/pxelinux.0復(fù)制到Tbq30根目錄。掛載光盤到空目錄,將內(nèi)核文件vmlinuz和initrd.img,菜單樣式文件vesamentL e32,窗口提示信息文件boot.msg復(fù)制到TFTP根目錄。最后將菜單配置文件isolinux.cfg復(fù)制到TFTP根目錄下的pxelinux.cfg目錄中,并重命名為default。
2.3 PXE服務(wù)器提供安裝源
(1)HTTP方式
用命令yum-y install httpd進(jìn)行安裝,安裝后用命令rpm-q httpd進(jìn)行確認(rèn)。默認(rèn)的http的主配置文件的路徑是/ete/httpd/eonf/httpd.eonf,http文件根目錄的位置是/var/www/html,此位置為掛載光盤鏡像的目錄,客戶端也從該目錄讀取鏡像文件來進(jìn)行安裝操作。接著用命令mount-bind/media//var/www/html/CentOS7/將/media的光盤映射再映射到空目錄CentOS7。客戶端通過HTTP服務(wù)器的IP地址就能進(jìn)入服務(wù)器,并且進(jìn)入的是文件根目錄/var/www/html/,在這個(gè)目錄下就有一個(gè)放著光盤鏡像的目錄CentOS7/。只需在網(wǎng)絡(luò)位置后指定CentOS7/目錄,即http://192.168.233.50/CentOS7/。用命令systemetlstart httpd.service和systemctl enable httpd.service,將HTTP服務(wù)啟動(dòng)并設(shè)為開機(jī)自啟動(dòng)。進(jìn)入配置文件default修改指定安裝源,替換原來的安裝源。appendinitrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet將上面內(nèi)容改為:append initrd=initrd.img inst.repo=http://192.168.233.50/CentOS。
(2)FFP方式
用命令yum-y install vsflpd進(jìn)行安裝,安裝后用命令rpm-q vsflpd進(jìn)行確認(rèn),用命令systemctl restartvsftpd啟動(dòng)vsflp服務(wù),并設(shè)置為開機(jī)自啟動(dòng)systemctlenable vsftpd。vsflp服務(wù)默認(rèn)的根目錄在/var/flp/,使用命令\cp-r/media//var/ftp/CentOS7/將光盤鏡像文件全部復(fù)制到vsftpd服務(wù)的根目錄的CentOS7/目錄下。與HTTP方式相同,通過FFP服務(wù)器獲取光盤鏡像的網(wǎng)絡(luò)位置為ftp://192.168.233.50/CentOS7/。修改default的指定安裝源的參數(shù),append initrd=initrd.img inst.repo=ftp://192.168.233.50/CentOS7
(3)NFS方式
用命令yum-y install nfs-utils進(jìn)行安裝,安裝后用命令rpm-q nfs-utils進(jìn)行確認(rèn)。
設(shè)置共享目錄,在系統(tǒng)根目錄新建/data/nfs/用于共享文件,接下來同F(xiàn)TP一樣復(fù)制光盤鏡像文件進(jìn)/data/nfs/CentOS7/目錄。為了讓這個(gè)共享目錄生效,需要在配置文件/etc/exports中聲明共享目錄的位置、可以訪問共享目錄的網(wǎng)段以及對應(yīng)的權(quán)限。寫出光盤鏡像文件的完整路徑/data/nfs/CentOS7。格式為nfs:[NFS服務(wù)器IP地址]:[光盤鏡像文件的絕對路徑],依照此格式將inst.stage2=hd:LABEL=CentOS\x207\x20x86_64修改為inst.repo=nfe:192.168.233.50:/data/nfs/CentOS7。
客戶端使用快照還原回剛配置好硬件的狀態(tài)。還原好后啟動(dòng)客戶端,等待請求IP、獲取引導(dǎo)文件、獲取菜單配置文件,進(jìn)入到菜單后選擇InstallCentOS 7,選擇語言后,INSTALLATION SOURCE(安裝源)變成了NFS Server 192.168.233.50,雖然在default中寫了光盤鏡像的絕對路徑,但這里也不會(huì)顯示出來。接下來進(jìn)行正常的安裝流程就可以了。
3應(yīng)答文件設(shè)計(jì)
Kickstart作為應(yīng)答文件無需額外安裝服務(wù),真正做到輕便。且Kickstart的功能十分強(qiáng)大,在Kickstart里面不僅能替代手工自動(dòng)完成在安裝頁面的設(shè)置,如設(shè)置語言、root用戶密碼、磁盤分區(qū),還能利用安裝源自定義安裝所需服務(wù)。甚至能攜帶腳本,并在系統(tǒng)安裝完成后自動(dòng)運(yùn)行這些腳本,這就給管理人員減少了很多不必要的重復(fù)工作。
4客戶端初始化設(shè)計(jì)
系統(tǒng)初始化要做的事主要有設(shè)置時(shí)問同步、安全策略、配置網(wǎng)卡、優(yōu)化內(nèi)核。這些都可以寫在應(yīng)答文件里面,在系統(tǒng)安裝完成后自動(dòng)執(zhí)行。也可以寫成一個(gè)獨(dú)立的初始化腳本,通過應(yīng)答文件下載和設(shè)置運(yùn)行時(shí)間。
5客戶端SSH免密設(shè)計(jì)
無論是通過SSH登錄客戶端,還是通過scp傳輸文件給客戶端,都需要輸入密碼,這是一種保障客戶端安全的措施。管理人員通過一臺管理終端管理數(shù)十臺客戶端,登錄管理終端這個(gè)過程已經(jīng)有足夠的安全保障,但批量管理客戶端還要反復(fù)輸入數(shù)十次密碼,這反倒降低了管理效率,所以需要客戶端對管理終端開啟SSH免密。
本研究將ssh-keygen生成的密鑰寫進(jìn)一個(gè)文件,再將文件發(fā)送給管理終端。先測試了scp命令在Kickstart腳本執(zhí)行的時(shí)候可以正常使用,再將文件里面的內(nèi)容寫進(jìn)管理終端的“密鑰庫”里面,這樣就完成了與ssh-copy-id 192.168.233.50相同的功能,實(shí)現(xiàn)了SSH免密。
6結(jié)束語
本文使用經(jīng)典的PXE+Kickstart方式實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)部署服務(wù)器,并使用HTFP、KIP和NFS作為安裝源,豐富了客戶端獲取光盤鏡像的來源,可以根據(jù)不同的服務(wù)需求和實(shí)際情況靈活選取安裝源。另外在應(yīng)答文件Kickstart中添加初始化腳本和SSH免密腳本,讓服務(wù)器在系統(tǒng)安裝完成后,自動(dòng)實(shí)現(xiàn)系統(tǒng)初始化,使服務(wù)器在短時(shí)間內(nèi)便可投人生產(chǎn)環(huán)境。SSH免密腳本也可在系統(tǒng)安裝后自動(dòng)運(yùn)行,為統(tǒng)一管理服務(wù)器搭好橋梁,減少了后期的人員操作,提高了服務(wù)器的管理效率。