使用Kickstart自动化安装CentOS6.5
? ? ??本文介紹PXE方式引導(dǎo)自動化安裝CentOS6.5系統(tǒng),主要用到的系統(tǒng)服務(wù)有DHCP、TFTP、Vsftpd和Kickstart。通過配置Kickstart自動化應(yīng)答腳本,實(shí)現(xiàn)客戶端批量、無人值守安裝系統(tǒng)。
????????1.PXE介紹
PXE(Preboot Execution Environment,預(yù)啟動執(zhí)行環(huán)境)由Intel公司開發(fā),工作于Client/Server的網(wǎng)絡(luò)模式,支持客戶端通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng)。PXE可以引導(dǎo)windows2003/2008/XP/win7/linux系列等多種系統(tǒng)。
? ? ?? ?????????????????????圖?1? PXE網(wǎng)絡(luò)安裝服務(wù)架構(gòu)圖
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 2? 支持PXE啟動的網(wǎng)卡
PXE啟動流程:進(jìn)行PXE引導(dǎo)安裝的必要條件是有一個支持PXE啟動的網(wǎng)卡(NIC),即網(wǎng)卡ROM中必須要有PXE Client。當(dāng)客戶端計算機(jī)啟動引導(dǎo)時,BIOS 把PXE Client 調(diào)入內(nèi)存中執(zhí)行,首先通過ARP協(xié)議廣播請求IP地址與TFTP服務(wù)器地址,在獲取到IP后,嘗試向TFTP服務(wù)器發(fā)起TFTP請求,并將TFTP服務(wù)器根目錄中的pxelinux.0文件下載到本地并執(zhí)行,pxelinux.0引導(dǎo)程序執(zhí)行后,會從TFTP根目錄的pxelinux.cfg文件夾中下載default配置文件,然后根據(jù)default配置文件中指定的位置,去下載操作系統(tǒng)內(nèi)核vmlinuz和虛擬文件系統(tǒng)initrd.img,同時default配置文件中還指明了ks.cfg文件的位置,ks.cfg也會被一并下載到本地,在通過網(wǎng)絡(luò)下載操作系統(tǒng)安裝的過程中,PXE引導(dǎo)程序會嘗試讀取ks.cfg文件內(nèi)容,用于初始化系統(tǒng)配置,實(shí)現(xiàn)全自動無人值守安裝。
????? ?2.kickstart自動化安裝實(shí)例
????????? ?2.1 安裝環(huán)境介紹
實(shí)驗(yàn)環(huán)境以兩臺VMware虛擬機(jī)為例:
虛擬機(jī)A:CentOS 6.5系統(tǒng),作為PXE安裝服務(wù)器,網(wǎng)絡(luò)連接到NAT網(wǎng)絡(luò),并關(guān)閉VMnet8的DHCP服務(wù),IP地址:192.168.2.60/24,網(wǎng)關(guān)192.168.2.1/24;
虛擬機(jī)B:新建空白虛擬機(jī),作為PXE客戶端,網(wǎng)絡(luò)連接到NAT網(wǎng)絡(luò),也可以和虛擬機(jī)A一起放在“僅主機(jī)”或“橋接”網(wǎng)絡(luò)(相同即可),移除DVD及其他不用的設(shè)備;
在正式進(jìn)行服務(wù)配置前,最好關(guān)閉PXE服務(wù)器的防火墻和Selinux:
關(guān)閉防火墻iptables:
???[root@localhost?~]#iptables?-F[root@localhost?~]#service?iptables?stop
????關(guān)閉Selinux:? ? ? ?
???[root@localhost?~]#setenforce?0????[root@localhost?~]#vim?/etc/selinux/config??????SELINUX=disabled2.2?? 配置DHCP服務(wù)
PXE啟動流程第一階段需要通過DHCP服務(wù)為客戶端分配IP地址,指定TFTP服務(wù)器地址,指定pxelinux.0引導(dǎo)程序。
???1.????? 安裝DHCP服務(wù)
?????[root@localhost?~]#?yum?-y?install?dhcp2.????? 設(shè)置DHCP服務(wù)開機(jī)啟動
?????[root@localhost?~]#chkconfig?--level?dhcpd?2345?on????[root@localhost?~]#chkconfig?--listdhcpd???????????0:關(guān)閉??1:關(guān)閉??2:啟用??3:啟用??4:啟用??5:啟用??6:關(guān)閉
3.????? 修改DHCP服務(wù)主配置文件
????[root@localhost?~]#vim?/etc/dhcp/dhcpd.conf????#響應(yīng)客戶端的啟動查詢(開機(jī)時發(fā)送的DHCP請求)allow?booting;allow?bootp;#不使用DNS動態(tài)更新,忽略客戶端DNS更新ddns-update-style?none;ignore?client-updates;#為客戶端指定DNS名稱和DNS服務(wù)器的IP地址option?domain-name?"example.org";option?domain-name-servers?192.168.2.60;?#指定客戶端DHCP租期和連接DHCP服務(wù)器超時時間即最大租期default-lease-time?3600;max-lease-time?7200;#指定DHCP服務(wù)器發(fā)送的日志信息的日志級別log-facility?local7;#子網(wǎng)區(qū)域subnet?192.168.2.0?netmask?255.255.255.0?{#設(shè)置客戶端子網(wǎng)掩碼option?subnet-mask?255.255.255.0;#客戶端IP地址池range?dynamic-bootp?192.168.2.100?192.168.2.200;#tftp服務(wù)器的地址next-server?192.168.2.60;#需要從tftp服務(wù)器下載并執(zhí)行的PXE引導(dǎo)文件filename?"pxelinux.0";default-lease-time?3600;max-lease-time?7200;#指定客戶端默認(rèn)網(wǎng)關(guān)IP地址option?routers?192.168.2.1;?}
4.????? 重啟DHCP服務(wù)
????[root@localhost?~]#service?dhcpd?restart2.3?? 配置TFTP服務(wù)
TFTP服務(wù)是一個沒有主服務(wù)程序的輕量級服務(wù),它依靠系統(tǒng)xinetd守護(hù)進(jìn)程啟動。xinetd進(jìn)程監(jiān)聽不同網(wǎng)絡(luò)端口,根據(jù)端口發(fā)送數(shù)據(jù)到不同的服務(wù)進(jìn)程。在安裝好TFTP服務(wù)后,xinetd服務(wù)就監(jiān)聽UDP的69號端口,將這個端口收到的數(shù)據(jù)發(fā)送給TFTP程序。
1.????? 安裝xinetd和tftp-server
????[root@localhost?~]#yum?-y?install?xinetd?tftp-server2.????? 設(shè)置xinetd服務(wù)開機(jī)啟動
????[root@localhost?~]#chkconfig?--level?xinetd?345?on????[root@localhost?~]#chkconfig?--listxinetd??????????0:關(guān)閉??1:關(guān)閉??2:關(guān)閉??3:啟用??4:啟用??5:啟用??6:關(guān)閉基于?xinetd?的服務(wù):tftp:???????????啟用
3.????? 編輯tftp配置文件,開啟tftp服務(wù)
????[root@localhost?~]#vim?/etc/xinetd.d/tftp????#將配置文件中disable后面的yes改成noservice?tftp{……disable?=?no……}
4.????? 重啟xinetd服務(wù)
????[root@localhost?~]#service?xinetd?restart2.4?? 配置Syslinux及系統(tǒng)引導(dǎo)必須文件
PXE系統(tǒng)啟動引導(dǎo)需要一些必須的文件,其中pxelinux.0文件通過安裝syslinux包獲得;vmlinuz是壓縮的可引導(dǎo)、可執(zhí)行的linux內(nèi)核文件,initrd.img是“initial ramdisk”,用于臨時引導(dǎo)硬件到內(nèi)核vmlinuz接管,加載文件系統(tǒng)和SCSI設(shè)備驅(qū)動,這兩個文件可以從安裝光盤images/pxeboot目錄復(fù)制;
1.????? 安裝syslinux包,復(fù)制引導(dǎo)文件pxelinux.0
????[root@localhost?~]#yum?-y?install?syslinux????[root@localhost?~]#locate?pxelinux.0/usr/share/syslinux/pxelinux.0#將pxe引導(dǎo)文件復(fù)制到TFTP根目錄中[root@localhost?~]#cp?/usr/share/syslinux/pxelinux.0?/var/lib/tftpboot/
2.????? 掛載CentOS光盤,復(fù)制系統(tǒng)引導(dǎo)必須文件
????[root@localhost?~]#mount?/dev/cdrom?/media/cdrom????[root@localhost?cdrom]#cp?images/pxeboot/{vmlinuz,initrd.img}?/var/lib/tftpboot/[root@localhost?cdrom]#cp?isolinux/{vesamenu.c32,boot.msg}?/var/lib/tftpboot/
3.????? 創(chuàng)建系統(tǒng)引導(dǎo)模版文件default
????[root@localhost?cdrom]#mkdir?/var/lib/tftpboot/pxelinux.cfg????[root@localhost?cdrom]#cp?isolinux/isolinux.cfg?/var/lib/tftpboot/pxelinux.cfg/default
4.????? 編輯系統(tǒng)引導(dǎo)模版文件default
????[root@localhost?~]#vim?/var/lib/tftpboot/pxelinux.cfg/default????#需要修改兩處#第1處:將第一行default后面標(biāo)簽改成linux,表示引導(dǎo)時使用這個標(biāo)簽下指定的內(nèi)容去查找操作系統(tǒng)的位置default?linux#第2處:找到linux標(biāo)簽,修改inst.stage2和ks后面配置指向FTP服務(wù)器label?linuxmenu?label?^Install?CentOS?6.5?32bitmenu?defaultkernel?vmlinuzappend?initrd=initrd.img?inst.stage2=ftp://192.168.2.60?ks=ftp://192.168.2.60/pub/ks.cfg?quiet
2.5??配置Vsftpd服務(wù)
Vsftpd服務(wù)通過FTP協(xié)議發(fā)送系統(tǒng)光盤文件和自動化應(yīng)答腳本文件ks.cfg到客戶端。
1.????? 安裝Vsftpd服務(wù)
????[root@localhost?cdrom]#yum?-y?install?vsftpd2.????? 設(shè)置Vsftpd開機(jī)啟動
????[root@localhost?~]#chkconfig?--level?vsftpd?2345?on????[root@localhost?~]#chkconfig?--listvsftpd??????????0:關(guān)閉??1:關(guān)閉??2:啟用??3:啟用??4:啟用??5:啟用??6:關(guān)閉
3.????? 將CentOS6.5系統(tǒng)安裝光盤所有文件復(fù)制到FTP根目錄
????[root@localhost?~]#cp?-a?/media/cdrom/*?/var/ftp/2.6?? 配置Kickstart
Kickstart是一種無人值守安裝方式,它的工作原理是通過記錄典型的安裝過程中所需人工干預(yù)填寫的各種參數(shù),并生成一個名為ks.cfg的自動應(yīng)答腳本文件,在其后的安裝過程中,當(dāng)出現(xiàn)要求填寫參數(shù)的情況時,安裝程序會首先去查找Kickstart生成的文件,當(dāng)找到合適的參數(shù)時,就采用找到的參數(shù);當(dāng)沒有找到合適的參數(shù)時,才需要安裝者手工干預(yù)。這樣,如果告訴安裝程序ks.cfg文件位置,并且文件涵蓋了安裝過程中出現(xiàn)的所有需要填寫的參數(shù)時,就能實(shí)現(xiàn)全自動無人值守安裝。
1.??在RHEL桌面環(huán)境下配置Kickstart
????[root@localhost?~]#yum?–y?install?system-config-kickstart????[root@localhost?~]#system-config-kickstart
A:開始設(shè)置語言,鍵盤,時區(qū),Root密碼,安裝完畢自動重啟;
B:設(shè)置安裝方式(ftp/http/nfs);
C:安裝MBR;
D:設(shè)置分區(qū);
E:配置網(wǎng)絡(luò);
F:認(rèn)證配置;
G:SELinux 和防火墻配置;
H:軟件包安裝選擇
??????????????????????????????????????????????????圖 3? Kickstart配置界面
經(jīng)過各種設(shè)置,最后是生成的ks.cfg文件預(yù)覽界面, 文件保存在/var/www/html/文件夾。
????????????????????????????????????????????????圖 4? Kickstart生成ks.cfg預(yù)覽界面
2.??使用系統(tǒng)現(xiàn)有ks.cfg模版文件
在已安裝好的CentOS系統(tǒng)root用戶家目錄,存在一個anaconda.cfg文件即為本系統(tǒng)的自動化應(yīng)答腳本文件,可以以此為模版進(jìn)行配置。
????[root@localhost?~]#ls?-l?anaconda-ks.cfg?????-rw-------?1?root?root?1080?5月??24?11:08?anaconda-ks.cfg
注意:此配置文件權(quán)限為其他人不可讀,使用前需要設(shè)置權(quán)限為其他人可讀,否則自動化安裝時候anaconda程序會報錯“找不到ks.cfg文件”。
????#復(fù)制一份anaconda-ks.cfg到FTP共享目錄pub下:????[root@localhost?~]#cp?anaconda-ks.cfg?/var/ftp/pub/ks.cfg#修改權(quán)限為其他人可讀[root@localhost?pub]#chmod?644?ks.cfg[root@localhost?pub]#ls?-l-rw-r--r--?1?root?root?1353?5月??28?08:59?ks.cfg
下面是一個典型的ks.cfg配置文件:
????[root@localhost?pub]#vim?ks.cfg????#?Kickstart?file?automatically?generated?by?anaconda.#version=DEVELinstallgraphicalurl?--url="ftp://192.168.2.60/"lang?zh_CN.UTF-8keyboard?ustimezone?--utc?Asia/Shanghairootpw??--iscrypted?$6$VfvSB5Zx$ufvfpkzYy/nHoDukZXm1Z6LBlUg1n2OrO1.K7F8d2fRlYDdHwwR7MVUqT2h0Qab7rRPnRGPFa1/VYyBSDeGTt1firewall?--disabledselinux?--disabledauthconfig?--enableshadow?--passalgo=sha512firstboot?--disablenetwork?--onboot?yes?--hostname=localhost.localdomain?--device?eth0?--bootproto?dhcp?--noipv6user?--name=todd?--password=$6$vTfBqgQT$Xkjrx/kpRYEGfS1wRnsZw5MNRMUCZ3/Ld969pTG0wv4WBrMHUpWEwRSzPqJ95dIaZasWOU3pbS2at/dRZZZA11?--iscryptedbootloader?--location=mbr?--driveorder=sdazerombr?yesclearpart?--all?--initlabelpart?/boot?--fstype=ext4?--size=200part?swap?--size=2048part?/?--fstype=ext4?--grow?--size=200reboot%packages@^minimal@core@base@development@chinese-supportnet-toolsvimwget%post/bin/tar?zcPf?centos.repo.tar.gz?/etc/yum.repos.d/*.repo?>?/dev/null?2>&1/bin/rm?-f?/etc/yum.repos.d/*.repo?>?/dev/null?2>&1cat?>>?/etc/yum.repos.d/base.repo?<<?EOF[base]name=CentOS6.5baseurl=ftp://192.168.2.60/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6EOF%end
說明:
①key --skip 如果是紅帽系統(tǒng),此選項(xiàng)可以跳過輸入序列號過程;如果是CentOS 系列,則可以不保留此項(xiàng)內(nèi)容;
②reboot選項(xiàng)必須存在,否則安裝完畢后kickstart顯示等待用戶按任意鍵重新引導(dǎo);
③clearpart --all –initlabel 此條命令必須添加,否則系統(tǒng)會讓用戶手動選擇是否清除所有數(shù)據(jù),這就需要人為干預(yù)了,從而導(dǎo)致自動化過程失敗;
④安裝完畢后登錄系統(tǒng),root用戶密碼為root,todd用戶密碼為todd;
⑤%post安裝后腳本打包備份原有yum倉庫文件,生成新的base.repo倉庫。
補(bǔ)充解釋:
以下補(bǔ)充解釋一下加密的密碼密文生成方法,如下這樣的密碼有幾種生成方法:
password=$6$vTfBqgQT$Xkjrx/kpRYEGfS1wRnsZw5MNRMUCZ3/Ld969pTG0wv4WBrMHUpWEwRSzPqJ95dIaZasWOU3pbS2at/dRZZZA11
(1) 復(fù)制/etc/shadow中的加密過的密碼密文
????[root@localhost?~]#?echo?hello?|?passwd?--stdin?leven更改用戶?leven?的密碼?。passwd:?所有的身份驗(yàn)證令牌已經(jīng)成功更新。[root@localhost?~]#?grep?leven?/etc/shadowleven:$6$K3DVGnpn$r/yZY.RoyM6dHKsqwKLllvj0M98XPiak9Kefh6X/NA5Tpmp3F/jBYhc4d.kCcGOnHsey33XBvWGqixo6Rl7oP0:17928:0:99999:7:::這一段“$6$K3DVGnpn$r/yZY.RoyM6dHKsqwKLllvj0M98XPiak9Kefh6X/NA5Tpmp3F/jBYhc4d.kCcGOnHsey33XBvWGqixo6Rl7oP0”就是使用sha-512方式加密后的密碼密文。(開頭的$6$表明)
(2) 使用OpenSSL生成加密過的密碼密文
????[root@localhost?~]#?openssl?passwd?-1?-salt?'world'????Password:?$1$world$6A5UXMoQ04WBPD9pce/FT0“-1”指加密算法使用md5算法,不指定加密算法的話默認(rèn)使用Unix標(biāo)準(zhǔn)加密算法,即不指定默認(rèn)使用-crypt算法;
?“-salt”指定加密時候需要添加的“鹽”(雜質(zhì)),不指定的話默認(rèn)隨機(jī)生成。
此方法缺點(diǎn)是OpenSSL不支持生成sha-256和sha-512算法的密碼,目前Linux默認(rèn)的密碼加密算法已經(jīng)是sha-512了,md5算法不安全,詳見/etc/shadow中加密密碼“$6$”表明sha-512算法。
(3)使用grub-crypt生成加密過的密碼密文
????[root@localhost?~]#?grub-crypt?-hUsage:?grub-crypt?[OPTION]...Encrypt?a?password.--md5???????????????????Use?MD5?to?encrypt?the?password--sha-256???????????????Use?SHA-256?to?encrypt?the?password--sha-512???????????????Use?SHA-512?to?encrypt?the?password?(default)[root@localhost?~]#?grub-crypt?--sha-512Password:?Retype?password:?$6$RD4Mt5EjtHgGopk2$GrGNdH5kMUNIo5rnCl6qAJhn6mOruc9QcFcTbN/7fPhInJvsiiTqrXORMeFn.m7k73WKKa9qs0lu2m3j79ABj1grub-crypt其實(shí)是一個python腳本,交互式生成密碼。在CentOS 6上,可以借助grub提供的密碼生成工具grub-crypt生成。遺憾的是CentOS 7上默認(rèn)安裝的是grub2,它不提供grub-crypt。
但是我們可以參照grub-crypt腳本內(nèi)容,使用下面的python語句簡單地代替grub-crypt,以下是交互式方式獲取密碼:
????python?-c?'import?crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw)?if?(pw==getpass.getpass("Confirm:?"))?else?exit())'????? 如果不想交互式,可以改成如下形式:
????python?-c?'import?crypt,getpass;pw="123456";print(crypt.crypt(pw))'????? 現(xiàn)在就方便多了,直接將結(jié)果賦值給變量即可。
????[root@localhost?~]#?a=$(python?-c?'import?crypt,getpass;pw="123456";print(crypt.crypt(pw))')[root@localhost?~]#?echo?$a$6$uKhnBg5A4/jC8KaU$scXof3ZwtYWl/6ckD4GFOpsQa8eDu6RDbHdlFcRLd/2cDv5xYe8hzw5ekYCV5L2gLBBSfZ.Uc166nz6TLchlp.3.測試安裝
自動化應(yīng)答腳本文件ks.cfg配置完畢后,初始化一個VMware虛擬機(jī),將網(wǎng)絡(luò)連接到NAT網(wǎng)絡(luò)(必須和作為PXE服務(wù)器的虛擬機(jī)A在同一個網(wǎng)絡(luò),并且VMnet8關(guān)閉DHCP服務(wù)),移除客戶端虛擬機(jī)B的DVD及其他不用的設(shè)備。
????????????????????????????????圖 5? 新建空白虛擬機(jī)PXE Client
啟動PXE Client虛擬機(jī)B,自動選擇從網(wǎng)卡PXE引導(dǎo),DHCP 服務(wù)器開始給客戶機(jī)分配IP地址,并指定TFTP服務(wù)器地址。
????????????????圖 6? PXE Client向DHCP Server請求IP地址和TFTP服務(wù)器地址
????????????????????????????????圖 7? 加載vmlinuz和initrd.img文件
圖 8? 啟動CentOS6.5安裝過程
轉(zhuǎn)載于:https://blog.51cto.com/toddliu/2121532
總結(jié)
以上是生活随笔為你收集整理的使用Kickstart自动化安装CentOS6.5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python-os模块
- 下一篇: 高性能网站原则