NEWS LETTER

PXE + Kickstart 自动化部署

Scroll down

PXE 的定义

PXE (Preboot Execute Environment) 是一种引导方式,而非安装方式。它工作在 Client/Server 网络模式下,允许工作站通过网络从远程服务器下载操作系统映像并启动。要使用 PXE 安装系统,计算机需配备支持 PXE 的网卡,其 ROM 中包含 PXE Client。当计算机启动时,BIOS 加载 PXE Client,PXE Client 通过网络从远端服务器下载文件并在本地运行。

PXE 协议分为 client 和 server 端,运行时需要配置 DHCP 和 TFTP 服务器。DHCP 服务器为 PXE Client(待安装系统的主机)分配 IP 地址,并在配置时需启用相应的 PXE 设置。PXE Client 通过内置的 TFTP Client,从 TFTP 服务器下载启动所需的文件。

PXE 使用所需条件

  • 客户端的网卡必须要支持 PXE 功能,并且开机选择从网卡启动,进入 PXE 程序。
  • PXE 服务器必须要提供至少含有 DHCP 以及 TFTP 的服务。
  • DHCP 服务提供客户端网络,并且告知 TFTP 所在的位置。
  • FTP 提供客户端 boot loader 及 kernel file 下载路径。

PXE 工作流程图

Kickstart 的定义

  • Kickstart 是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件。如果在安装过程中(不只局限于生成 Kickstart 安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart 生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果 Kickstart 文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后就去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中的设置重启系统,并结束安装。
  • 目的是为了 减少系统安装的过程中的人机交互,提高安装效率

Kickstart 工作流程图

部署环境

  • 客户端可以是裸机,客户端和服务器,必须处于同一 广播域
  • 客户端的网卡,必须拥有 PXE ROM (preboot execution Enviroment)芯片,远程引导技术。
  • 客户端的 BIOS 开启网络启动功能,并将网络引导作为首选启动项。

使用一台服务器搭建,实现全自动化部署
dhcp + tftp + http + kickstart
系统的安装方式可以选择 HTTP、FTP、 NFS,这里介绍 HTTP 方式的安装

配置网卡

DHCP 网口需要配置静态 IP,以下示例为 CentOS 7 基础配置。

1
2
3
4
5
6
7
8
TYPE=Ethernet
BOOTPROTO=static
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.1.11 # 根据实际情况配置(此地址将作为 HTTP、TFTP服务器地址)
GATEWAY=192.168.1.254 # 根据实际情况配置
NETMASK=255.255.255.0

关闭防火墙以及 SELinux

1
2
3
4
5
6
7
# 停止防火墙服务
systemctl stop firewalld
# 禁止防火墙自启动
systemctl disable firewalld
# 禁用 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config

安装配置 DHCP 服务

1
2
3
4
# 安装 dhcp 服务
yum install dhcp -y
# 编辑 dhcpd.conf 配置文件
vim /etc/dhcp/dhcpd.conf
1
2
3
4
5
6
7
8
9
cat <<EOF >> /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; # DHCP 服务为客户端分配的 IP 范围
option subnet-mask 255.255.255.0; # 掩码
option routers 192.168.1.254; # 网关
next-server 192.168.1.11; # 指定 TFTP 服务器的地址 即本机IP
filename "pxelinux.0"; # 指定 PXE 引导程序的文件名
}
EOF
1
2
3
# 启动 dhcp 服务并设置自启
systemctl restart dhcpd
systemctl enable dhcpd

安装配置 TFTP 服务

1
2
3
4
5
6
7
# 安装 tftp 与 xinetd
# tftp 安装时是安装 tftp-server 并且它被 xinetd 所管理
yum install tftp-server xinetd -y
# 编辑 tftp 服务配置
vim /etc/xinetd.d/tftp
# disable 项设置为 no
disable = no
1
2
3
4
5
6
# 重启 xinetd 服务并设置自启
systemctl restart xinetd
systemctl enable xinetd
# 重启 tftp 服务并设置自启
systemctl restart tftp
systemctl enable tftp

安装 HTTPD 服务

默认服务路径为 /var/www/html

1
yum install httpd -y
1
2
3
# 启动 http 服务并设置自启
systemctl restart httpd
systemctl enable httpd

安装 syslinux 加载器

1
yum install syslinux -y

引导与安装文件准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 创建主目录
mkdir /var/www/html/centos7
# 此目录用于挂载镜像文件
mkdir /var/www/html/centos7/iso
# 此目录用于存放 kickstart 文件
mkdir /var/www/html/centos7/ks
# 此目录用于存放自定义脚本
mkdir /var/www/html/centos7/scripts

#复制 pxelinux.0 到 tftpboot 目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

# 将镜像文件挂载至 http 服务下的镜像目录
mount centos7.iso /var/www/html/centos7/iso

# 复制引导内核文件 initrd.img 和 vmlinuz 到 tftp 目录
mkdir /var/lib/tftpboot/centos7
cp /var/www/html/centos7/iso/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7

# 创建 pxelinux.cfg/default 配置文件
mkdir /var/lib/tftpboot/pxelinux.cfg

cat <<EOF >> /var/lib/tftpboot/pxelinux.cfg/default
default centos7

label centos7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://192.168.1.11/centos7/ks/example.cfg
EOF

修改 ks 文件中的安装文件获取方式

默认值为 cdrom

1
2
# Use CDROM installation media
cdrom

需要修改为从 http 服务器获取

1
2
# Use CDROM installation media
url --url=http://192.168.1.11/centos7/iso

开始安装

将服务器或物理机的引导选项设置为 PXE 启动即可

自定义脚本执行

待完善···

其他文章
cover
四月
  • 19/04/08
  • 05:55
  • 411
  • 1
目录导航 置顶
  1. 1. PXE 的定义
  2. 2. PXE 使用所需条件
  3. 3. PXE 工作流程图
  4. 4. Kickstart 的定义
  5. 5. Kickstart 工作流程图
  6. 6. 部署环境
    1. 6.1. 配置网卡
    2. 6.2. 关闭防火墙以及 SELinux
    3. 6.3. 安装配置 DHCP 服务
    4. 6.4. 安装配置 TFTP 服务
    5. 6.5. 安装 HTTPD 服务
    6. 6.6. 安装 syslinux 加载器
    7. 6.7. 引导与安装文件准备
    8. 6.8. 修改 ks 文件中的安装文件获取方式
    9. 6.9. 开始安装
    10. 6.10. 自定义脚本执行
请输入关键词进行搜索