Kickstart+PXE定製網路批量自動安裝
什麼是KickStart
KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案;在其後的安裝過程中(不只侷限於生成KickStart安裝檔案的機器)當出現要求填寫引數的情況時,安裝程式會首先去查詢KickStart生成的檔案,當找到合適的引數時,就採用找到的引數,當沒有找到合適的引數時,才需要安裝者手工干預。這樣,如果KickStart檔案涵蓋了安裝過程中出現的所有需要填寫的引數時,安裝者完全可以只告訴安裝程式從何處取ks.cfg檔案,然後去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中設定的重啟選項來重啟系統,並結束安裝。
什麼是PXE
PXE(preboot execute environment)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像,並由此支援來自網路的作業系統的啟動過程,其啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟體包到本機記憶體中並執行,由這個啟動軟體包完成終端基本軟體設定,從而引導預先安裝在伺服器中的終端作業系統。
網路拓撲圖:
在機房中批量上線安裝伺服器通常會使用如上圖所示的結構批量安裝,由於我們的工作電腦通常都是windows系統(office需要),所以再裝個VMware虛擬機器,在虛擬機器中架設PXE server不失為一種好方法。
VMware workstation虛擬機器的設定:安裝好CentOS並且虛擬機器網路連線方式為橋接(bridge)
以下所有配置都在虛擬機器中的CentOS完成:
使用PXE+Kickstart就可以製作網路多機器自動安裝,網路安裝的方式有三種:NFS、HTTP和FTP。綜合起來看,部署這樣的自動安裝環境需要的條件是:
1.DHCP 伺服器
2.TFTP 伺服器
3.KickStart所生成的ks.cfg配置檔案
4.一臺存放系統安裝檔案的伺服器,如 NFS、HTTP 或 FTP 伺服器
5.帶有一個 PXE 支援網絡卡的將安裝的主機
把系統安裝光碟mount到主機上
#mount /dev/cdrom /mnt/cdrom
安裝所需要的服務
yum -y install dhcp dhcp-devel nfs-utils nfs-utils-lib tftp tftp-server syslinux
配置TFTP,制定可供下載檔案的目錄。
- 1、編輯TFTP配置檔案
- #default:off
- #description:Thetftpserverservesfilesusingthetrivialfiletransfer\
- #protocol.Thetftpprotocolisoftenusedtobootdiskless\
- #workstations,downloadconfigurationfilestonetwork-awareprinters,\
- #andtostarttheinstallationprocessforsomeoperatingsystems.
- servicetftp
- {
- disable=no#找到disable,修改其值為no
- socket_type=dgram
- protocol=udp
- wait=yes
- user=root
- server=/usr/sbin/in.tftpd
- server_args=-s/tftpboot#此處為TFTP提供下載的位置
- per_source=11
- cps=1002
- flags=IPv4
- }
- 2,TFTP目錄建立與設定
- #mkdir/tftpboot
- #cp/usr/share/syslinux/pxelinux.0/tftpboot/
- #mkdir/tftpboot/pxelinux.cfg
- #cp/mnt/cdrom/isolinux/isolinux.cfg/tftpboot/pxelinux.cfg/default
- #cp/mnt/cdrom/isolinux/*/tftpboot#把光碟中isolinux裡的所有檔案複製到/tftpboot下
重啟動TFTP:service xinetd restart
DHCP伺服器設定
- #DHCPServerConfigurationfile.
- #see/usr/share/doc/dhcp*/dhcpd.conf.sample
- #see'man5dhcpd.conf'
- #
- #
- ddns-update-styleinterim;
- ignoreclient-updates;
- subnet10.20.30.0netmask255.255.255.0{
- optionrouters10.20.30.1;
- optionsubnet-mask255.255.255.0;
- optiondomain-name-servers10.20.30.2;
- rangedynamic-bootp10.20.30.210.20.30.100;
- default-lease-time21600;
- max-lease-time43200;
- next-server10.20.30.2;###重要
- filename"pxelinux.0";###重要
- }
- 單就網路安裝來說,只要在已經安裝配置好的DHCP伺服器上新增指定伺服器IP和指定pxelinux.0便可。
重啟動DHCP:service dhcpd restart
編輯/tftpboot/pxelinux.cfg/default
- defaultvesamenu.c32
- #prompt1
- timeout10#超時時間
- displayboot.msg
- menubackgroundsplash.jpg
- menutitleWelcometoCentOS6.3!
- menucolorborder0#ffffffff#00000000
- menucolorsel7#ffffffff#ff000000
- menucolortitle0#ffffffff#00000000
- menucolortabmsg0#ffffffff#00000000
- menucolorunsel0#ffffffff#00000000
- menucolorhotsel0#ff000000#ffffffff
- menucolorhotkey7#ffffffff#ff000000
- menucolorscrollbar0#ffffffff#00000000
- labellinux
- menulabel^Installorupgradeanexistingsystem
- menudefault
- kernelvmlinuz
- #appendks=ftp://10.20.30.2/pub/ks.cfginitrdinitrd=initrd.img##設定重點
- appendks=nfs:10.20.30.2:/tftpboot/ks.cfginitrdinitrd=initrd.img##設定重點
- labelvesa
- menulabelInstallsystemwith^basicvideodriver
- kernelvmlinuz
- appendinitrdinitrd=initrd.imgxdriver=vesanomodeset
- labelrescue
- menulabel^Rescueinstalledsystem
- kernelvmlinuz
- appendinitrdinitrd=initrd.imgrescue
- labellocal
- menulabelBootfrom^localdrive
- localboot0xffff
- labelmemtest86
- menulabel^Memorytest
- kernelmemtest
- append-
- ############FTP、NFS、HTTP三種安裝方式的配置路徑寫法##########
- ############主要是為了讓安裝載入程式找到ks.cfg配置檔案########
- ##############################################################
- #appendks=ftp://10.20.30.2/pub/ks.cfginitrdinitrd=initrd.img
- #appendks=nfs:10.20.30.2:/tftpboot/ks.cfginitrdinitrd=initrd.img
- #appendks=http://10.20.30.2/linux/ks.cfginitrdinitrd=initrd.img
- ##############################################################
對安裝光碟的定製
- #
- #/root/anaconda-ks.cfg.安裝系統時由anaconda自動生成的ks.cfg檔案
- #vianaconda-ks.cfg
- #Kickstartfileautomaticallygeneratedbyanaconda.
- #version=DEVEL
- install
- #cdrom
- langen_US.UTF-8
- keyboardus
- network--onbootyes--deviceeth0--bootprotodhcp--noipv6#這裡我把它設定為開機DHCP自動獲取IP,預設為--onbootno。
- rootpw--iscrypted$6$FLLlvfqZKzvs/9bu$oflTVbcg8ZDgfCvBCDeyIBrgswymV7.W6ZoKc0Ona0GT/SCmBvMokbD2Ty86GH.qMOzXKlh6fTUQJRq4C50FC1
- firewall--service=ssh
- authconfig--enableshadow--passalgo=sha512
- selinux--enforcing
- timezone--utcAsia/Shanghai
- #url --url=ftp://10.20.30.2/pub ###FTP 的方式
- #nfs --server=10.20.30.2 --dir=/mnt/cdrom ###NFS的方式
- #url --url=http://10.20.30.2/linux ###HTTP的方式
- bootloader--location=mbr--driveorder=sda--append="crashkernel=autorhgbquiet"
- #Thefollowingisthepartitioninformationyourequested
- #Notethatanypartitionsyoudeletedarenotexpressed
- #heresounlessyouclearallpartitionsfirst,thisis
- #notguaranteedtowork
- zerombr#注意此處,清空MBR
- clearpart--all--initlabel#重新初始化硬碟分割槽
- part/boot--fstype=ext4--size=200#/boot分割槽,200M
- partswap--size=1024#swap分割槽,1024M
- part/--fstype=ext4--grow--size=1#根分割槽/,意為剩下所有的空閒空間都留給/
- #repo--name="CentOS"--baseurl=cdrom:sr0--cost=100#暫未明白這是什麼意思,先註釋掉
- reboot#安裝完成後自動重啟
- %packages--nobase#這裡定義需要安裝的包
- @core#最小化安裝只有一個core就夠了。
- %post#%post後面可以接一些命令、指令碼。如/bin/touch/root/test.cfg,安裝完成後會在/root目錄下看到test.cfg檔案
- /bin/touch/root/test.cfg
- #######################################################
- #下面是我建立SSH公鑰的指令碼
- #######################################################
- if[!-d/root/.ssh];then
- mkdir/root/.ssh/
- fi
- if[!-f/root/.ssh/authorized_keys];then
- touch/root/.ssh/authorized_keys
- fi
- cat<<EOF>/root/.ssh/authorized_keys
- ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAAAgQDDZCIIaD6lCRhmRY4wwdhLcqfstvd0aT90Py9g0RTtZxkh7NcJuR/+zupmQ0Bet3UW2sGfiP3JSviQvi82QK9+orh0IC+cCboE0usgSH89nra0LLc0y2Iv816lhjh5Dmn9ubfT5uCkgnJMIu10qUqZbu2b/ypMwMe/5jEFBdG89
- w
- EOF
- %end#必須的結束標誌
安裝方式之一:FTP
- 安裝vsftpd之後預設允許匿名訪問FTP公共目錄/var/ftp/pub,所以無需對vsftd配置檔案進行修改。
- 只需要把ks.cfg檔案和光碟中的所有檔案複製到/var/ftp/pub就可以了。
- #cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
- #cp-a/mnt/cdrom/*/var/ftp/pub
- #分別修改ks.cfg和/tftpboot/pxelinux.cfg/default檔案對應的方式
安裝方式之二:NFS
- 編輯NFS的配置檔案,新增以下兩句
- /tftpboot*(ro,sync)#/tftpboot可被網路上任何主機讀取
- /mnt/cdrom*(ro,sync)#/mnt/cdrom可被網路上任何主機讀取
- 分別修改ks.cfg和/tftpboot/pxelinux.cfg/default檔案對應的方式
安裝方式之三:HTTP
- 1,把ks.cfg和/mnt/cdrom裡的所有檔案複製到apache指定的目錄下
- 2,分別修改ks.cfg和/tftpboot/pxelinux.cfg/default檔案對應的方式
轉載於:https://blog.51cto.com/fengzhige/1067242