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