一、项目总体概述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.comYUM源服务器、PXE+kickstart管控服务器nfs-server、dhcp、tftp-server1. 作为PXE+kickstart部署主控端,管控40台服务器批量装机;2. 搭建RHEL9.3本地YUM私有源,同步官方基础包、安全更新包;3. 提供内网系统镜像访问服务host2.jungle.com内网DNS服务器bind1. 搭建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