CentOS7.9‑Kickstart 无人值守安装结构化实战教程

CentOS7.9‑Kickstart 无人值守安装结构化实战教程

教程前言

Kickstart 是红帽系自动化部署工具,通过 ks.cfg 应答文件,预先填写系统安装过程所有选项,批量自动化安装 CentOS 系统;省去手动点击界面,适合服务器批量装机,企业机房批量部署必备技术。
本次环境:CentOS‑7.9,搭建HTTP+TFTP+DHCP+Kickstart完整无人值守装机架构,全程命令可直接复制执行。

整体架构

  1. 服务器:部署 DHCP(分配 IP)+ TFTP(传输引导文件)+ HTTP(存放系统镜像与 ks 应答文件)+ Kickstart 配置文件。
  1. 客户端:PXE 网卡启动,自动获取 IP,下载引导文件,读取 ks.cfg 文件全自动安装系统,无需人工干预。

环境规划

角色

IP 地址

系统

软件包

主机名

PXE 服务端

[192.168.30.10](192.168.30.10)

CentOS7.9

dhcp、tftp‑server、httpd、syslinux、system‑config‑kickstart

pxe‑server

装机客户端

PXE 自动获取 IP

CentOS7.9

客户端主机

前置硬性条件:关闭防火墙、关闭 selinux,服务器与客户端同网段。

一、环境初始化(服务端执行)

1.1 关闭防火墙与安全机制

bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.2 安装全部依赖软件包

bash
yum install -y dhcp tftp-server httpd syslinux system-config-kickstart

1.3 设置服务开机自启

bash
systemctl enable dhcpd httpd tftp.socket

二、分步部署各服务(结构化实战)

2.1 DHCP 服务配置(分配 IP,下发 PXE 引导文件名称)

  1. 复制模板文件

bash
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

  1. 修改 dhcp 配置文件vim /etc/dhcp/dhcpd.conf,清空原有内容,写入下面配置

conf
subnet 192.168.30.0 netmask 255.255.255.0 {
range 192.168.30.100 192.168.30.200;
option subnet-mask 255.255.255.0;
option routers 192.168.30.10;
option domain-name-servers 223.5.5.5;
next-server 192.168.30.10; # 指定tftp服务器IP
filename "pxelinux.0"; # 指定引导文件
default-lease-time 600;
max-lease-time 7200;
}

  1. 启动 dhcp 服务

bash
systemctl start dhcpd

2.2 TFTP 服务配置(传输 PXE 引导文件)

TFTP 默认根目录:/var/lib/tftpboot/

  1. 开启 tftp 服务配置,修改文件vim /etc/xinetd.d/tftp,将 disable 参数改为 no

conf
disable = no
server_args = -s /var/lib/tftpboot

  1. 拷贝引导文件 syslinux 提供的 pxelinux.0 文件到 tftp 目录

bash
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

  1. 复制内核文件 vmlinuz 与初始化镜像 initrd.img(从 CentOS‑7.9 镜像内提取)

bash
# 先挂载系统镜像
mount /dev/cdrom /mnt
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

  1. 创建 pxelinux.cfg 文件夹,编写启动菜单文件 default

bash
mkdir -p /var/lib/tftpboot/pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default

菜单文件内容:

conf
default install
prompt 0
label install
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.30.10/ks.cfg

ks=http://192.168.30.10/ks.cfg:客户端安装时下载 kickstart 应答文件。

  1. 重启 tftp 服务

bash
systemctl restart tftp.socket

2.3 HTTP 服务配置(共享系统安装源 + ks.cfg 应答文件)

  1. 创建网页根目录存放系统文件,挂载镜像到 http 站点目录

bash
mkdir -p /var/www/html/centos7
mount /mnt /var/www/html/centos7

  1. 启动 http 服务,测试访问http://192.168.30.10/centos7

bash
systemctl start httpd

三、核心:Kickstart 应答文件 ks.cfg 制作(两种方式实战)

方式 1:图形界面生成(零基础推荐,system‑config‑kickstart)

  1. 终端输入命令调出图形配置窗口

bash
system-config-kickstart

依次填写参数:
1)基础设置:语言中文、时区 Asia/Shanghai,设置 root 密码,取消安装后重启;
2)安装方式:选择 HTTP 安装,URL 填写:http://192.168.30.10/centos7
3)引导装载程序:安装 GRUB 引导;
4)分区方案:自定义分区(/boot 500M,swap 2G,/ 剩余全部空间);
5)网络配置:开启网卡,DHCP 获取地址;
6)防火墙与 SELinux:全部关闭;
7)软件包选择:勾选最小化安装;
8)后期脚本:可以写入 yum 源更换命令。
文件导出保存为 ks.cfg,复制到网站目录:

bash
cp ~/ks.cfg /var/www/html/

方式 2:手动编写 ks.cfg 文件(生产常用,直接复制使用)

新建文件vim /var/www/html/ks.cfg,完整模板:

cfg
#platform=x86_64
#version=DEVEL
install
#安装方式http
url --url="http://192.168.30.10/centos7"
lang zh_CN.UTF-8
keyboard us
timezone Asia/Shanghai --isUtc
rootpw --plaintext 123456
firewall --disabled
selinux --disabled
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto"
#磁盘分区
clearpart --all --initlabel
part /boot --fstype=xfs --size=500
part swap --size=2048
part / --fstype=xfs --grow
#网络配置
network --bootproto=dhcp --device=eth0 --onboot=on
#安装包组
%packages
@minimal-development
net-tools
vim-enhanced
%end
#安装后执行脚本
%post
systemctl disable firewalld
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
%end
reboot

赋予文件读取权限:

bash
chmod 644 /var/www/html/ks.cfg

四、整套服务校验(必做检查项)

bash
#检查全部服务状态
systemctl status dhcpd httpd tftp.socket
#测试ks.cfg文件网页访问
curl http://192.168.30.10/ks.cfg
#检查tftp文件是否完整
ls /var/lib/tftpboot/

全部服务 running,文件可以正常访问即部署完成。

五、客户端 PXE 无人装机实战测试流程

  1. 新建虚拟机,启动模式改为网卡 PXE 优先启动;
  1. 客户端自动获取 DHCP 分配 IP;
  1. 下载 vmlinuz 内核和 initrd 镜像文件;
  1. 读取 ks.cfg 文件,自动分区、安装软件包、执行后置脚本;
  1. 全程无任何手动操作,系统自动部署完毕重启;

成功标准:客户端自动完成 CentOS7‑9 系统安装,不需要人工操作。

六、常见报错排查清单

  1. 客户端获取不到 IP:dhcp 配置网段错误,dhcp 服务未启动。
  1. 无法下载引导文件:tftp 目录文件缺失,selinux 未关闭。
  1. 找不到 ks 文件:http 服务未开启,ks.cfg 路径 IP 写错。
  1. 分区失败:磁盘没有清空,clearpart 参数未开启。

七、Kickstart 核心功能总结(结构化要点)

  1. 应答自动化:预先定义安装全部参数,跳过图形界面交互;
  1. 磁盘分区自动化:自动清空磁盘,按照脚本规划分区格式;
  1. 网络批量部署:配合 PXE‑DHCP‑TFTP‑HTTP,机房几十上百台服务器批量装机;
  1. 软件包定制:脚本选定安装组件,统一软件环境;
  1. 后置脚本 % post:系统安装完成之后自动执行脚本,配置 yum 源、关闭安全策略、批量部署初始化环境;
  1. 版本统一管控:所有服务器系统版本、分区方案、基础配置完全一致,降低运维差异故障。