内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
风哥提示:
本文档介绍批量服务器部署的方案和实施方法。
Part01-PXE批量部署
1.1 配置PXE服务器
[root@pxe-server ~]# dnf install -y tftp-server dhcp-server httpd syslinux
Updating Subscription Management repositories.
Last metadata expiration check: 0:05:23 ago on Fri Apr 4 13:35:00 2026.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
tftp-server x86_64 5.2-38.el9 appstream 50 k
dhcp-server x86_64 4.4.2-19.el9 appstream 1.5 M
httpd x86_64 2.4.53-11.el9 appstream 1.7 M
syslinux x86_64 6.04-6.学习交流加群风哥微信: itpux-comel9 appstream 500 k
Transaction Summary
================================================================================
Install 4 Packages
Total download size: 3.8 M
Installed size: 10 M
Downloading Packages:
(1/4): tftp-server-5.2-38.el9.x86_64.rpm 1.0 MB/s | 50 kB 00:00
(2/4): dhcp-server-4.4.2-19.el9.x86_64.rpm 5.0 MB/s | 1.5 MB 00:00
(3/4): httpd-2.4.53-11.el9.x86_64.rpm 5.5 MB/s | 1.7 MB 00:00
(4/4): syslinux-6.04-6.el9.x86_64.rpm 2.0 MB/s | 500 kB 00:00
——————————————————————————–
Total 3.8 MB/s | 3.8 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : tftp-server-5.2-38.el9.x86_64 1/4
Installing : dhcp-server-4.4.2-19.el9.x86_64 2/4
Installing : httpd-2.4.53-11.el9.x86_64 3/4
Installing : syslinux-6.04-6.el9.x86_64 4/4
Verifying : tffrom PG视频:www.itpux.comtp-server-5.2-38.el9.x86_64 1/4
Verifying 更多学习教程公众号风哥教程itpux_com : dhcp-server-4.4.2-19.el9.x86_64 2/4
Verifying : httpd-2.4.53-11.el9.x86_64 3/4
Verifying : syslinux-6.04-6.el9.x86_64 4/4
Installed:
tftp-server-5.2-38.el9.x86_64 dhcp-server-4.4.2-19.el9.x86_64
httpd-2.4.53-11.el9.x86_64 syslinux-6.04-6.el9.x86_64
Complete!
# 配置TFTP服务
[root@pxe-server ~]# systemctl enable –now tftp
Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.
# 复制PXE引导文件
[root@pxe-server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe-server ~]# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
[root@pxe-server ~]# cp /usr/share/syslinux/mboot.c32 /var/lib/tftpboot/
[root@pxe-server ~]# cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot/
# 创建PXE配置目录
[root@pxe-server ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@pxe-server ~]# mkdir -p /var/lib/tftpboot/rocky9
# 挂载ISO镜像
[root@pxe-server ~]# mount -o loop Rocky-9.2-x86_64-dvd.iso /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
# 复制启动文件
[root@pxe-server ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/rocky9/
[root@pxe-server ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/rocky9/
# 验证文件
[root@pxe-server ~]# ls -lh /var/lib/tftpboot/
total 100K
-rw-r–r–. 1 root root 50K Apr 4 13:40:00 chain.c32
-rw-r–r–. 1 root root 30K Apr 4 13:40:00 mboot.c32
-rw-r–r–. 1 root root 50K Apr 4 13:40:00 menu.c32
-rw-r–r–. 1 root root 26K Apr 4 13:40:00 pxelinux.0
drwxr-xr-x. 2 root root 6 Apr 4 13:40:00 pxelinux.cfg
drwxr-xr-x. 2 root root 50 Apr 4 13:40:00 rocky9
1.2 配置DHCP服务
[root@pxe-server ~]# cat > /etc/dhcp/dhcpd.conf << 'EOF' option domain-name "fgedu.net.cn"; option domain-name-servers 8.8.8.8, 8.8.4.4; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 600; max-lease-time 7200; # PXE启动配置 next-server 192.168.1.10; filename "pxelinux.0"; } # 固定IP分配 host server1 { hardware ethernet 00:0c:29:11:22:33; fixed-address 192.168.1.101; } host server2 { hardware ethernet 00:0c:29:44:55:66; fixed-address 192.168.1.102; } EOF # 启动DHCP服务 [root@pxe-server ~]# systemctl enable --now dhcpd Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service. # 验证DHCP服务 [root@pxe-server ~]# systemctl status dhcpd ● dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; preset: disabled) Active: active (running) since Fri 2026-04-04 13:40:00 CST; 10s ago Docs: man:dhcpd(8) 学习交流加群风哥QQ113257174 man:dhcpd.conf(5) Main PID: 12345 (dhcpd) Tasks: 1 (limit: 11232) Memory: 5.0M CGroup: /system.slice/dhcpd.service └─12345 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid Apr 04 13:40:00 pxe-server dhcpd[12345]: Internet Systems Consortium DHCP Server 4.4.2 Apr 04 13:40:00 pxe-server dhcpd[12345]: Copyright 2004-2021 Internet Systems Consortium. Apr 04 13:40:00 pxe-server dhcpd[12345]: All rights reserved. Apr 04 13:40:00 pxe-server dhcpd[12345]: For info, please visit https://www.isc.org/software/dhcp/ Apr 04 13:40:00 pxe-server dhcpd[12345]: Config file: /etc/dhcp/dhcpd.conf Apr 04 13:40:00 pxe-server dhcpd[12345]: Database file: /var/lib/dhcpd/dhcpd.leases Apr 04 13:40:00 pxe-server dhcpd[12345]: PID file: /var/run/dhcpd.pid Apr 04 13:40:00 pxe-server systemd[1]: Started DHCPv4 Server Daemon.
Part02-Kickstart自动化安装
2.1 创建Kickstart配置
[root@pxe-server ~]# cat > /var/www/html/ks/rocky9-ks.cfg << 'EOF' # Rocky Linux 9 Kickstart Configuration #version=RHEL9 # 系统语言和键盘 lang en_US.UTF-8 keyboard us # 网络配置 network --bootproto=dhcp --device=link --activate network --hostname=server.fgedu.net.cn # 时区设置 timezone Asia/Shanghai --utc # Root密码(使用加密密码) rootpw --plaintext RockyLinux123! # 用户配置 user --name=admin --password=Admin123! --plaintext --groups=wheel # 引导加载程序 bootloader --location=mbr --boot-drive=sda # 分区配置 clearpart --all --initlabel --drives=sda part /boot --fstype=xfs --size=1024 --ondisk=sda part /boot/efi --fstype=efi --size=512 --ondisk=sda part pv.root --size=1 --grow --ondisk=sda volgroup vg_root pv.root logvol / --fstype=xfs --name=lv_root --vgname=vg_root --size=51200 logvol /var --fstype=xfs --name=lv_var --vgname=vg_root --size=20480 logvol swap --fstype=swap --name=lv_swap --vgname=vg_root --size=8192 # 软件包选择 %packages @^minimal-environment @core @base net-tools vim-enhanced bash-completion wget curl tree htop %end # 安装后脚本 %post --log=/root/ks-post.log #!/bin/bash # 配置SSH sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config # 配置防火墙 firewall-cmd --permanent --add-service=ssh firewall-cmd --reload # 配置SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config # 配置时间同步 dnf install -y chrony systemctl enable --now chronyd # 配置常用别名 cat >> /etc/bashrc << 'ALIASES' alias ll='ls -l' alias la='ls -la' alias l='ls -CF' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' ALIASES # 更新系统 dnf update -y %end # 关机或重启 reboot EOF # 验证Kickstart文件 [root@pxe-server ~]# ksvalidator /var/www/html/ks/rocky9-ks.cfg # 无输出表示配置文件正确 # 设置HTTP服务 [root@pxe-server ~]# systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. # 验证HTTP访问 [root@pxe-server ~]# curl -I http://localhost/ks/rocky9-ks.cfg HTTP/1.1 200 OK Date: Fri, 04 Apr 2026 13:45:00 GMT Server: Apache/2.4.53 (Rocky Linux) Last-Modified: Fri, 04 Apr 2026 13:42:00 GMT ETag: "1234-5678" Accept-Ranges: bytes Content-Length: 1234 Content-Type: text/plain; charset=UTF-8
2.2 配置PXE启动菜单
[root@pxe-server ~]# cat > /var/lib/tftpboot/pxelinux.cfg/default << 'EOF' DEFAULT menu.c32 PROMPT 0 TIMEOUT 300 MENU TITLE PXE Boot Menu - Rocky Linux 9 LABEL local MENU LABEL Boot from local disk MENU DEFAULT LOCALBOOT 0 LABEL rocky9 MENU LABEL Install Rocky Linux 9 (Automated) KERNEL rocky9/vmlinuz APPEND initrd=rocky9/initrd.img inst.repo=http://192.168.1.10/rocky9 inst.ks=http://192.168.1.10/ks/rocky9-ks.cfg LABEL rocky9-manual MENU LABEL Install Rocky Linux 9 (Manual) KERNEL rocky9/vmlinuz APPEND initrd=rocky9/initrd.img inst.更多视频教程www.fgedu.net.cnrepo=http://192.168.1.10/rocky9 LABEL rocky9-rescue MENU LABEL Rescue installed system KERNEL rocky9/vmlinuz APPEND initrd=rocky9/initrd.img inst.repo=http://192.168.1.10/rocky9 rescue EOF # 验证配置文件 [root@pxe-server ~]# cat /var/lib/tftpboot/pxelinux.cfg/default DEFAULT menu.c32 PROMPT 0 TIMEOUT 300 MENU TITLE PXE Boot Menu - Rocky Linux 9 LABEL local MENU LABEL Boot from local disk MENU DEFAULT LOCALBOOT 0 LABEL rocky9 MENU LABEL Install Rocky Linux 9 (Automated) KERNEL rocky9/vmlinuz APPEND initrd=rocky9/initrd.img inst.repo=http://192.168.1.10/rocky9 inst.ks=http://192.168.1.10/ks/rocky9-ks.cfg # 复制ISO内容到HTTP目录 [root@pxe-server ~]# mkdir -p /var/www/html/rocky9 [root@pxe-server ~]# cp -r /mnt/* /var/www/html/rocky9/ # 验证HTTP访问 [root@pxe-server ~]# curl -I http://localhost/rocky9/ HTTP/1.1 200 OK Date: Fri, 04 Apr 2026 13:45:00 GMT Server: Apache/2.4.53 (Rocky Linux) Content-Type: text/html;charset=UTF-8
Part03-批量部署验证
3.1 验证PXE部署
[root@pxe-server ~]# systemctl status tftp
● tftp.service – Tftp Server
Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; preset: disabled)
Active: active (running) since Fri 2026-04-04 13:40:00 CST; 10min ago
Docs: man:in.tftpd(8)
Main PID: 12346 (in.tftpd)
Tasks: 1 (limit: 11232)
Memory: 1.0M
CGroup: /system.slice/tftp.service
└─12346 /usr/sbin/in.tftpd -s /var/lib/tftpboot
# 测试TFTP服务
[root@client ~]# tftp 192.168.1.10
tftp> get pxelinux.0
Received 26 bytes in 0.0 seconds
tftp> quit
# 查看DHCP租约
[root@pxe-server ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.4.2
lease 192.168.1.101 {
starts 5 2026/04/04 13:45:00;
ends 5 2026/04/04 13:55:00;
cltt 5 2026/04/04 13:45:00;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:11:22:33;
uid “\001\000\014)\021\”3”;
client-hostname “server1”;
}
# 查看HTTP访问日志
[root@pxe-server ~]# tail -f /var/log/httpd/access_log
192.168.1.101 – – [04/Apr/2026:13:50:00 +0800] “GET /rocky9/ HTTP/1.1” 200 1234 “-” “Python-urllib/3.9”
192.168.1.101 – – [04/Apr/2026:13:50:01 +0800] “GET /ks/rocky9-ks.cfg HTTP/1.1” 200 1234 “-” “Python-urllib/3.9”
- 使用PXE+Kickstart实现自动化部署
- 配置DHCP固定IP分配
- 创建标准化的Kickstart模板
- 验证所有服务正常运行
- 记录部署日志便于排查问题
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
