1.2 無人職守自動安裝Linux操作系統
1.2.1 大規模部署案例
目前行業中普遍採用的解決方案是通過網絡方式安裝並結合自動應答文件,實現無人職守自動安裝部署操作系統。這種安裝方式需要我們配置至少一臺安裝服務器,所有需要安裝系統的客戶端通過網絡的方式連接服務器端啓動安裝程序,再根據服務器中存放的自動應答文件實現大規模自動安裝部署系統。整體環境的拓撲結構如圖所示。
這種無人職守的解決方案需要提前部署一臺包括DHCP、TFTP、NFS等服務的安裝服務器。
安裝部署流程爲:客戶端首先需要在BIOS中設置通過網絡啓動,當客戶端啓動後,就會通過發送廣播包的方式尋找DHCP服務器,如果找到DHCP服務器,即可向該服務器申請獲得包括IP地址在內的網絡參數等,並通過DHCP獲得TFTP的位置,當客戶端獲得TFTP服務器的地址後,即可從TFTP服務
器上將啓動文件下載至本機內存並運行,最終實現無盤啓動的功能。我們可以在啓動文件中設置Kickstart文件共享的位置,這樣客戶端啓動後,即可自動尋找Kickstart文件實現無人職守安裝系統。注意,Kickstart文件事先需要通過網絡共享。在Kickstart文件中描述瞭如何安裝設置操作系統,運行部署腳本等。
1.2.2 PXE簡介
PXE是由Intel公司開發的基於客戶端/服務器模式的一種技術,其核心功能是讓客戶端通過網絡從遠端服務器下載啓動鏡像,從而實現網絡啓動。整個過程中,客戶端要求服務器分配IP地址,再用TFTP協議下載位於服務器上的啓動鏡像到本機內存中並執行,由這個啓動文件完成客戶端基本軟件的設置。
1.2.3 Kickstart技術
Kickstart安裝是目前主要的一種無人職守自動部署安裝操作系統的方式,使用這種技術,我們可以很輕鬆地實現自動安裝及配置操作系統。這種技術的核心是自動應答文件(Kickstart文件),即將本來在安裝過程中需要我們手動設置的語言、密碼、網絡參數等通過讀取自動應答文件實現自動設置。
Kickstart文件可以通過如下三中方式生成:手動書寫;通過System-config-Kickstart圖形工具;通過紅帽的安裝程序Anaconda自動生成。
1.2.4 配置安裝服務器
1. DHCP服務
DHCP服務器主要實現在企業內部網絡爲客戶端分配IP地址等網絡參數。在我們的無人職守環境中,當客戶端選擇從網絡啓動後,就會通過發送廣播數據包的形式尋找DHCP服務器,從DHCP服務器獲得IP地址等參數後纔可以通過TFTP共享讀取啓動文件。
2. TFTP服務
TFTP服務器爲客戶端提供一種簡單的文件共享。
3. NFS服務
NFS是Network File System的簡寫,即網絡文件系統。
1.2.5 自動化安裝案例
安裝服務器的IP地址爲192.168.0.254,主機名爲instructor.example.com
1.安裝部署DHCP服務器
[root@instructor ~]# yum -y install dhcp [root@instructor ~]# vim /etc/dhcp/dhcpd.conf # dhcpd.conf # Sample configuration file for ISC dhcpd # option definitions common to all supported networks... log-facility local7; # A slightly different configuration for an internal subnet. subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.100; option domain-name "example.com"; option domain-name-servers 192.168.0.254; option routers 192.168.0.254; default-lease-time 600; max-lease-time 7200; next-server 192.168.0.254; filename "pxelinux.0"; } [root@instructor ~]# service dhcpd restart [root@instructor ~]# chkconfig dhcpd on
Subnet指定爲哪個網段分配網絡參數,range設置爲客戶端分配的IP地址池(一個地址區間),domain-name-server設置爲客戶端分配的DNS服務器地址,routers設置爲客戶端分配的網關地址,對網絡啓動至關重要的參數是next-server和filename,從安裝部署流程可以看出,客戶端啓動計算機通過DHCP獲得IP地址後,還需要從TFTP下載啓動文件,而next-server設置的即TFTP服務器的地址,filename設置的是在該TFTP文件服務器上共享的啓動文件名稱,客戶端通過這兩個參數連接TFTP服務器,並從中下載啓動文件。
2.安裝部署TFTP服務器
[root@instructor ~]# yum -y install tftp-server [root@instructor ~]# 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 per_source = 11 cps = 100 2 flags = IPv4 }
默認的TFTP配置文件爲/etc/xinetd.d/tftp,在該文件中,disable的默認值爲yes,即該服務爲禁用狀態,需要手動修改其值爲no來啓動TFTP服務。另外,該配置文件中server_args的值定義了共享的目錄,也就是我們的共享文件要放置的目錄路徑。
3.將客戶端所需啓動文件複製到TFTP服務器
[root@instructor ~]# yum -y install syslinux [root@instructor ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
從光盤中複製啓動鏡像文件和啓動配置文件至TFTP共享目錄(此實驗光盤文件路徑爲/123)
[root@instructor ~]# cp /123/isolinux/{vmlinuz,initrd.img,vesamenu.c32,splash.jpg} /var/lib/tftpboot/ [root@instructor ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@instructor ~]# cp /123/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default [root@instructor ~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
修改啓動配置文件如下:
[root@instructor ~]# vim /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.3! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=nfs:192.168.0.254:/ks/ks.cfg label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append - [root@instructor ~]# service xinetd restart [root@instructor ~]# chkconfig xinetd on
配置說明:default指定默認引導方式。
4.創建kickstart自動應答文件
[root@instructor ~]# yum -y install system-config-kickstart [root@instructor ~]# mkdir /ks/ [root@instructor ~]# system-config-kickstart
配置說明:配置語言爲英文,鍵盤設置爲美式鍵盤,時區爲亞洲/上海,root管理員密碼。
配置說明:配置安裝方式可以選擇爲全新安裝或升級安裝,本例選擇全新安裝,設置安裝過程中所需安裝文件(centos 6.3 系統光盤裏的內容)通過NFS共享讀取,這裏的NFS服務器爲192.168.0.254,共享目錄爲/123。
配置說明:此處配置系統引導程序,安裝方式選擇全新安裝GRUB引導程序,GRUB引導密碼未設置,將系統引導程序安裝於MBR區域,內核參數未設置任何特殊參數。
配置說明:分區選擇移除所有的現有分區後重新分區,並初始化磁盤標籤。(這裏通過圖形生成的Kickstart文件無法使用LVM邏輯卷分區,如果需要使用LVM邏輯卷分區,則要手動修改生成後的Kickstart文件)
配置說明:單擊Add Network Device按鈕添加網絡設備eth0,並設置爲通過DHCP獲得網絡參數。
配置說明:這裏是認證設置,所以的用戶密碼都使用SHA512算法加密。(如果需要將本機加入活動目錄,可以修改LDAP參數加入活動目錄)
配置說明:這裏的SELinux與防火牆均被設置爲激活狀態,並設置防火牆開放HTTP與SSH服務。
配置說明:顯示配置項目,這裏勾選安裝圖形環境。
配置說明:安裝軟件時需要根據實際需要有選擇地安裝,每個軟件包組裏有很多豐富的軟件,可以通過Optional packages查看詳細信息。
配置說明:Pre-Installation Script可以寫入在安裝前需要運行的腳本。
配置說明:Post-Installation Script可以寫入在安裝後需要運行的腳本,常用腳本爲創建YUM源、初始化用戶帳號、部署軟件服務等。所以配置選項設置完成後,通過File菜單中的Save保存生成Kickstart文件,本例將其保存至/ks目錄下,取名爲ks.cfg。
5.部署NFS服務器
[root@instructor ~]# vim /etc/exports /ks 192.168.0.0/24(sync,ro) /123 192.168.0.0/24(sync,ro) [root@instructor ~]# service rpcbind restart [root@instructor ~]# chkconfig rpcbind on [root@instructor ~]# service nfs restart [root@instructor ~]# chkconfig nfs on
系統安裝完成後會生成安裝文件/root/anaconda-ks.cfg