一、项目总体概述
1.1项目背景
本次机房标准化建设项目需完成40台物理服务器统一操作系统部署、网络标准化配置、内网服务搭建及常态化运维体系落地。传统单台U盘、光驱装机方式效率低下、配置不统一、人工误差率高,无法满足批量服务器上线需求。为实现机房服务器系统部署标准化、网络命名标准化、域名解析内网化、软件源统一化,本次采用PXE+kickstart无人值守批量装机方案,适配RHEL9.3操作系统批量部署,同时搭建专属内网YUM源、DNS域名解析服务,构建闭环式机房基础运维体系。
1.2项目核心目标
批量自动化:通过PXE+kickstart实现40台服务器RHEL9.3无人值守批量装机,全程无需人工干预,提升部署效率。
配置标准化:所有服务器网卡统一命名为eth开头(eth0、eth1...),摒弃系统默认ens/eno命名规则,统一机房设备网络规范。
服务内网化:部署专属YUM源服务器、DNS内网服务器,实现jungle.com内网域全自动解析、软件包内网极速更新。
运维规范化:统一主机名、网络参数、系统配置,建立标准化基线,降低后续运维难度,保障机房环境一致性、稳定性、可扩展性。
1.3项目设备与环境说明
部署规模:40台通用服务器,统一安装rhel-9.3-x86_64操作系统
核心服务节点(2台核心服务器,纳入40台设备统筹管理):
YUM源&装机管控服务器:host1.jungle.com(内网全局软件源、PXE批量部署主控)
DNS服务器:host2.jungle.com(内网jungle.com域权威解析,实现所有内网主机域名互通)
部署架构:PXE+kickstart集中管控部署,搭配DHCP、TFTP、NFS服务实现无人值守装机
网络规范:所有服务器网卡统一eth开头命名,所有主机归属jungle.com内网域,主机名统一格式hostN.jungle.com(N的值为1-40)。
二、项目整体架构与标准化规范
2.1整体拓扑逻辑
本项目采用集中管控、分布式部署、内网闭环架构,所有服务器接入机房内网交换机,核心管控节点统一部署在内网核心网段,40台待部署服务器通过内网PXE引导,自动获取IP、加载系统镜像、执行无人值守安装,装机完成后自动接入内网DNS解析、绑定内网YUM源,全程标准化、自动化。
2.2核心服务分工
| 服务器主机名 | 核心角色 | 部署服务 | 核心功能 |
|---|---|---|---|
| host1.jungle.com | YUM源服务器、PXE+kickstart管控服务器 | nfs-server、dhcp、 tftp-server | 1. 作为PXE+kickstart部署主控端,管控40台服务器批量装机;2. 搭建RHEL9.3本地YUM私有源,同步官方基础包、安全更新包;3. 提供内网系统镜像访问服务 |
| host2.jungle.com | 内网DNS服务器 | bind | 1. 搭建jungle.com内网权威域名解析服务器;2. 解析所有内网hostN.jungle.com主机域名; |
2.3 全局标准化强制规范
2.3.1 网卡命名规范
RHEL9默认启用可预测网卡命名(ens/eno),本项目通过内核启动参数+udev规则双重强制禁用,所有网卡统一命名为eth0、eth1。
2.3.2 主机名规范
所有主机统一域名后缀 jungle.com,序号从host1-host40,核心节点占用host1、host2,业务主机顺延排序。
2.3.3 全局预设网段(固定参数)
内网网段:192.168.10.0/24,网关:192.168.10.254,DHCP地址池:192.168.10.1-192.168.10.40
核心服务器固定IP:host1=192.168.10.1,host2=192.168.10.2
三、完整实操代码落地步骤
3.1host1.jungle.com部署实操
先使用u盘启动盘或者光盘在host1.jungle.com主机上安装系统(此处省略给host1.jungle.com装机)。
此处使用的是vmware workstation pro虚拟机模拟,将虚拟机的网卡模式调成仅主机模式。
3.1.1 网络与主机名配置
[root@template ~]# mkdir /project [root@template ~]# cd /project/ [root@template project]# vim net-rename1.sh #!/bin/bash grubby --update-kernel=ALL --args="net.ifnames=0 biosdevname=0" grub2-mkconfig -o /boot/grub2/grub.cfg reboot [root@template project]# vim network-ip2.sh #!/bin/bash if [ -z "$1" ];then n=1 elif [[ "$1" =~ ^[0-9]+$ ]];then n=$1 else echo "Usage: ./network-ip.sh \$hostid(hostid value is 1-40)" exit fi hostnamectl set