PXE+Kickstart 自動化部署系統
PXE(Preboot eXecute Environment,預啟動執行環境)是由Intel公司開發的技術,可以讓計算機通過網路來啟動作業系統(前提是計算機上安裝的網絡卡支援PXE技術),主要用於在無人值守安裝系統中引導客戶端主機安裝Linux作業系統。
Kickstart是一種無人值守的安裝方式,其工作原理是預先把原本需要運維人員手工填寫的引數儲存成一個ks.cfg檔案,當安裝過程中需要填寫引數時則自動匹配Kickstart生成的檔案。所以只要Kickstart檔案包含了安裝過程中需要人工填寫的所有引數,那麼從理論上來講完全不需要運維人員的干預,就可以自動完成安裝工作。
由於當前的客戶端主機並沒有完整的作業系統,也就不能完成FTP協議的驗證了,所以需要使用TFTP協議幫助客戶端獲取引導及驅動檔案。vsftpd服務程式用於將完整的系統安裝映象通過網路傳輸給客戶端。當然,只要能將系統安裝映象成功傳輸給客戶端即可,因此也可以使用httpd來替代vsftpd服務程式。
PXE的工作原理圖解
配置DHCP服務程式
配置DHCP服務的目的是為了給區域網內暫時沒有IP地址的機器分配一個IP地址,同時傳輸引導配置檔案pxelinux.0,需要注意的是,應該開啟DHCP的BOOTP功能,這樣當用戶獲取到IP地址後,會主動請求獲取引導驅動檔案,從而進入下一步操作.
1.首先通過Yum倉庫,安裝DHCP服務程式.
[[email protected] ~]# yum install -y dhcp Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Package 12:dhcp-4.2.5-68.el7.x86_64 already installed and latest version Nothing to do
2.編輯DHCP主配置檔案,寫入以下內容,開啟BOOTP功能.
[[email protected] ~]# vim /etc/dhcp/dhcpd.conf [[email protected] ~]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # subnet 192.168.1.0 netmask 255.255.255.0 { #指明分配網段 range 192.168.1.100 192.168.1.200; #分配的網段(100-200) next-server 192.168.1.10; #指定TFTP伺服器的地址 filename "pxelinux.0"; #指定PXE載入程式的檔名 default-lease-time 21600; max-lease-time 4320; }
3.啟動DHCP服務,並設定開機自啟動
[[email protected] ~]# systemctl restart dhcpd
[[email protected] ~]# systemctl enable dhcpd
配置TFTP服務程式
TFTP作為一種基於UDP協議的簡單檔案傳輸協議,不需要使用者認證即可獲取到使用者所需的檔案資源,因此接下來配置TFTP服務程式,為客戶主機提供引導及驅動檔案,當客戶端有了基本的驅動程式之後,在通過VSFTP服務程式將完整的光碟映象檔案傳輸過去.
1.首先通過Yum倉庫,安裝TFTP服務程式.
[[email protected] ~]# yum install -y tftp tftp-server xinetd
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package tftp-5.2-22.el7.x86_64 already installed and latest version
Package tftp-server-5.2-22.el7.x86_64 already installed and latest version
Nothing to do
2.TFTP是由xinetd服務守護的,所以要開啟TFTP只需要修改xinetd服務的幾個引數即可
[[email protected] ~]# vim /etc/xinetd.d/tftp
[[email protected] ~]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot #設定預設工作目錄
disable = no #設定ftp開機自啟動
per_source = 11
cps = 100 2
flags = IPv4
}
3.重啟xinetd服務,並設定為開機自啟動
[[email protected] ~]# systemctl restart xinetd
[[email protected] ~]# systemctl enable xinetd
配置SYSLinux服務程式
SYSLinux是一個用於提供引導載入的服務程式,與其說SYSLinux是一個服務程式,不如說我們更需要裡面的引導檔案,在安裝SYSLinux服務程式軟體包後/usr/share/syslinux目錄下回出現很多引導檔案.
1.首先通過Yum倉庫,安裝SYSLinux服務程式.
[[email protected] ~]# yum install -y syslinux mtools
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package syslinux-4.05-13.el7.x86_64 already installed and latest version
Package mtools-4.0.18-5.el7.x86_64 already installed and latest version
Nothing to do
2.然後拷貝pxelinux.0引導檔案到/var/lib/tftpboot目錄下
[[email protected] ~]# cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[[email protected] ~]# ls -l /var/lib/tftpboot/
total 28
-rw-r--r--. 1 root root 26826 May 10 2016 pxelinux.0
3.掛載RHEL光碟,並拷貝Linux的系統選單和微核心
[[email protected] ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]# cp -a /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[[email protected] ~]# cp -a /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
[[email protected] ~]# cp -a /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
[[email protected] ~]# cp -a /mnt/isolinux/boot.msg /var/lib/tftpboot/
4.然後再TFTP目錄中新建pxelinux.cfg目錄,並將開機選項選單複製到TFTP目錄中,重新命名為default.
[[email protected] ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[[email protected] ~]# cp -a /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/
[[email protected] ~]# mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
5.編輯這個default檔案,修改以下內容
[[email protected] ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
59 menu separator # insert an empty line
60
61 label linux
62 menu label ^Install Red Hat Enterprise Linux 7.5
63 menu default #新增預設選擇選單
64 kernel vmlinuz
65 append initrd=initrd.img ks=ftp://192.168.1.10/pub/ks.cfg #指定主伺服器IP地址
66
67 label check
68 menu label Test this ^media & install Red Hat Enterprise Linux 7.5
69 # menu default #註釋掉,不用測試功能
70 kernel vmlinuz
71 append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.5\x20Server.x86_64 rd.live.check quiet
72
73 menu separator # insert an empty line
配置VSFTP服務程式
前面的微核心傳輸完畢後,載入了開機選單,下面我們就要使用VSFTP完整的傳輸RHEL映象到遠端主機了,當然你也可以使用Web網站替代VSFTP的功能,不過還是推薦使用VSFTP.
1.首先通過Yum倉庫,安裝VSFTP服務程式.
[[email protected] ~]# yum install -y vsftpd
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package vsftpd-3.0.2-22.el7.x86_64 already installed and latest version
Nothing to do
2.拷貝RHEL光碟檔案到/var/ftp/pub目錄下,並賦予相應的許可權.
[[email protected] ~]# mkdir -r /var/ftp/pub
[[email protected] ~]# cp -r /mnt/* /var/ftp/pub
[[email protected] ~]# chmod 777 -R /var/ftp/pub
[[email protected] ~]# chown ftp.ftp -R /var/ftp/pub
3.開啟VSFTP匿名訪問模式,並設定開機自啟動
[[email protected] ~]# systemctl restart vsftpd
[[email protected] ~]# systemctl enable vsftpd
建立KickStart應答檔案
KickStart其實準確的說,並不是一個服務程式,而是一個應答檔案,其中包含了系統安裝過程中所需要的配置引數選項等,在我們安裝完系統後,root的家目錄裡會有一個anaconda-ks.cfg檔案,其實這就是安裝完本系統的劇本,我們也可以多次利用.
1.這裡我們直接複製下面的應答檔案,改個名字即可使用啦.
#此處應配置生成裝機檔案 本步驟跳過(以下是測試指令碼)
#-------------------------------------------------------------------
[[email protected] ~]# vim ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation#
url --url="ftp://192.168.1.10/pub/" #此處修改為伺服器IP
# Root password
rootpw --iscrypted $1$K4WAmqxk$ccusVq9PIk6f1uMqJ48fI1
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=500
part swap --fstype="swap" --size=2000
part / --fstype="ext4" --grow --size=1
clearpart --all --initlabel
%packages
@base
%end
#-------------------------------------------------------------------
[[email protected] ~]# cp -a ks.cfg /var/ftp/pub #拷貝生成的指令碼到指定目錄下
如果您覺得以上指令碼不能滿足生產需求,您可以安裝system-config-kickstart軟體包,這是一款圖形介面工具,可以方便的配置生成系統安裝指令碼.