1. 程式人生 > >記一次用PXE+kickstart批量為20臺新服務器安裝centos7

記一次用PXE+kickstart批量為20臺新服務器安裝centos7

根據 命令行界面 exe user size linux c mman win8 windows

基於PXE+kickstart批量安裝centos7:

本文是純文字,後續會補充圖片

1.環境:

CentOS Linux release 7.4.1708 (Core)
kernel:3.10.0-693.el7.x86_64

2.PXE、kickstart簡介

PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,
工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,
並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配IP地址,
再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)

協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成終端基本軟件設置,
從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,
如:Windows95/98/2000/windows2003/windows2008/win7/win8,linux等。

3.需要安裝的服務,以及應用:

DHCP 用於批量安裝時客戶端自動獲取IP,並提供引導系統所需的其他信息
TFTP 傳輸小文件非常便捷的根據,因為系統開機啟動時引導文件和加載的內核文件都是小文件,所以一般選TFTP
FTP(NFS,HTTP..) 引導完成並成功加載內核後就需要向系統提供安裝所需的各種系統軟件,大文件傳輸用FTP、HTTP、NFS更可靠,我這裏用的是FTP

應用:
system-config-kickstart.noarch 用於生成自應答文件ks.cfg,我是圖形界面下安裝後生成ks.cfg文件的,似乎命令行界面也能,後續會嘗試
syslinux 安裝後會生成系統引導文件/usr/share/syslinux/pxelinux.0

***安裝前要關閉防火墻和selinux

4.安裝DHCP服務

yum install -y dhcp
配置DHCP
vim /etc/dhcp/dhcpd.conf

我的配置:
subnet 188.188.188.0 netmask 255.255.255.0 {
range 188.188.188.2 188.188.188.50; #作用域

default-lease-time 21600;
max-lease-time 43200;
next-server 188.188.188.119; #TFTP服務器地址
filename "pxelinux.0";
}

啟動DHCP服務
systemctl start dhcpd

檢查是否啟動成功,DHCP默認在67號端口
lsof -i :67
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dhcpd 14690 dhcpd 7u IPv4 1215873 0t0 UDP *:bootps

安裝完成後建議驗證是否能正常分配ip,/var/lib/dhcpd/dhcpd.leases有分配ip的記錄

5.安裝TFTP並啟動

yum install -y tftp tftp-server
systemctl start tftp.socket
查看狀態:
systemctl status tftp.socket
默認根目錄為/var/lib/tftpboot/

若需要TFTP開機自啟需安裝xinetd服務,這裏沒有需求,所有可以不安裝

TFTP監聽在69端口

6.安裝並啟動ftp服務(以前就配好的一臺yum服務器,此步驟省略,只描述修改的部分)

以前的ftp目錄是/yum,現在在/yum下創建了兩個目錄,centos7和kickstarts,/yum/centos7存放源,/yum/kickstarts存放ks.cfg

註意:配置*.repo文件中第一行要寫[development],填寫其他內容會導致後面system-config-kickstart命令生成自動應答文件kc.cfg時提示軟件包被禁用

可以打開瀏覽器測試ftp服務是否成功安裝並啟用

有時間可以嘗試一下http或者NFS

7.復制或創建啟動所需目錄和文件至/var/lib/tftpboot/

下面是我的內容:

ls -lh /var/lib/tftpboot/
-rw-r--r-- 1 root root  21K 6月  28 16:10 chain.c32   #
-rw-r--r-- 1 root root  47M 6月  28 16:06 initrd.img
-rw-r--r-- 1 root root  33K 6月  28 16:10 mboot.c32   #
-rw-r--r-- 1 root root  26K 6月  28 16:10 memdisk     #
-rw-r--r-- 1 root root  54K 6月  28 16:10 menu.c32    #
-rw-r--r-- 1 root root  27K 6月  28 16:01 pxelinux.0  #
drwxr-xr-x 2 root root   21 6月  29 09:27 pxelinux.cfg
-rw-r--r-- 1 root root 5.7M 6月  28 16:06 vmlinuz
標記#號的都是從/usr/share/syslinux/下復制的

vmlinuz和initrd.img是PXE專用的內核文件,在系統yum倉的image/pxeboot/下

ls -lh /var/lib/tftpboot/pxelinux.cfg/
-rw-r--r-- 1 root root 232 6月  29 09:27 default

以下目錄和文件默認在TFTP的根目錄下自行復制或創建,安裝TFTP後默認是/var/lib/tftpboot/
pxelinux.cfg此目錄需存放一個名為default的文件,用作設置系統引導的配置文件,包括加載的內核,yum倉庫源(可以是http,NFS,FTP提供)路徑,自動應答配置文件(ks.cfg)路徑,
ks.cfg文件可以理解為系統安裝的自動應答文件,配置好後可以使安裝過程完全不需手動操作,它可以在安裝過程中對磁盤分區、網卡、軟件包等實現自動配置,此文件格式與/root/anaconda-ks.cfg相同

我的ks.cfg配置:

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
#Install OS instead of upgrade
install
#Keyboard layouts
keyboard ‘us‘
#Root password
rootpw --iscrypted $1$Cp7O9es8$lemYREzfQ5fM8di1XGlck1
#Use network installation
url --url="ftp://188.188.188.111/centos7"
#System language
lang en_US
#Firewall configuration
firewall --disabled
#System authorization information
auth  --useshadow  --passalgo=sha512
#Use graphical install
graphical
#SELinux configuration
selinux --disabled
#Do not configure the X Window System
skipx

#Network information
network  --bootproto=dhcp --device=eth0
#Reboot after installation
reboot
#System timezone
timezone Asia/Shanghai
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype="xfs" --size=1000
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1

%packages
@base
@core
@network-server
@remote-desktop-clients

%end

default文件其實就是定制版的isolinux.cfg文件,isolinux.cfg就是系統安裝鏡像下isolinux/目錄中的一個文件,它的作用就是定義linux起始安裝界面各種參數
因為是自定義批量部署,我們可以簡化它的配置,但pxe安裝時文件名必須為default(應該是必須,沒試過改名)

我的配置:

default menu.c32
        prompt 5
        timeout 30
        menu title CENTOS7

        label linux
        menu label Install Centos7
        kernel vmlinuz
        append initrd=initrd.img inst.repo=ftp://188.188.188.111/centos7 inst.ks=ftp://188.188.188.111/kickstarts/ks.cfg

計算機啟動後,需要引導文件加載內核文件才能進入安裝界面
pxelinux.0 - 系統引導文件,安裝syslinux後自動生成在/usr/share/syslinux/下
vmlinuz、initrd.img、chain.c32、mboot.c32、menu.c32、memdisk(不限於這些文件,可以根據自己的需求復制):
這些文件內核文件,需要從yum倉庫復制TFTP的根目錄下,PXE引導時會由DHCP服務器提供這些文件的路徑(一般都是TFTP服務器)從TFTP服務器上加載到內存,並進入系統安裝引導界面
若清楚操作系統開機啟動原理,此處會很好理解


8.開啟客戶端,設置為網卡啟動引導

虛擬機報錯:No space left on device
內存小於2G

記一次用PXE+kickstart批量為20臺新服務器安裝centos7