Linux系統下手把手完成無人值守安裝服務

安全劍客發表於2019-02-14

剛入職的運維新手經常會被要求去做一些安裝作業系統的工作,如果按照用映象光碟安裝作業系統,效率會相當低下。那麼如何提升效率,搭建出一套可以批量安裝 Linux 系統的無人值守的安裝系統?

PXE+TFTP+FTP+DHCP+Kickstart 服務可以搭建出一個無人值守安裝系統。這種無人值守安裝系統可以自動的為數十臺伺服器安裝系統,將運維人員從重複性的工作中解救出來,大大提升了系統安裝的效率。

 

如上圖所示,是無人值守安裝系統的工作流程。

PXE (Preboot eXecute Environment,預啟動執行環境)是由 Intel 公司開發的技術,可以讓計算機通過網路來啟動作業系統(前提是計算機上安裝的網路卡支援 PXE 技術),主要用於在無人值守安裝系統中引導客戶端主機安裝 Linux 作業系統。Kickstart 是一種無人值守的安裝方式,其工作原理是預先把原本需要運維人員手工填寫的引數儲存成一個ks.cfg 檔案,當安裝過程中需要填寫引數時則自動匹配 Kickstart 生成的檔案。所以只要Kickstart 檔案包含了安裝過程中需要人工填寫的所有引數,那麼從理論上來講完全不需要運維人員的干預,就可以自動完成安裝工作。

當然需要使用 TFTP 協議幫助客戶端獲取引導及驅動檔案。vsftpd 服務程式用於將完整的系統安裝映象通過網路傳輸給客戶端。當然,只要能將系統安裝映象成功傳輸給客戶端即可,因此也可以使用 httpd 來替代 vsftpd 服務程式。

首先,配置DHCP服務程式。DHCP 服務程式用於為客戶端主機分配可用的 IP 地址,而且這是伺服器與客戶端主機進行檔案傳輸的基礎,因此我們先行配置 DHCP 服務程式。

[root@linuxprobe linuxprobe]# yum install dhcp

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

allow booting;

allow bootp;

ddns-update-style interim;

ignore client-updates;

subnet 192.168.10.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;

option domain-name-servers 192.168.10.10;

range dynamic-bootp 192.168.10.100 192.168.10.200;

default-lease-time 21600;

max-lease-time 43200;

next-server 192.168.10.10;

filename "pxelinux.0";

}

該操作的目的是為了允許BOOTP載入程式協議,旨在讓區域網內暫時沒有作業系統的主機也能獲取靜態 IP地址;在配置檔案的最下面載入了引導驅動檔案 pxelinux.0 ,其目的是讓客戶端主機獲取到 IP 地址後主動獲取引導驅動檔案,自行進入下一步的安裝過程。具體解釋見《Linux就該這麼學》。

第二步,配置TFTP服務程式。

vsftpd 是一款功能豐富的檔案傳輸服務程式,允許使用者以匿名開放模式、本地使用者模式、虛擬使用者模式來進行訪問認證。但是,當前的客戶端主機還沒有安裝作業系統,該如何進行登入認證呢?而 TFTP 作為一種基於 UDP 協議的簡單檔案傳輸協議,不需要進行使用者認證即可獲取到所需的檔案資源。因此接下來配置 TFTP 服務程式,為客戶端主機提供引導及驅動檔案。當客戶端主機有了基本的驅動程式之後,再通過 vsftpd 服務程式將完整的光碟映象檔案傳輸過去。

[root@linuxprobe ~]# yum install tftp-server

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

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot

disable = no

per_source = 11

cps = 100 2

flags = IPv4

}

第三步,配置SYSLinux服務程式。SYSLinux 是一個用於提供引導載入的服務程式。與其說 SYSLinux 是一個服務程式,不如說更需要裡面的引導檔案,在安裝好 SYSLinux 服務程式軟體包後,/usr/share/syslinux 目錄中會出現很多引導檔案。

[root@linuxprobe ~]# yum install syslinux

[root@linuxprobe ~]# cd /var/lib/tftpboot

[root@linuxprobe tftpboot]# cp /usr/share/syslinux/pxelinux.0 .

[root@linuxprobe tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .

[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .

首先需要把 SYSLinux 提供的引導檔案複製到 TFTP 服務程式的預設目錄中,也就是前文提到的檔案 pxelinux.0,這樣客戶端主機就能夠順利地獲取到引導檔案了。另外在 RHEL 7 系統光碟映象中也有一些我們需要調取的引導檔案。確認光碟映象已經被掛載到/media/cdrom 目錄後,使用複製命令將光碟映象中自帶的一些引導檔案也複製到 TFTP 服務程式的預設目錄中。

[root@linuxprobe tftpboot]# mkdir pxelinux.cfg

[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default

然後在 TFTP 服務程式的目錄中新建 pxelinux.cfg 目錄,雖然該目錄的名字帶有字尾,但依然也是目錄,而非檔案!將系統光碟中的開機選項選單複製到該目錄中,並命名為 default。這個 default 檔案就是開機時的選項選單,如圖所示。

第四步,配置vdftpd服務程式。

[root@linuxprobe ~]# yum install vsftpd

在確認系統光碟映象已經正常掛載到/media/cdrom 目錄後,把目錄中的光碟映象檔案全部複製到 vsftpd 服務程式的工作目錄中。

[root@linuxprobe ~]# cp -r /media/cdrom/* /var/ftp

最後,建立KickStart應答檔案。

畢竟,我們使用 PXE + Kickstart 部署的是一套“無人值守安裝系統服務”,而不是“無人值守傳輸系統光碟映象服務”,因此還需要讓客戶端主機能夠一邊獲取光碟映象,還能夠一邊自動幫我們填寫好安裝過程中出現的選項。

在 root 管理員的家目錄中有一個名為 anacondaks.cfg 的檔案,它就是應答檔案。下面將這個檔案複製到 vsftpd 服務程式的工作目錄中(在開機選項選單的配置檔案中已經定義了該檔案的獲取路徑,也就是 vsftpd 服務程式資料目錄中的 pub 子目錄中)。使用 chmod 命令設定該檔案的許可權,確保所有人都有可讀的許可權,以保證客戶端主機可以順利獲取到應答檔案及裡面的內容:

[root@linuxprobe ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg

[root@linuxprobe ~]# chmod +r /var/ftp/pub/ks.cfg

到目前為止,我們的服務基本部署完畢,集體詳細解釋過程參見 《Linux就該這麼學》 ,希望本文對剛入職的運維人員有一定的幫助。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2634153/,如需轉載,請註明出處,否則將追究法律責任。

相關文章