PXE+Kickstart批量无人值守部署

       作为运维,经常会遇到一些重复的工作。例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在 短时间内完成系统安装。此时就需要用到批量部署。

一、相关知识提要

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下载系统安装文件进行安装
    在这里插入图片描述

Kickstart工作流程:

  • 客户端向dhcp服务器发送ip请求
  • dhcp服务器提供ip应答
  • 客户端向tftp服务器请求下载启动文件pxelinux.0
  • tftp服务器响应请求并传输启动文件
  • 客户端向tftp服务器请求下载自动应答 ks 文件
  • 客户端获取ks文件并安装操作系统。

在这里插入图片描述

二、准备工作

1.查看子网掩码,IP地址范围(也可以自己设置
       编辑–>虚拟网络编辑器–>更改设置–>NAT模式–>DHCP设置
FFFFF,t_70)
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

我们将默认的光盘镜像安装方式修改成 FTP 文件传输方式,并指定好光盘镜像 的获取网址以及 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协议把光盘镜像内容传给客户端

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值