DHCP+TFTP+NFS+kickstart分佈式無人值守自動安裝系統

簡介

1、什麼是PXE

PXE(preboot execute environment,預啓動執行環境)是由Intel公司開發的,基於Client/Server模式的一種技術,其核心功能是讓客戶端通過網絡從遠端服務器下載啓動鏡像,並由此支持通過網絡啓動操作系統,從而實現網絡啓動。在啓動過程中,客戶端要求服務器分配IP地址,再用TFTPtrivial file transfer protocol,簡單文件傳輸協議)或MTFTP(multicast trivial file transfer protocol,組播簡單文件傳輸協議)協議下載一個啓動鏡像到本機內存中執行,由這個啓動文件完成客戶端的基本軟件設置,從而引導預先放置在服務器中的操作系統。

嚴格來說,PXE 並不是一種安裝方式,而是一種引導方式。進行PXE安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支持的網卡(Network Interface CardNIC,網絡接口卡),即網卡中必須要有 PXE ClientPXE client集成在網卡ROM中,當計算機引導時,BIOSPXE client調入內存執行。然後由 PXE Client 將放置在遠端的文件通過網絡下載到本地運行。

部署流程爲:客戶端(無操作系統的裸機)首先需要在BIOS中設置通過網絡啓動,當客戶端啓動後,就會通過發送廣播包的形式尋找DHCP服務器,如果找到DHCP服務器後,即可向該服務器申請包括IP地址在內的網絡參數,並通過DHCP獲得TFTP 服務器的位置。此外,在 PXE Client ROM 中,已經存在了 TFTP Client,那麼它就可以通過 TFTP 協議到 TFTP 服務器上下載所需的啓動文件到本機內存中運行,最終實現無盤啓動的功能。如下爲工作示意圖:

圖片1.png

PXE組件所需服務:

    DHCP服務:提供客戶端網絡參數與TFTP的位置,以及boot loader的文件

    TFTP服務:提供引導程序下載

    NFS:提供PXE系統安裝源

客戶機應具備的條件:

    網卡ROM必須支持PXE協議

    主板支持網絡啓動

    PXE技術只能實現從網絡啓動,讀取安裝程序進入安裝界面後,剩餘的步驟如語言設置、系統管理員密碼、分區設置等還需要手動配置,至此,我們僅可實現無光盤網絡啓動,若要實現無人值守自動安裝,還需要一種所謂的kickstart的技術。

2、什麼是Kickstart

    Kickstart是一種無人值守自動部署安裝操作系統的方式。這種技術的核心是自動應答文件(kickstart文件),即將本來在安裝過程中需要手動配置的語言、密碼、網絡等各種參數,通過讀取自動應答文件實現自動設置。也就是說,將傳統的安裝方式中對操作系統的手中設置事先寫入自動應答文件,開始安裝系統時,爲安裝程序指定自動應答文件的位置,最終實現自動安裝及部署操作系統。

PXE+Kickstart 無人值守安裝操作系統完整過程如下:

圖片2.png

Kickstart文件可通過如下三種方式生成:

    1】手動編寫(需要一個文本編輯器,如vim)

    2】通過system-config-kickstart圖形工具

    3】通過紅帽的安裝程序anaconda自動生成

以下過程主要通過system-config-kickstart圖形工具進行生成自動應答文件。

二、自動安裝案例

1、環境介紹

    實際生產環境,一般是將DHCP+TFTP+NFS/FTP/HTTP(任選一種安裝源)三種服務部署到一臺服務器上,這裏實驗環境,分別安裝到三臺服務器,環境如下:

    安裝工具:kickstart + DHCP + NFS + TFTP

    操作系統:CentOS Linux release 7.3.1611 (Core)

    光盤鏡像:CentOS-7-x86_64-DVD-1611.iso

    Workstaion網絡:橋接模式

    DHCP服務器網卡地址:192.168.0.100/24

    TFTP服務器網卡地址:192.168.0.110/24

    NFS服務器網卡地址:192.168.0.120/24

 

2、三臺服務器準備工作

服務器禁用SElinux和防火牆

[root@bogon ~]# cat /etc/centos-release

CentOS Linux release 7.3.1611 (Core)

[root@kickstart ~]# setenforce 0

[root@bogon ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/sysconfig/selinux

[root@bogon ~]# egrep -v "^$|^#" /etc/sysconfig/selinux

[root@kickstart ~]# getenforce

或者

[root@bogon ~]# sestatus 

[root@bogon ~]# systemctl stop firewalld

[root@bogon ~]# systemctl disable firewalld

一)部署DHCP

1、安裝dhcp服務端程序

[root@bogon ~]# yum -y install dhcp

2、修改dhcpd配置文件

[root@bogon ~]# \cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

用 \cp 執行cp命令時不走alias別名設置。

[root@bogon ~]# vim /etc/dhcp/dhcpd.conf

從配置文件47行開始修改成如下信息:

# A slightly different configuration for an internal subnet.

