天天看點

PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

       作為運維,經常會遇到一些重複的工作。例如:有時公司同時上線幾十甚至上百台伺服器,而且需要我們在 短時間内完成系統安裝。此時就需要用到批量部署。

一、相關知識提要

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部分) :

  • 指令部分
    1. 配置系統
    2. 使用者提示省略的指令 使用者提示省略的指令
  • %packages部分
    1. 為安裝選擇軟體包群組
    2. 解決相關依性問題 解決相關依性問題
  • 腳本部分
    1. 定制系統的可選擇部分
    2. 再安裝前運作%pre腳本
    3. 安裝後運作%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下載下傳系統安裝檔案進行安裝
    PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

Kickstart工作流程:

  • 用戶端向dhcp伺服器發送ip請求
  • dhcp伺服器提供ip應答
  • 用戶端向tftp伺服器請求下載下傳啟動檔案pxelinux.0
  • tftp伺服器響應請求并傳輸啟動檔案
  • 用戶端向tftp伺服器請求下載下傳自動應答 ks 檔案
  • 用戶端擷取ks檔案并安裝作業系統。
PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

二、準備工作

1.檢視子網路遮罩,IP位址範圍(也可以自己設定

       編輯–>虛拟網絡編輯器–>更改設定–>NAT模式–>DHCP設定

PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

2.檢視IP位址(也可以設定靜态IP位址 vi /etc/sysconfig/network-scripts/ifcfg-ens32)

PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

3.檢視網關

PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

三、執行個體操作(以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,否則安裝時會出現一些問題

PXE+Kickstart批量無人值守部署一、相關知識提要二、準備工作三、執行個體操作(以Centos7為例)

3.安裝成功後登入

       使用者名:root

       密碼:redhat

繼續閱讀