作為運維,經常會遇到一些重複的工作。例如:有時公司同時上線幾十甚至上百台伺服器,而且需要我們在 短時間内完成系統安裝。此時就需要用到批量部署。
一、相關知識提要
1.理論知識
PEX
PXE是Preboot Execution Environment的縮寫,預啟動執行環境。
1.什麼是PEX:PXE是由Intel設計的協定,它可以使計算機通過網絡啟動。協定分為client和server兩端,PXE client在網卡的ROM中,當計算機引導時,BIOS把PXE client調入記憶體執行,并顯示出指令菜單,經使用者選擇後,PXE client将放置在遠端的作業系統通過網絡下載下傳到本地運作。
2.PXE使用需要以下幾點:
- 用戶端的網卡必須要支援PXE功能,并且開機選擇從網卡啟動,進入PXE程式
- PXE伺服器必須要提供至少含有DHCP以及TFTP的服務!
- DHCP服務提供用戶端網絡,并且告知TFTP所在的位置; T
- FTP提供用戶端boot loader及kernel file下載下傳路徑
Kickstart
1.什麼是Kickstart:Kickstart是一種無人值守的安裝方式 。即把整個安裝過程中要回答或做的事全部展現在應答檔案ks.cfg檔案中。隻需告訴安裝程式從何處取ks.cfg檔案即可,等安裝完畢,安裝程式會根據ks.cfg檔案中的設定重新開機系統,并結束安裝。
2.Kickstart配置檔案詳解(分為3部分) :
- 指令部分
- 配置系統
- 使用者提示省略的指令 使用者提示省略的指令
- %packages部分
- 為安裝選擇軟體包群組
- 解決相關依性問題 解決相關依性問題
- 腳本部分
- 定制系統的可選擇部分
- 再安裝前運作%pre腳本
- 安裝後運作%post腳安裝後運作%post腳本
2.工作流程
PXE工作流程:
- Client向PXE Server上的DHCP發送IP位址請求消息,傳回Client的IP位址,同時将pxe環境下的Boot loader檔案pxelinux.0的位置資訊傳送給Client
- Client向PXE Server上的TFTP請求pxelinux.0
- Client執行接收到的pxelinux.0檔案
- Client向TFTP請求pxelinux.cfg檔案(裡面放置的是是啟動菜單,即grub的配置檔案)
- Client向TFTP發送Linux核心請求資訊
- Client向TFTP發送根檔案請求資訊
- Client加載Linux核心
- Client通過nfs/ftp/http下載下傳系統安裝檔案進行安裝
Kickstart工作流程:
- 用戶端向dhcp伺服器發送ip請求
- dhcp伺服器提供ip應答
- 用戶端向tftp伺服器請求下載下傳啟動檔案pxelinux.0
- tftp伺服器響應請求并傳輸啟動檔案
- 用戶端向tftp伺服器請求下載下傳自動應答 ks 檔案
- 用戶端擷取ks檔案并安裝作業系統。
二、準備工作
1.檢視子網路遮罩,IP位址範圍(也可以自己設定
編輯–>虛拟網絡編輯器–>更改設定–>NAT模式–>DHCP設定
2.檢視IP位址(也可以設定靜态IP位址 vi /etc/sysconfig/network-scripts/ifcfg-ens32)
3.檢視網關
三、執行個體操作(以Centos7為例)
1.關閉防火牆和SELINUX
檢視防火牆狀态
firewall-cmd --state
停止firewall
systemctl stop firewalld
禁止firewall開機啟動
systemctl disable firewalld
關閉selinux
setenforce 0
2.安裝配置DHCP服務
#DHCP主要是提供用戶端網絡參數與TFTP的位置,以及boot loader的檔案名
yum install dhcp -y
vi /etc/dhcp/dhcpd.conf #編輯dhcpd.conf配置檔案,dhcpd是dhcp的服務名
subnet 192.168.192.0 netmask 255.255.255.0 {#設定網段
option routers 192.168.192.2; #設定網關
option subnet-mask 255.255.255.0; #設定子網路遮罩
option domain-name-servers 192.168.192.2; #設定dns伺服器位址
range dynamic-bootp 192.168.192.200 192.168.192.205; #IP位址租用的範圍
default-lease-time 21600; #預設租約時間
max-lease-time 43200; #大租約時間 n
ext-server 192.168.192.133; #tftp伺服器位址,本機IP位址,192.168.192.133将作為伺服器端
filename "pxelinux.0"; #tftp伺服器根目錄下面的檔案名
}
注意:參照第0步的設定來編寫檔案;dns伺服器位址寫網關位址;IP租用範圍一定要包含在你DHCP設定的網段内
開啟dhcpd
systemctl start dhcpd
檢視dhcpd狀态
systemctl status dhcpd
#設定為開機自啟動
systemctl enable dhcpd
3.安裝配置TFTP服務
#boot loader檔案pxelinux.0以及核心相關的配置檔案(目錄pxelinux.cfg下)主要都是由TFTP來提供的!
yum install tftp-server xinetd -y
vi /etc/xinetd.d/tftp #編輯tftp服務配置
disable = no #此項修改,其它不變;儲存退出
開啟 xinetd
systemctl start xinetd
檢視 xinetd 狀态
systemctl status xinetd
#設定為開機自啟動
systemctl enable xinetd
4.PXE的bootloader和相關配置檔案
#syslinux是一個功能強大的引導加載程式,而且相容各種媒體。更加确切地說:SYSLINUX是一個小型的Linux操作 系統,它的目的是簡化首次安裝Linux的時間,并建立修護或其它特殊用途的啟動盤
yum install syslinux -y
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .
cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg #建立pxelinux.cfg配置檔案
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
vi pxelinux.cfg/default #修改第一行以及删除60行之後的,在檔案末尾添加以下内容;也可自己編寫
菜單中有兩個選項,要麼是安裝系統,要麼是對安裝媒體進行檢驗。既然我們已經确定采用無人值守的方式安裝系統,還需要為每台主機手動選擇相應的選項,未免與我們的主旨(無人值守安裝)相悖。現在我們編輯這個default 檔案,把第1行的default參數修改為linux,這樣系統在開機時就會預設執行那個名稱為 linux 的選項了。
#修改第一行
原文檔:
default vesamenu.32
修改為
default linux
我們将預設的CD光牒鏡像安裝方式修改成 FTP 檔案傳輸方式,并指定好CD光牒鏡像 的擷取網址以及 Kickstart 應答檔案的擷取路徑:
#删除60行之後的,在檔案末尾添加以下内容;也可自己編寫
label linux
menu label ^Install CentOS 74
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.192.133/config/ks.cfg biosdevname=0 net.ifnames=0
重新開機 tftpd
開啟 tftpd
systemctl start tftpd
檢視 tftpd狀态
systemctl status tftpd
#設定為開機自啟動
systemctl enable tftpd
5.安裝配置HTTP服務
#通過HTTP協定把CD光牒鏡像内容傳給用戶端
yum install httpd -y
cp -rf /mnt/* /var/www/html/ #拷貝鏡像
mkdir -p /var/www/html/config #建立目錄,把自定義的檔案、腳本等放置于此
systemctl start httpd
systemctl status httpd
systemctl enable httpd
6.Kickstart配置檔案
#Kickstart 其實并不是一個服務程式,而是一個應答檔案。
vi /var/www/html/config/ks.cfg #編輯kickstart配置檔案
#platform=x86, AMD64 或 Intel EM64T
#version=
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.192.133/"
#!!!
# Use CDROM installation media
repo --name="yum" --baseurl=http://192.168.192.133/
#!!!
# Root password
rootpw --iscrypted $1$mi4lP.ZY$j5UDGX34knfGuSYPwd82u/
#使用者名:root
#密碼為:redhat
# 加密方式:openssl passwd -1
# Use graphical install graphical or text
text
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --disabled
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --noipv6 --activate
network --hostname=web
#!!!
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
#!!!
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
part swap --fstype="swap" --ondisk=sda --size=4096
part / --fstype="ext4" --ondisk=sda --size=20480
#!!!
%packages
@core
wget
%end
%post
#yum_client
cd /etc/yum.repos.d/
rm -rf *
wget http://192.168.192.133/config/client.repo %end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
ks.cfg檔案也可以自己編寫
檢查是否存在錯誤
yum install pykickstart
ksvalidator ks.cfg
7.建立機器測試(用戶端啟動方式應更改為PXE網絡啟動!)
1.伺服器端(以上編寫的)必須保持開機狀态
2.設定時記憶體必須大于2G,否則安裝時會出現一些問題
3.安裝成功後登入
使用者名:root
密碼:redhat