subnet 192.168.0.0 netmask 255.255.255.0 {  //指定爲 192.168.0.0網段分配動態IP地址

  range 192.168.0.140 192.168.0.177;   //配置dhcp服務器爲客戶端分配的租用地址範圍

  option domain-name-servers 8.8.8.8; //爲客戶端分配的DNS地址

  option routers 192.168.0.1;  爲客戶端分配的網關地址

  default-lease-time 600;   //默認租約時間

  max-lease-time 7200;   //最大租約時間

  next-server 192.168.0.123;  // tftp服務器地址

  filename "pxelinux.0";   //tftp服務器根目錄下的文件名

}

圖片3.png

3、啓動DHCP服務

[root@bogon ~]# systemctl start dhcpd

[root@bogon ~]# systemctl enable dhcpd

二)部署TFTP

1、安裝TFTP服務端程序

[root@localhost ~]# yum -y install tftp-server xinetd

2、修改TFTP服務的配置文件

[root@localhost ~]# vim /etc/xinetd.d/tftp

編輯配置文件/etc/xinetd.d/tftp 內容如下

圖片4.png

    在TFTP配置文件/etc/xinetd.d/tftp中,disable默認值由yes改爲no,表示該服務由默認的禁用狀態變爲啓動該服務。另外,該配置文件中server_args選項定義了共享文件放置的目錄(TFTP的根目錄),路徑爲:/var/lib/tftpboot。

3、將客戶端所需要的啓動文件複製到TFTP服務器

    一般從本地來引導系統,需要grub引導加載器程序。如果要使用PXE的開機引導的話,需要使用CentOS提供的syslinux包。裏面包含引導程序文件pxelinux.0 ,syslinux是一個功能強大的引導加載程序,而且兼容各種介質。可以說SYSLINUX是一個小型的Linux操作系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啓動盤。所以,需要安裝syslinux軟件包。

[root@localhost ~]# yum install -y syslinux

複製pxelinux.0文件至TFTP的根目錄/var/lib/tftpboot/文件夾中

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

將提供圖形化菜單功能文件拷貝到TFTP服務根目錄下

[root@localhost~]# cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/

    如果沒有menu.c32或vesamenu.c32時,菜單會以純文字模式一行一行顯示。如果使用menu.c32或vesamenu.c32,就會有類似反白效果出現,此時可以使用上下鍵來選擇選項,而不需要看着屏幕去輸入數字鍵來選擇開機選項。經過測試,使用vesamenu.c32比menu.c32更加好看些。

4、將boot loader和內核等文件拷貝到TFTP服務器,boot loader相關的配置文件在光盤中,首先掛載光盤

[root@bogon ~]# mount /dev/cdrom /media/cdrom/

在TFTP共享目錄中新建pxelinux.cfg目錄

[root@bogon ~]# mkdir /var/lib/tftpboot/pxelinux.cfg  

導入配置文件到pxelinux.cfg目錄

[root@localhost~]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

將窗口提示信息文件boot.msg和窗口背景圖片splash.png拷貝到TFTP服務根目錄下

[root@localhost~]# cp /media/cdrom/isolinux/{boot.msg,splash.png} /var/lib/tftpboot/

從光盤中複製啓動鏡像文件和啓動配置文件至TFTP共享目錄。

[root@localhost~]# cp /media/cdrom/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/

[root@bogon ~]# ll /var/lib/tftpboot/

圖片5.png

5、修改引導菜單文件

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

首先修改菜單等待時間,在第2行

timeout 60  //菜單顯示等待時間,單位爲1/10秒,默認等待60秒,將其改爲6秒。

下一步修改引導菜單,在label linux下添加menu default ,表示默認的光標停留在此label上,直接安裝系統即可

再將label check下menu default(原68行)刪除,表示不用檢查光盤並安裝

效果如下:

QQ截圖20180405220455.png

    從上面配置信息中可以看出,以label開始名稱爲Linux的常規引導方式,menu label指定引導菜單的名稱,menu後面的default指定爲默認引導菜單,kernel指定的是系統內核文件,在上面步驟中,已經從光盤將vmlinuz文件複製到TFTP服務的共享目錄下。若沒有ks參數,可以實現無光盤啓動,後面安裝步驟需要手動進行,設置ks參數可以指定自動應答文件的位置,從而實現無人值守自動安裝部署操作系統。

6、啓動TFTP服務,並設置爲開機啓動

[root@bogon ~]# systemctl start xinetd

[root@bogon ~]# systemctl enable xinetd

[root@localhost ~]# systemctl enable tftp   //可選

因爲tftp服務是屬於簡單的文件共享服務,由超級服務xinetd進行管理的,所以通過啓動xinetd來啓動tftp服務。

三)部署NFS

    NFS是network file system的簡寫,即網絡文件系統。它的主要功能是通過網絡讓不同的機器系統之間可以彼此共享文件和目錄。NFS服務器可以允許NFS客戶端將遠端NFS服務器端的共享目錄掛載到本地的NFS客戶端中。在本地的NFS客戶端的機器看來,NFS服務器端共享的目錄就好像自己的磁盤分區和目錄一樣。一般客戶端掛載到本地目錄的名字可以隨便,但爲方便管理,我們要和服務器端一樣比較好。

