日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

酸爽!我用這套無人值守安裝系統(tǒng)瞬間搞定上百臺服務(wù)器

 嘿嘿嘿v 2018-12-14

季城希,甜橙金融運(yùn)維工程師,多年IDC運(yùn)維經(jīng)驗(yàn)。擅長IDC中服務(wù)器批量高效快速集成交付,精通各品牌型號服務(wù)器硬件產(chǎn)品及維護(hù)。

一、前言

為啥要用無人值守安裝系統(tǒng)?很簡單的答案,就是方便日常工作。

常規(guī)裝系統(tǒng)的辦法有哪些?

  • 光盤安裝系統(tǒng):一個服務(wù)器DVD內(nèi)置光驅(qū)百千塊,百臺服務(wù)器都配光驅(qū)就浪費(fèi)了,因?yàn)橐慌_服務(wù)器也就開始裝系統(tǒng)能用的上,以后用的機(jī)會屈指可數(shù)。

  • U盤安裝系統(tǒng):還是同樣的問題,要一臺一臺服務(wù)器插U盤。

  • 網(wǎng)絡(luò)安裝系統(tǒng)(ftp,http,nfs) :只要服務(wù)器能聯(lián)網(wǎng)就可以裝系統(tǒng)了,但還是需要一臺臺服務(wù)器去敲鍵盤點(diǎn)鼠標(biāo)。

無人值守安裝系統(tǒng)好處都有啥?

  • 對于個人:裝系統(tǒng)大部分時間都浪費(fèi)于下一步、下一步等操作,浪費(fèi)了寶貴的時間。

  • 對于行業(yè):自打若干年前Red Hat推出了Kickstart,此后我們搞服務(wù)器的運(yùn)維頓覺身價倍增。不再需要刻了光盤一臺一臺地安裝Linux,只要搞定PXE、DHCP、TFTP,還有那滿屏眼花繚亂不知所云的Kickstart腳本,瞬間安裝上百臺服務(wù)器。

二、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ā)送請求

  • 當(dāng)計算機(jī)開機(jī)時第一次登錄網(wǎng)絡(luò)的時候,發(fā)現(xiàn)本機(jī)上沒有任何IP地址設(shè)定。PXE Client會從自己的PXE網(wǎng)卡啟動,通過PXE BootROM(自啟動芯片)會以UDP(簡單用戶數(shù)據(jù)報協(xié)議)發(fā)送一個廣播請求,源IP地址是0.0.0.0,發(fā)送DHCP discover發(fā)現(xiàn)信息來尋找DHCP服務(wù)器,即向目標(biāo)IP地址是255.255.255.255發(fā)送特定的廣播信息。

  • 網(wǎng)絡(luò)上每一臺安裝了TCP/IP協(xié)議的主機(jī)都會接收到這個廣播信息,但只有DHCP服務(wù)器才會做出響應(yīng)。

2、DHCP服務(wù)器提供信息

  • DHCP服務(wù)器收到客戶端的請求,驗(yàn)證是否來至合法的PXE Client的請求,驗(yàn)證通過它將給客戶端一個“提供”響應(yīng),這個“提供”響應(yīng)中包含了為客戶端分配的IP地址和其他設(shè)置的DHCP offer信息。

  • DHCP offer提供信息包括pxelinux啟動程序(TFTP)位置,以及PXE配置文件所在位置(該文件一般是放在一臺TFTP服務(wù)器上)。

3、DHCP客戶機(jī)接收IP和服務(wù)器的互動

  • DHCP客戶端接受到DHCP offer提供信息之后,選擇第一個接收到的提供信息,然后以廣播的方式回答一個DHCP request請求信息,該信息包含向它所選定的DHCP服務(wù)器請求IP地址的內(nèi)容。

  • 當(dāng)DHCP服務(wù)器收到DHCP客戶端回答的DHCP request請求信息之后,便向DHCP客戶端發(fā)送一個包含它所提供的IP地址和其他設(shè)置的DHCP ack確認(rèn)信息,告訴DHCP客戶端可以使用它提供的IP地址。

  • 然后,DHCP客戶機(jī)便將其TCP/IP協(xié)議與網(wǎng)卡綁定。

  • 另外,除了DHCP客戶機(jī)選中的服務(wù)器外,其他的DHCP服務(wù)器將收回曾經(jīng)提供的IP地址。這是第一次初始化網(wǎng)絡(luò)。

