季城希,甜橙金融運(yùn)維工程師,多年IDC運(yùn)維經(jīng)驗(yàn)。擅長IDC中服務(wù)器批量高效快速集成交付,精通各品牌型號服務(wù)器硬件產(chǎn)品及維護(hù)。 一、前言 為啥要用無人值守安裝系統(tǒng)?很簡單的答案,就是方便日常工作。 常規(guī)裝系統(tǒng)的辦法有哪些?
無人值守安裝系統(tǒng)好處都有啥?
二、PXE PXE(preboot execute environment,預(yù)啟動執(zhí)行環(huán)境)是由Intel公司開發(fā)的最新技術(shù),工作于Client/Server的網(wǎng)絡(luò)模式,支持工作站通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng)。 在啟動過程中,終端要求服務(wù)器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協(xié)議下載一個啟動軟件包到本機(jī)內(nèi)存中執(zhí)行,由這個啟動軟件包完成終端(客戶端)基本軟件設(shè)置,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)。 PXE可以引導(dǎo)多種操作系統(tǒng),如:Windows95 / 98 / 2000 / windows2003 / windows2008 / winXP / win7 / win8,Linux系列系統(tǒng)等。 嚴(yán)格來說,PXE并不是一種安裝方式,而是一種引導(dǎo)方式。進(jìn)行PXE安裝的必要條件是在要安裝的計算機(jī)中必須包含一個PXE支持的網(wǎng)卡(NIC),即網(wǎng)卡中必須要有PXE Client。 PXE協(xié)議可以使計算機(jī)通過網(wǎng)絡(luò)啟動。此協(xié)議分為Client端和Server 端,而PXE Client則在網(wǎng)卡的ROM中。 當(dāng)計算機(jī)引導(dǎo)時,BIOS把PXE Client調(diào)入內(nèi)存中執(zhí)行,然后由PXE Client將放置在遠(yuǎn)端的文件通過網(wǎng)絡(luò)下載到本地運(yùn)行。 運(yùn)行PXE協(xié)議需要設(shè)置DHCP服務(wù)器和TFTP服務(wù)器。DHCP服務(wù)器會給PXE Client(將要安裝系統(tǒng)的主機(jī))分配一個IP地址,由于是給PXE Client分配IP地址,所以在配置DHCP服務(wù)器時需要增加相應(yīng)的PXE設(shè)置。 此外,在PXE Client的ROM中,已經(jīng)存在了TFTP Client,那么它就可以通過TFTP協(xié)議到TFTP Server上下載所需的文件了。 PXE工作流程 1、PXE Client向DHCP發(fā)送請求
2、DHCP服務(wù)器提供信息
3、DHCP客戶機(jī)接收IP和服務(wù)器的互動
4、PXE客戶端請求下載啟動文件
5、Boot Server響應(yīng)客戶端請求并傳送文件
6、請求下載自動應(yīng)答文件
7、客戶端安裝操作系統(tǒng)
三、Kickstart Kickstart工作原理 Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄人工干預(yù)填寫的各種參數(shù),并生成一個名為ks.cfg的文件。 如果在自動安裝過程中出現(xiàn)要填寫參數(shù)的情況,安裝程序首先會去查找ks.cfg文件,如果找到合適的參數(shù),就采用所找到的參數(shù);如果沒有找到合適的參數(shù),便會彈出對話框讓安裝者手工填寫。 所以,如果ks.cfg文件涵蓋了安裝過程中所有需要填寫的參數(shù),那么安裝者完全可以只告訴安裝程序從何處下載ks.cfg文件,然后就去忙自己的事情。 等安裝完畢,安裝程序會根據(jù)ks.cfg中的設(shè)置重啟/關(guān)閉系統(tǒng),并結(jié)束安裝。 四、搭建PXE+Kickstart環(huán)境 安裝DHCP、TFTP-Server、HTTP 安裝dhcp、tftp-server、httpd [root@localhost ~]# yum install dhcp xinetd tftp-server httpd -y tftp-server被xinted所管理,所以需要安裝xinetd來管理啟動tftp-server DHCP DHCP概念 DHCP是一個局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作,主要有兩個用途:給內(nèi)部網(wǎng)絡(luò)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動分配IP地址,給用戶或者內(nèi)部網(wǎng)絡(luò)管理員作為對所有計算機(jī)作中央管理的手段。 所有客戶機(jī)的IP地址設(shè)定資料都由DHCP服務(wù)器集中管理,并負(fù)責(zé)處理客戶端的DHCP請求;而客戶端則會使用從服務(wù)器分配下來的IP地址。 在此不詳細(xì)闡述DHCP工作原理,若想了解可參考:https://www.cnblogs.com/wajika/p/6537085.html DHCP服務(wù)器IP分配方式 主要提供三種IP分配方式:
配置DHCP DHCP指定監(jiān)聽網(wǎng)卡
注意:在實(shí)際生產(chǎn)環(huán)境中,可能會有多個網(wǎng)絡(luò)環(huán)境而且環(huán)境不會互通,可以結(jié)合自己公司的情況進(jìn)行優(yōu)化:
TFTP TFTP概念 TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個用來在客戶機(jī)與服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開銷不大的文件傳輸服務(wù)。端口號為69。 TFTP是一個傳輸文件的簡單協(xié)議,它基于UDP協(xié)議而實(shí)現(xiàn),但是我們也不能確定有些TFTP協(xié)議是基于其它傳輸協(xié)議完成的。此協(xié)議設(shè)計的時候是進(jìn)行小文件傳輸?shù)?。因此它不具備通常的FTP的許多功能,它只能從文件服務(wù)器上獲得或?qū)懭胛募?,不能列出目錄,不進(jìn)行認(rèn)證,它傳輸8位數(shù)據(jù)。 配置TFTP HTTP HTTP概念 由于我們要獲取安裝系統(tǒng)服務(wù)的yum源以及內(nèi)核文件,虛擬根文件,這些文件都是大文件,在傳輸時我們必須保證其能夠安全傳輸,所以我們選擇了HTTP服務(wù),當(dāng)然了,選擇FTP服務(wù)也是可以的。 HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫。是互聯(lián)網(wǎng)上廣泛試用的協(xié)議。是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分等。 HTTP包含命令和傳輸信息,不僅可用于Web訪問,也可以用于其他因特網(wǎng)/內(nèi)聯(lián)網(wǎng)應(yīng)用系統(tǒng)之間的通信,從而實(shí)現(xiàn)各類應(yīng)用資源超媒體訪問的集成。 配置httpd 各文件配置后面會講,ks文件夾中可以自定義ks文件和所使用到的文件。 PXE引導(dǎo)(bootstrap) syslinux是一個功能強(qiáng)大的引導(dǎo)加載程序,而且兼容各種介質(zhì)。它的目的是簡化首次安裝Linux的時間,并建立修護(hù)或其它特殊用途的啟動盤。 它的安裝很簡單,一旦安裝syslinux好之后,sysLinux啟動盤就可以引導(dǎo)各種基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系統(tǒng)。不僅支持采用BIOS結(jié)構(gòu)的主板,而且從6.0版也開始支持采用EFI結(jié)構(gòu)的新型主板。 注意:SYSLINUX不支持NTFS文件系統(tǒng),所以磁盤必須是FAT(FAT16/FAT32)文件系統(tǒng)。 配置PXE引導(dǎo) default文件解析 啟動httpd、tftp、dhcp ks.cfg文件 通常,我們在安裝操作系統(tǒng)的過程中,需要大量的和服務(wù)器交互操作,為了減少這個交互過程,kickstart就誕生了。 使用這種kickstart,只需事先定義好一個Kickstart自動應(yīng)答配置文件ks.cfg(通常存放在安裝服務(wù)器上),并讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了在安裝過程中多次的人機(jī)交互,從而實(shí)現(xiàn)無人值守的自動化安裝。 生成kickstart配置文件的三種方法:
ks.cfg文件組成大致分為3段 命令段: 鍵盤類型,語言,安裝方式等系統(tǒng)的配置,有必選項和可選項,如果缺少某項必選項,安裝時會中斷并提示用戶選擇此項的選項 軟件包段:
腳本段(可選):
↓上下滑動可查看完整內(nèi)容 每個項目都由關(guān)鍵字來識別;關(guān)鍵字可跟一個或多個參數(shù);如果某選項后面跟隨了一個等號(=),它后面就必須指定一個值。 關(guān)鍵字 含義 install(可選) 明確指定系統(tǒng)此次進(jìn)行的是全新安裝系統(tǒng),而不是升級upgrade;是默認(rèn)項; cdrom(可選) 以本地CD-ROM為源安裝系統(tǒng); harddrive (可選) 以硬盤分區(qū)中包含的鏡像為源(安裝樹)安裝新系統(tǒng);當(dāng)以該種方式安裝系統(tǒng)時,即使指定clearpart --all項,源所在分區(qū)也不會被重新抹去; --partition= 指定分區(qū) --dir= 指定包含鏡像的目錄 例: harddrive --partition=/dev/sdb2 --dir=/data/iso nfs (可選) 指定從NFS服務(wù)器上獲取安裝樹; --server= 指定NFS服務(wù)器,主機(jī)名稱或IP --dir= 包含安裝樹的目錄 --opts= 可以指定掛載NFS的目錄時的掛載選項 例: nfs --server=192.168.31.72 --dir=/data/iso url (可選) 指定通過FTP或HTTP從網(wǎng)絡(luò)獲取安裝樹; --url 指定資源位置 例: url --url ftp:// url --url bootloader (必需)設(shè)定boot loader安裝選項; --append= 可以指定內(nèi)核參數(shù),要指定多個參數(shù),使用空格分隔它們。 --driveorder= 設(shè)定設(shè)備BIOS中的開機(jī)設(shè)備啟動順序 --location= 設(shè)定引導(dǎo)記錄的位置,有效的值如下: mbr(默認(rèn)值); partition(在包含內(nèi)核的分區(qū)的第一個扇區(qū)安裝引導(dǎo)裝載程序)或none(不安裝引導(dǎo)裝載程序)。 例: bootloader --location=mbr --append=“rhgb quiet” --driveorder=sda,sdb bootloader --location=mbr --driveorder=sda --append='crashkernel=auto rhgb rhgb quiet quiet' clearpart (可選)在建立新分區(qū)前清空系統(tǒng)上原有的分區(qū)表,默認(rèn)不刪除分區(qū); --all 擦除系統(tǒng)上原有所有分區(qū); --drives 刪除指定驅(qū)動器上的分區(qū) --initlabel 初始化磁盤卷標(biāo)為系統(tǒng)架構(gòu)的默認(rèn)卷標(biāo) --linux 擦除所有的linux分區(qū) --none(default)不移除任何分區(qū) 例: clearpart --drives=hda,hdb --all --initlabel zerombr (可選)清除mbr引導(dǎo)信息,會同時清空系統(tǒng)用原有分區(qū)表 drivedisk (可選)如果使用特殊存儲方式時,需要指定驅(qū)動程序盤位置以便加載存儲驅(qū)動; 1. 將驅(qū)動盤拷貝到本地硬盤某分區(qū)根目錄: drivedisk 2. 也可以指定一個網(wǎng)絡(luò)位置加載驅(qū)動程序盤 drivedisk --source=ftp://path/to/drive.img drivedisk --source=nfs:host://path/to/drive.img firewall (可選)配置系統(tǒng)防火墻選項; firewall -enable|--disable [ --trust ] --enable 拒絕外部發(fā)起的任何主動連接; --disable 不配置任何iptables防御規(guī)則; --trust 指定完全信任網(wǎng)卡設(shè)備; --port 使用port:protocol格式指定可以通過防火墻的服務(wù); 例: firewall --enable --trust eth0 --trust eth1 --port=80:tcp firewall --disabled selinux (可選)設(shè)置系統(tǒng)selinux狀態(tài);默認(rèn)為啟用并處于enforcing模式; selinux [ --disabled|–enforcing|--premissive ] 例: selinux --disabled reboot (可選) 在系統(tǒng)成功安裝完成后默認(rèn)自動重啟系統(tǒng)(kickstart方法時); 在收到你敢裝系統(tǒng)完成后,會提示按任意鍵進(jìn)行重啟; 在本文件中沒有明確指明其他方法時就默認(rèn)完成方式為reboot; 使用 reboot 選項可能會導(dǎo)致安裝的死循環(huán),這依賴于安裝介質(zhì)和方法。需要特別注意; halt (可選) 在系統(tǒng)成功安裝完成后關(guān)機(jī);默認(rèn)為reboot; 其他選項還有shutdown、poweroff,需要使用請自行參考官方文檔。 graphical (可選)默認(rèn)值,在圖形模式下進(jìn)行kickstart方式安裝; text (可選)以文本方式進(jìn)行kickstart安裝;默認(rèn)為圖形界面 key (可選) 設(shè)置一個安裝碼(installration number),用于獲取RedHat官方的支持服務(wù); --skip 跳過key設(shè)置,不進(jìn)行設(shè)置;如果不設(shè)置可能跳轉(zhuǎn)到交互模式讓用戶選取動作; keyboard (必需)設(shè)置鍵盤類型;一般設(shè)置為us; 例: keyboard us lang (必需)設(shè)置安裝過程使用的語言及系統(tǒng)的缺省語言;文本模式安裝時可能不支持某些語言(中、韓...),所以可能仍以默認(rèn)的英文方式安裝;默認(rèn)en_us,裝中文時,需要后期%packages部分裝上中文支持組件; 例: lang en_US timezone (可選) 設(shè)置系統(tǒng)的時區(qū); timezone [ --utc ] 例: timezone --utc Asia/Shanghai timezone Asia/Shanghai auth/authconfig (必需) 設(shè)置系統(tǒng)的認(rèn)證方式;默認(rèn)為加密但不隱藏(shadow); --enablemd5 使用MD5加密方式 --useshadow或—enableshadow 使用隱藏密碼; --enablenis= 使用NIS認(rèn)證方式 --nisdomain= NIS域 --nisserver= NIS服務(wù)器 還可以設(shè)置LDAP、SMB及Kerberos5認(rèn)證方式,詳細(xì)請參考官方文檔; 例: authconfig --useshadow --enablemd5 authconfig --enableshadow --passalgo=sha512 設(shè)置密碼加密方式為sha512 啟用shadow文件。 rootpw (必需) 設(shè)置系統(tǒng)root賬號的密碼; rootpw [ --iscrypted ] --iscrypted 表示設(shè)置的密碼為加密過的串; 例: rootpw pa4word rootpw --iscrypted $1$RPYyxobb$/LtxMNLJC7euEARg2Vu2s1 rootpw --iscrypted $6$fvyDQYgM0a7kwvth$jAhWo.26MxcNMFwnJNl6011diLKv8Ai/3QapVZhfaXExPz9wAQfrxHfx.4RWK2SPb83OB33MyYX61Xd3h1hvB/ network (可選) 配置網(wǎng)絡(luò)信息;在網(wǎng)絡(luò)安裝(NFS/HTTP/FTP)時必須指定; --bootproto=dhcp|bootp|static 指定ip獲取方式,默認(rèn)為dhcp/bootp;static方法要求在kickstart文件里輸入所有的網(wǎng)絡(luò)信息。 --device= 設(shè)置安裝時激活來進(jìn)行系統(tǒng)安裝的網(wǎng)卡設(shè)備;該參數(shù)只在kickstart文件為本地文件時有效;若kickstart配置文件在網(wǎng)絡(luò)上,安裝程序會先初始化網(wǎng)卡然后去尋找kickstart文件; --ip= ip設(shè)置 --gateway= 網(wǎng)關(guān) --nameserver= DNS設(shè)置 --nodns 不設(shè)置DNS --netmask= 子網(wǎng)掩碼 --hostname= 設(shè)置安裝后主機(jī)名稱 --onboot= 設(shè)置是否在系統(tǒng)啟動時激活網(wǎng)卡 --class= 設(shè)置DHCP的class值 --noipv4 禁用該設(shè)備的ipv4功能 --noipv6 禁用該設(shè)備的ipv6功能 如將網(wǎng)絡(luò)模式設(shè)置為靜態(tài)模式,則必須在一行內(nèi)寫上ip,netmask、dns、gateway等信息; 例: network –bootproto=static –ip=1.1.1.1 --metmask=255.0.0.0 --gateway=1.1.1.254 --nameserver=1.1.1.2 netmask --bootproto=dhcp --device=eth0 network --onboot yes --device eth0 --mtu=1500 --bootproto static --ip 10.0.0.32 --netmask 255.255.255.0 --noipv6 --hostname openstack02 network --onboot yes --device eth1 --bootproto static --ip 192.168.31.32 --netmask 255.255.255.0 --gateway 192.168.31.1 --noipv6 --nameserver 223.5.5.5 --hostname openstack02 skipx (可選) 如果該項存在,就不對系統(tǒng)的X進(jìn)行設(shè)置; xconfig (可選)配置X window ;如果不給出選項,在安裝過程中需要手動調(diào)整設(shè)置;當(dāng)然不安裝X時不應(yīng)該添加該項; --driver 為顯卡設(shè)置X驅(qū)動 --videoram= 設(shè)置顯卡的RAM大小 --defaultdesktop= 設(shè)置GNOME/KDE作為默認(rèn)桌面;假定這兩個桌面環(huán)境在%packages例已經(jīng)安裝 --startxonboot 使用圖形界面登錄系統(tǒng) --resolution= 設(shè)置圖形界面的分辨率;可用值有640*480、800*600、1024*768等;確保設(shè)置指適合于顯示卡及顯示器; --depth= 設(shè)置顯示色深;可用值有8/16/24/32;確保設(shè)置值適合于顯示設(shè)備; 例: xconfig --startxonboot --resolution=800*600 --depth=16 services (可選)設(shè)置禁用或允許列出的服務(wù); --disabled 設(shè)置服務(wù)為禁用 --enabled 啟動服務(wù) 例: services --disabled autid,cups,smartd,nfslock 服務(wù)之間用逗號隔開,不能有空格 iscsi(可選)指定額外的ISCSI設(shè)備; issci --ipaddr= ipaddr [options]. --target --port= --user= --password= part/partition (install模式必須)建立新分區(qū); part options mntpoint:掛載點(diǎn),是在創(chuàng)建普通分區(qū)時指定新分區(qū)掛載位置的項;掛載點(diǎn)需要格式正確 swap: 創(chuàng)建swap分區(qū); raid.id: 表示創(chuàng)建的分區(qū)類型為raid型;必須用id號進(jìn)行唯一區(qū)別; pv.id: 表示所創(chuàng)建的分區(qū)類型為LVM型;必須用唯一id號進(jìn)行區(qū)別; --size= 設(shè)置分區(qū)的最小值,默認(rèn)單位為M,但是不能寫單位; --grow 讓分區(qū)自動增長利用可用的剩余磁盤空間,或是增長到設(shè)置的maxsize值; --maxsize 設(shè)置分區(qū)自動增長(grow)時的最大容量值,以M為單位,但不能寫單位; --onpart=/--usepart= 設(shè)置使用原有的分區(qū); --noformat 設(shè)置不格式化指定的分區(qū),在跟—onpart一同使用時,可以避免刪除原有分區(qū)上的數(shù)據(jù),在新安裝的系統(tǒng)中保留使用數(shù)據(jù); --asprimary 強(qiáng)制制定該分區(qū)為主分區(qū);若指定失敗,分區(qū)會失敗,導(dǎo)致安裝停止; --fstype= 新增普通分區(qū)時指定分區(qū)的類型,可以為ext2、ext3、ext4、swap、vfat及hfs; --ondisk=/--ondrive= 設(shè)定該分區(qū)創(chuàng)建在一個具體的磁盤上; --start 指定分區(qū)以磁盤上那個磁道開始;需要跟--ondisk參數(shù)一塊使用; --end 指定分區(qū)以磁盤上那個磁道結(jié)束;需要跟上述兩個參數(shù)一起使用; --recommended:讓系統(tǒng)自行決定分區(qū)的大??;在創(chuàng)建swap分區(qū)時,若RAM<2g,則分區(qū)大小為2*ram;若ram>=2G時,分區(qū)大小為RAM+2G; --bytes-pre-inode= 指定分區(qū)格式化時inode的大?。荒J(rèn)值為4096 --fsoptions= 指定創(chuàng)建fstab文件時該分區(qū)掛載參數(shù)項; 例: part /boot --fstype=“ext3” --size=100 part swap --fstype=“swap” –size=512 part / --bytes-pre-inode=4096 --fstype=“ext4”--size=10000 part /data --onpart=/dev/sdb1 --noformat part raid.100 --size=2000 part pv.100 --size=1000 part /boot --fstype=ext4 --asprimary --size=200 part swap --asprimary --size=512 part / --fstype=ext4 --grow --asprimary --size=200 raid (可選) 設(shè)置RAID。 raid 掛載點(diǎn) --level= 掛載點(diǎn): 選取根/時,注意盡量避免/boot在RAID內(nèi),除非為RAID1; --level= 設(shè)置RAID級別 --device= RAID設(shè)備名稱,如md0,md1... --byte-pre-inode= 設(shè)置該RAID分區(qū)上inode大?。蝗舴謪^(qū)文件系統(tǒng)類型不支持該參數(shù),會靜默忽略參數(shù); --spares= 設(shè)置RAID的熱備盤 --fstype= 設(shè)置文件系統(tǒng)類型 --fsoptions= 設(shè)置掛載該文件系統(tǒng)時自定義的一些參數(shù),參數(shù)寫入fstab文件; --useexisting 使用現(xiàn)有的RAID設(shè)備并且重新格式化原設(shè)備 --noformat 在使用現(xiàn)有的RAID設(shè)備時不格式化原有RAID設(shè)備 例:完整創(chuàng)建一個RAID1設(shè)備示例; part raid.10 --size=1000 --ondisk=/dev/sdb part raid.11 --size=1000 --ondisk=/dev/sdc raid /data --level=1 --device=md0 raid.10 raid.11 volgroup (可選) 創(chuàng)建一個LVM卷組VG; volgroup vg_name partition [options] --useexiting 使用現(xiàn)有的VG并且重新格式化 --noformat 使用現(xiàn)有的VG時不做格式化 --pesize 設(shè)置PE(physical extents)塊大小 例: part pv.11 --size=2000 volgroup myvg pv.11 logvol (可選) 創(chuàng)建一個LVM邏輯卷LV; logvel mnt_point --vgname=vg_name --size=lv_size --name=lv_name [options] --useexiting 使用現(xiàn)有的LV并且重新格式化 --noformat 使用現(xiàn)有的LV時不做格式化 --fstype= 指定RAID分區(qū)類型 --byte-pre-inode= 設(shè)置該RAID分區(qū)上inode大?。? --precent= 設(shè)定LV大小為VG可用空間的比例; 例: part pv.20 --size=5000 volgroup mvvg pv.20 logvol /data --vgname=myvg --size=3000 --name=mydata firstboot(可選) 負(fù)責(zé)協(xié)助配置redhat一些重要的信息。 firstboot --disable logging(可選) 設(shè)置日志級別。 logging --level=info 上下滑動可查看完整內(nèi)容 以下是ks配置文件的內(nèi)容 可以根據(jù)自己所需進(jìn)行調(diào)整,ks文件需要用.cfg結(jié)尾,必須與default文件中指定的位置相同。 ks.cfg ↓上下滑動可查看完整內(nèi)容 #version=DEVEL install #表示是安裝系統(tǒng) # System authorization information auth --enableshadow --passalgo=sha512 #啟用加密 text #文本安裝 #graphical #圖形化安裝,注釋掉 # Use graphical install # Firewall configuration firewall --disabled #關(guān)閉防火墻 # SELinux configuration selinux --disabled #關(guān)閉selinux # Run the Setup Agent on first boot firstboot --disable #關(guān)閉第一次啟動后的安裝配置 ignoredisk --only-use=sda #默認(rèn)第一塊啟動盤 # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' #鍵盤 # System language lang en_US.UTF-8 #語言和編碼 # Network information network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate #安裝時配置網(wǎng)卡地址 network --hostname=localhost.localdomain #安裝時配置主機(jī)名 # System timezone timezone Asia/Shanghai #時區(qū) # System bootloader configuration bootloader --append=' crashkernel=auto' --location=mbr --boot-drive=sda #指定引導(dǎo)裝載程序怎樣被安裝 # Root password rootpw --iscrypted $1$vIP9ZiKA$ryz7cg0/2NwoOYVnHhHCF1 #root密碼 # System services #services --enabled='chronyd' # Do not configure the X Window System skipx #不使用圖形界面 # Accept license eula --agreed #同意最終用戶許可協(xié)議 # Reboot after installation reboot #安裝后重啟 # Disk partitioning information %include /tmp/partition.ks %pre #系統(tǒng)安裝前所執(zhí)行的腳本 #!/bin/sh # 創(chuàng)建分區(qū),如果分區(qū)比較簡單,可以放在上面,分區(qū)比較多的,可以像這樣寫腳本放在%pre塊內(nèi) act_mem=$(cat /proc/meminfo | grep MemTotal | awk '{printf('%d',$2/1024)}') echo '' > /tmp/partition.ks echo 'clearpart --all --initlabel' >> /tmp/partition.ks echo 'part pv.767 --fstype='lvmpv' --ondisk=sda --size=1 --grow' >> /tmp/partition.ks..ec01]oho 'part biosboot --fstype='biosboot' --ondisk=sda --size=2' >> /tmp/partition.ks echo 'part /boot --fstype='ext4' --ondisk=sda --size=512' >> /tmp/partition.ks echo 'volgroup rhel --pesize=4096 pv.767' >> /tmp/partition.ks echo 'logvol /data --fstype='ext4' --size=1 --grow --name=data --vgname=rhel' >> /tmp/partition.ks echo 'logvol / --fstype='ext4' --size=102400 --name=root --vgname=rhel' >> /tmp/partition.ks if [ ${act_mem} -ge 65536 ] then echo 'logvol swap --fstype=swap --name=swap --vgname=rhel --size=65536' >> /tmp/partition.ks elif [ ${act_mem} -le 8192 ] then echo 'logvol swap --fstype=swap --name=swap --vgname=rhel --size=${act_mem}' >> /tmp/partition.ks else echo 'logvol swap --fstype=swap --name=swap --vgname=rhel --size=$(expr ${act_mem} / 2)' >> /tmp/partition.ks fi %end %post #系統(tǒng)安裝后所執(zhí)行的腳本 #Sshd config sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config ...... /bin/sh /tmp/ip.sh /bin/sh /tmp/zabbix_agent.sh %packages #安裝包,%packages塊指定以下都是需要進(jìn)行安裝的包。 @base #最小化安裝需要@base和@core。@后寫的是包組 @console-internet @core autoconf #沒有任何前綴的表示需要安裝的包 chrony expect gcc gcc-c++ ...... %end #最后需要用%end結(jié)尾 %addon com_redhat_kdump --enable --reserve-mb='auto' ip.sh、ip.txt、zabbix_agent.sh是安裝后所需要執(zhí)行的腳本,配置在%post塊內(nèi),使用wget下載下來,再進(jìn)行執(zhí)行??梢宰孕芯帉懩_本實(shí)現(xiàn)功能,比如根據(jù)機(jī)器序列號進(jìn)行IP配置,進(jìn)行內(nèi)核參數(shù)調(diào)優(yōu),權(quán)限設(shè)置,加入zabbix監(jiān)控等等。 以下附加一份IP配置腳本,因?yàn)楸容^特殊,需要在網(wǎng)卡上配置vlan,打vlan標(biāo)簽。 ↓上下滑動可查看完整內(nèi)容 ip.txt #依次對應(yīng)序列號、業(yè)務(wù)網(wǎng)IP、數(shù)據(jù)網(wǎng)IP、管理網(wǎng)IP、主機(jī)名 XXXXXXXX 10.1.1.1 10.10.1.1 10.20.1.1 XXXX-1.1 ip.sh SN=`dmidecode -t 1 |grep 'Serial Number' |awk -F ': ' '{print $2}'` #取本機(jī)序列號 ip_1=`cat /tmp/ip.txt |grep $SN |awk -F ' ' '{print $2}'` #按照序列號指定對應(yīng)IP ip_10=`cat /tmp/ip.txt |grep $SN |awk -F ' ' '{print $3}'` ip_20=`cat /tmp/ip.txt |grep $SN |awk -F ' ' '{print $4}'` host_name=`cat /tmp/ip.txt |grep $SN |awk -F ' ' '{print $5}'` cat > /etc/sysconfig/network-scripts/ifcfg-eth2 <> TYPE=Ethernet BOOTPROTO=none DEVICE=eth2 ONBOOT=yes IPADDR=$ip_10 PREFIX=24 EOF cat > /etc/sysconfig/network-scripts/ifcfg-eth3 <> DEVICE=eth3 ONBOOT=yes IPADDR=$ip_20 cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <> DEVICE=eth0 ONBOOT=yes USERCL=no MASTER=bond0 SLAVE=yes EOF cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <> DEVICE=eth1 ONBOOT=yes USERCTL=no #config bond cat > /etc/sysconfig/network-scripts/ifcfg-bond0 < eof=""> DEVICE=bond0 BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=bond0 ONBOOT=yes IPADDR=$ip_1 PREFIX=24 GATEWAY=10.1.1.254 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes BONDING_OPTS='miimon=100 mode=4' EOF cat > /etc/sysconfig/network-scripts/route-eth2 < eof=""> 10.10.0.0/16 via 10.10.1.254 EOF cat > /etc/sysconfig/network-scripts/route-eth3 <> 10.20.0.0/16 via 10.20.1.254 EOF systemctl restart network echo '$host_name' > /etc/hostname echo '$ip_1 $host_name' >> /etc/hosts 上下滑動可查看完整內(nèi)容 五、小結(jié)
上面具體說了有關(guān)于pxe+kickstart的原理,以及l(fā)inux的自動化安裝配置。下面簡單說下esxi的自動化配置,原理是一樣的。 自動化配置安裝esxi6.0 以下環(huán)境192.168.1.1是http、tftp和dhcp的地址。先安裝所需要的工具包: [root@localhost ~]# yum install dhcp xinetd tftp-server httpd syslinux -y 配置DHCP [root@localhost ~]# vim /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option subnet-mask 255.255.255.0; DHCPDARGS=ens5f1; default-lease-time 600; max-lease-time 5400; next-server 192.168.1.1; filename '/gpxelinux.0'; # esxi和linux有所區(qū)別,esxi需要用gpxelinux.0這個文件 } [root@localhost ~]# systemctl restart dhcpd 配置HTTP [root@localhost ~]# vim /etc/httpd/conf/httpd.conf ServerName 192.168.1.1:80 [root@localhost ~]# systemctl restart httpd [root@localhost ~]# cd /var/www/html/ [root@localhost html]# mkdir Esxi6.3 # 創(chuàng)建鏡像存放的文件夾 [root@localhost html]# mount /data/ios/ESXi-6.3-Custom.iso /var/www/html/Esxi6.3 # 掛載鏡像到文件夾 [root@localhost html]# mkdir ks_cfg # 創(chuàng)建ks文件所用的文件夾 [root@localhost html]# ll ks_cfg/ -rw-r--r-- 1 root 503 Nov 14 15:34 esxi.cfg -rw-r--r-- 1 root 3541 Nov 14 15:46 esxi_ip 配置TFTP [root@localhost ~]# sed -i 's/\= yes/\= no/g' /etc/xinetd.d/tftp [root@localhost ~]# systemctl restart xinetd [root@localhost ~]# cd /var/lib/tftpboot/ [root@localhost tftpboot]# cp /var/www/html/Esxi6.3/mboot.c32 . [root@localhost tftpboot]# cp /var/www/html/Esxi6.3/boot.cfg . [root@localhost tftpboot]# cp /usr/share/syslinux/gpxelinux.0 . [root@localhost tftpboot]# mkdir pxelinux.cfg [root@localhost tftpboot]# cp /var/www/html/Esxi6.3/isolinux.cfg pxelinux.cfg/default [root@localhost tftpboot]# chown +w boot.cfg [root@localhost tftpboot]# chmod +w pxelinux.cfg/default [root@localhost tftpboot]# sed 's/\///g' boot.cfg # 將文件內(nèi)的/全部去掉 [root@localhost tftpboot]# vim boot.cfg # 在kernel=tboot.b00這行上面添加prefix [root@localhost tftpboot]# vim pxelinux.cfg/default # 多余的可以刪掉 DEFAULT 1 NOHALT 1 PROMPT 0 TIMEOUT 60 LABEL 1 KERNEL mboot.c32 服務(wù)配置就是這些,下面是ks文件: ↓上下滑動可查看完整內(nèi)容 [root@localhost ~]# cd /var/www/html/ks_cfg/ [root@localhost ks_cfg]# ll 自定義IP列表 [root@localhost ks_cfg]# cat esxi_ip 816399908 192.168.1.188 816399887 192.168.1.189 816399909 192.168.1.190 ks文件 [root@localhost ks_cfg]# cat esxi.cfg vmaccepteula # 同意vmware的協(xié)議 rootpw 1qaz!QAZ # 設(shè)置root密碼 install --firstdisk --overwritevmfs # 安裝并格式化第一塊本地盤 reboot # 安裝后重啟 %include /tmp/network.ks # 導(dǎo)入自定義ks腳本 %pre --interpreter=busybox # 安裝前的配置腳本 SN=$(localcli hardware platform get | awk '/Serial Number/ { print $NF }') ip=`cat /tmp/esxi_ip |grep $SN |awk -F ' ' '{print $2}'` echo 'network --bootproto=static --device=vmnic4 --ip=$ip --netmask=255.255.255.0 --gateway=192.168.1.254 --hostname=localhost --nameserver=192.168.1.1 --vlanid=201' > /tmp/network.ks # 可以在腳本中設(shè)置自定義網(wǎng)絡(luò) 上下滑動可查看完整內(nèi)容 我們的內(nèi)容大致就是以上這樣。 |
|