1、使用NFS方式提供安裝文件,首先安裝軟件

[root@bogon ~]# yum install nfs-utils -y   //會連同rpcbind依賴包一起安裝。

2、掛載光盤

[root@bogon ~]# mount /dev/cdrom /media/cdrom

3、NFS服務配置

[root@bogon ~]# vim /etc/exports

添加信息:

/media/cdrom/ 192.168.0.0/24(ro)

/ks/ks.cfg 192.168.0.0/24(ro)

    /etc/exports文件默認內容爲空,裏面每行指定一個輸出的文件系統和哪些機器可以訪問該文件系統。在指定機器訪問權限的同時,訪問選項開關也可以被指定。在上面的內容中,共享目錄爲/media/cdrom/,後面的IP地址表示僅192.168.0.0/24網段可以訪問該共享目錄,ro表示客戶端訪問的權限爲只讀(read only)。

    這裏使用它作爲centos系統文件的共享服務平臺,當客戶端從網絡啓動正式進入安裝界面後,還需要讀取centos光盤中的系統文件,以完成最後的安裝。

4、啓動NFS服務

[root@bogon ~]# systemctl start nfs

[root@bogon ~]# systemctl enable nfs

5、在客戶端進行查看服務端掛載情況

[root@bogon ~]# showmount -e 192.168.0.120

在客戶端將服務端共享的目錄掛載到本地

圖片6.png

6、在NFS服務器上安裝自動應答文件生產工具

    生成kickstart文件時,需要安裝通過yum -y install system-config-kickst 安裝此軟件包,安裝的軟件包之前,首先需要repo文件中第一行寫成[development],括號中填寫development,填寫其他內容會導致後面system-config-kickstart命令生成kickstart文件時無法選擇軟件包。如下圖:

圖片7.png

修改yum源即可,如下:

[root@bogon ~]# cat /etc/yum.repos.d/local.repo

[development]     //一定叫這個名稱,否則報軟件包選擇禁止的錯誤

name=local repo centos 7.3 on /media/cdrom

baseurl=file:///media/cdrom

gpgcheck=0

7、安裝創建kickstart文件的圖形工具

[root@bogon ~]# yum -y install system-config-kickstart

8、執行system-config-kickstart命令進入kickstart配置程序

[root@bogon ~]# system-config-kickstart

    使用xshell軟件遠程連接NFS服務器時,選擇連接中ssh的隧道選項,一定勾選轉發X11連接到xmanager選項,同時要在真實客戶端電腦中安裝xmanager軟件。

圖片8.png

1】基本配置選項如下:

圖片9.png

2】安裝方法選擇全新安裝和NFS方式

圖片10.png

3】引導裝載程序選項

圖片11.png

4】分區信息

圖片12.png

5】網絡配置

    網絡配置選項可以現在配置也可以安裝完系統後配置,現在配置的話,最好不要選擇DHCP動態獲取IP,不然下次遠程連接系統指不定換成什麼IP了。這裏選擇配置靜態IP,如下

圖片13.png

6】驗證選項保持默認即可

圖片14.png

7】防火牆配置

實際配置設備時,最好啓動selinux安全機制和防火牆,並勾選需要的服務,這裏實驗就禁用了。

圖片15.png

】顯示配置

安裝圖形環境,可不勾選,不是安裝桌面。

圖片16.png

9】軟件選擇

根據需要勾選需要安裝的軟件包。

圖片17.png

10】安裝後腳本

預安裝腳本選項,在安裝系統前需要執行的腳本或命令很少,保持默認即可。安裝後腳本可以添加一些系統完成安裝後要執行的命令。

圖片18.png

最後點擊文件選擇保存,文件名稱隨意,後綴名稱必須爲.cfg,選擇好保存位置,提供給客戶端訪問。

安裝後:

cat <<EOF> /etc/yum.repos.d/local.repo

[local_repo]

name=local repo centos 7.3 on /media/cdrom

baseurl=file:///media/cdrom

gpgcheck=0

EOF

rm -f /etc/yum.repos.d/{CentOS-Debuginfo.repo,CentOS-Vault.repo,CentOS-CR.repo,CentOS-fasttrack.repo,CentOS-Sources.repo,CentOS-Media.repo}

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

echo "set nu" > /root/.vimrc

ping -c 4 www.baidu.com > /root/ping.txt

yum -y install wget lrzsz vim

保存後使用命令檢查語法是否正確

[root@bogon ~]# ksvalidator /ks/ks.cfg

9、重啓NFS服務

[root@bogon ~]# systemctl restart nfs

四)在裸機中測試

1、引導菜單有效果,

圖片19.png

2、安裝過程

圖片20.png

最後,若在圖形界面安裝,裸機客戶端內存最好2G左右,文本安裝則1G左後!















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章