4、PXE客戶端請求下載啟動文件

  • 客戶端收到服務(wù)器的“回應(yīng)”后,會回應(yīng)一個幀,以請求傳送啟動所需文件。這些啟動文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

5、Boot Server響應(yīng)客戶端請求并傳送文件

  • 當(dāng)服務(wù)器收到客戶端的請求后,他們之間之后將有更多的信息在客戶端與服務(wù)器之間作應(yīng)答,用以決定啟動參數(shù)。BootROM由TFTP通訊協(xié)議從Boot Server下載啟動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)??蛻舳巳〉胮xelinux.0 文件后之執(zhí)行該文件,向服務(wù)器請求下載pxelinux.cfg文件。客戶端pxelinux.cfg配置文件后,請求vmlinuz文件和initrd.img文件,會根據(jù)該文件中定義的引導(dǎo)順序,啟動Linux安裝程序的引導(dǎo)內(nèi)核。

  • pxeliunx.0:網(wǎng)絡(luò)引導(dǎo)程序pxe文件

  • pxelinux.cfg/default:指定鏡像的位置或ks文件位置

  • vmlinuz:引導(dǎo)內(nèi)核

  • initrd.img:小型的linux操作系統(tǒng),類似于windows的PE

6、請求下載自動應(yīng)答文件

  • 客戶端通過pxelinux.cfg/default文件成功的引導(dǎo)Linux安裝內(nèi)核后,安裝程序首先必須確定你通 過什么安裝介質(zhì)來安裝Linux,如果是通過網(wǎng)絡(luò)安裝(NFS, FTP, HTTP),則會在這個時候初始化網(wǎng)絡(luò)(這是第二次初始化網(wǎng)絡(luò)),并定位安裝源位置。

  • 接著會讀取default文件中指定的自動應(yīng)答文件ks.cfg所在位置,根據(jù)該位置請求下載該文件。

  • PXE獲取的是安裝用的內(nèi)核以及安裝程序等,而安裝程序要獲取的是安裝系統(tǒng)所需的二進(jìn)制包以及配置文件PXE模塊和安裝程序是相對獨(dú)立的,PXE的網(wǎng)絡(luò)配置并不能傳遞給安裝程序,從而進(jìn)行兩次獲取IP地址過程,但I(xiàn)P地址在DHCP的租期內(nèi)是一樣的。

7、客戶端安裝操作系統(tǒng)

  • 將ks.cfg文件下載回來后,通過該文件找到OS Server,并按照該文件的配置請求下載安裝過程需要的軟件包。OS Server和客戶端建立連接后,將開始傳輸軟件包,客戶端將開始安裝操作系統(tǒng)。

  • 安裝完成后,將提示重新引導(dǎo)計算機(jī)。

三、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分配方式:

  • 自動分配(Automatic Allocation),當(dāng)DHCP客戶端第一次成功地從DHCP服務(wù)器端分配到一個IP地址之后,就永遠(yuǎn)使用這個地址。

  • 動態(tài)分配(Dynamic Allocation),當(dāng)DHCP客戶端第一次從DHCP服務(wù)器分配到IP地址后,并非永久地使用該地址,每次使用完后,DHCP客戶端就得釋放這個IP地址,以給其他客戶端使用。

  • 手動分配,由DHCP服務(wù)器管理員專門為客戶端指定IP地址。

配置DHCP

DHCP指定監(jiān)聽網(wǎng)卡

  • 監(jiān)聽所有的網(wǎng)卡,默認(rèn)不填就會監(jiān)聽所有的網(wǎng)卡DHCPDARGS=

  • 監(jiān)聽單個網(wǎng)卡,后面寫上你想監(jiān)聽的網(wǎng)卡的名字,如想監(jiān)聽eth0,eth1,就填它的名字DHCPDARGS=eth1

  • 監(jiān)聽多個網(wǎng)卡,填幾個就會去監(jiān)聽那幾個網(wǎng)卡,以空格分開DHCPDARGS=eth0 eth1

注意:在實(shí)際生產(chǎn)環(huán)境中,可能會有多個網(wǎng)絡(luò)環(huán)境而且環(huán)境不會互通,可以結(jié)合自己公司的情況進(jìn)行優(yōu)化:

  • 物理機(jī)一般不止一塊網(wǎng)卡,為了確保主機(jī)能分配到地址,最好指定網(wǎng)卡啟動dhcp

  • 默認(rèn)租約時間要設(shè)小一點(diǎn),因?yàn)槭怯脕碜鰌xe安裝大量服務(wù)器系統(tǒng),在ip地址有限的情況(本段地址可能已經(jīng)被用掉很多地址,剩下的不夠被所有機(jī)器分配)下,盡量縮小默認(rèn)租約時間,以防止安裝時第一批機(jī)器裝完,IP地址沒有釋放,第二批機(jī)器分配不到IP地址的情況

  • 條件足夠的情況下,最好專門分配一個vlan用于裝機(jī),這樣可以防止很多意外發(fā)生。

  • 在復(fù)雜網(wǎng)絡(luò)環(huán)境中指定服務(wù)器重裝可以使用dhcp的mac地址綁定的方式

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配置文件的三種方法:

  • 方法1:每安裝好一臺Centos機(jī)器,Centos安裝程序都會創(chuàng)建一個kickstart配置文件,記錄你的真實(shí)安裝配置。如果你希望實(shí)現(xiàn)和某系統(tǒng)類似的安裝,可以基于該系統(tǒng)的kickstart配置文件來生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于 /root/anaconda-ks.cfg)

  • 方法2:Centos提供了一個圖形化的kickstart配置工具。在任何一個安裝好的Linux系統(tǒng)上運(yùn)行該工具,就可以很容易地創(chuàng)建你自己 的kickstart配置文件。kickstart配置工具命令為system-config-kickstart

  • 方法3:閱讀kickstart配置文件的手冊。用任何一個文本編輯器都可以創(chuàng)建你自己的kickstart配置文件。

ks.cfg文件組成大致分為3段

命令段:

鍵盤類型,語言,安裝方式等系統(tǒng)的配置,有必選項和可選項,如果缺少某項必選項,安裝時會中斷并提示用戶選擇此項的選項

軟件包段:

  • %packages

  • @groupname:指定安裝的包組

  • package_name:指定安裝的包

  • -package_name:指定不安裝的包

  • 在安裝過程中默認(rèn)安裝的軟件包,安裝軟件時會自動分析依賴關(guān)系。

腳本段(可選):

  • %pre:預(yù)安裝腳本(由于只依賴于啟動鏡像,支持的命令很少)

  • %post:后安裝腳本(基本支持所有命令)

  • 而具體的ks.cfg文件的配置,我們只需要在已經(jīng)安裝好的linux的root家目錄找到anaconda_ks.cfg(這個ks文件就是在安裝linux后,根據(jù)用戶的安裝選項自動生成的)

↓上下滑動可查看完整內(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 [ --type= ]

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 ] [ --port= ]

--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 |swap|pv.id|rdid.id

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= --device=

掛載點(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é)

  • PXE客戶端獲取鏡像的方式不僅僅只有http,還有nfs和FTP

  • 在多網(wǎng)卡的情況下,最好指定網(wǎng)卡來啟用DHCP

  • tftp安裝時是安裝tftp-server,并且它被xinetd所管理,所以需要安裝xinetd

  • pxelinux.0文件在/usr/share/syslinux文件夾下,如果沒有,需要安裝syslinux

  • 使用pxe+kickstart時,最好關(guān)閉selinux和firewall

  • tftp根目錄下的文件,如vmlinuz等文件最好是從所安裝鏡像的文件目錄下的isolinux下拷過去,不能隨便用別的鏡像內(nèi)的文件,會報錯

  • 細(xì)讀流程,知道原理,在報錯的時候才好排錯

上面具體說了有關(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)容大致就是以上這樣。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多