PXE+Kickstart实现rocky9批量自动装机

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 使用PXE+Kickstart实现rocky9批量自动装机

PXE自动装机(rocky9)

什么是PXE自动装机

PXE(预启动执行环境)提供了一种使计算机通过网络启动的机制。当系统通过网络启动时,BIOS使用PXE进行引导,然后加载一个提供于网络上的操作系统映像。

什么是Kickstart

PXE并不能决定该安装哪种操作系统、如何安装以及安装过程中的各种设置如何配置。这就是Kickstart文件的作用。Kickstart文件包含了自动安装中所有的配置,例如安装哪些包、如何分割硬盘等。

未命名绘图

基础环境

注意! 下文中的pxe_server_ip即为pxe_server_ip : )

systemctl disable firewalld --now
setenforce 0 # 记得配置持久化

ftp 配置

我们使用 FTP 将操作系统安装介质共享到 PXE 引导客户端。

安装 vsftpd 包并确保启用服务:

yum install vsftpd -y
systemctl enable vsftpd

配置 /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
local_enable=NO
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to homelab FTP service.
listen=YES
listen_ipv6=NO
listen_port=21
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_address=pxe_server_ip
pasv_min_port=60000
pasv_max_port=60029
systemctl start vsftpd

安装 tftp-server 软件包并确保启用该服务:

yum install tftp-server -y
systemctl enable tftp && sudo systemctl start tftp

安装介质

下载 Rocky-9.3 ISO 映像。确保下载完整的DVD版本,例如:

# https://dl.rockylinux.org/pub/rocky/9/isos/x86_64/
Download Rocky-9.3-x86_64-dvd.iso

挂载映像并将其内容复制到 FTP 位置:

mkdir -p /mnt/iso /var/ftp/pub/pxe/Rocky-9.3-x86_64
mount Rocky-9.3-x86_64-dvd.iso  /mnt/iso
cp -prv /mnt/iso/* /var/ftp/pub/pxe/Rocky-9.3-x86_64/
umount /mnt/iso

验证:

curl ftp://pxe_server_ip/pub/pxe/Rocky-9.3-x86_64/
drwxr-xr-x    4 0        0              38 Nov 12 08:03 AppStream
drwxrwxr-x    4 0        0              38 Nov 12 22:40 BaseOS
drwxrwxr-x    3 0        0              18 Nov 12 21:32 EFI
-rw-r--r--    1 0        0            2204 Oct 20  2023 LICENSE
drwxrwxr-x    3 0        0              59 Nov 12 21:32 images
drwxrwxr-x    2 0        0             239 Nov 12 21:32 isolinux
-rw-r--r--    1 0        0             101 Nov 12 22:33 media.repo

创建 Kickstart 文件

Kickstart 文件包含 CentOS 安装程序通常提出的所有问题的答案。通过在安装开始时提供准备好的 kickstart 文件,我们可以自动执行部署。

这是我用于我的 Rocky-9.3-x86_64-dvd.iso 服务器(需要 32GB 磁盘)的 kickstart 文件 /var/ftp/pub/pxe/Rocky-9.3-x86_64.cfg

# Use network installation
url --url="ftp://pxe_server_ip/pub/pxe/Rocky-9.3-x86_64/BaseOS/"
repo --name="AppStream" --baseurl="ftp://pxe_server_ip/pub/pxe/Rocky-9.3-x86_64/AppStream/"
# Disable Initial Setup on first boot
firstboot --disable

# Use text mode install
text
# Keyboard layouts
keyboard --vckeymap=gb --xlayouts='gb'
# System language
lang en_GB.UTF-8
# SELinux configuration
selinux --enforcing
# Firewall configuration
firewall --enabled --ssh
# Do not configure the X Window System
skipx

# Network information
# network --bootproto=dhcp --device=ens18 --nameserver=8.8.8.8 --noipv6 --activate
network --bootproto=dhcp --device=ens18  --noipv6 --activate

# System authorisation information
auth --useshadow --passalgo=sha512
# Root password
rootpw lenovo
# Root SSH public key
sshkey --username=root "id_rsa.pub文件内容"
# System timezone
timezone Asia/shanghai --utc

ignoredisk --only-use=sda
# System bootloader configuration
bootloader --location=mbr --timeout=1 --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Reboot after installation
reboot

# Disk partitioning information
#autopart --type=lvm
part /boot --fstype="xfs" --ondisk=sda --size=1024 --label=boot --asprimary --fsoptions="rw,nodev,noexec,nosuid"
part pv.01 --fstype="lvmpv" --ondisk=sda --size=31743
volgroup vg_os pv.01

# 根据需求配置分区
# logvol /home  --fstype="xfs" --size=1024 --label="lv_tmp" --name=lv_tmp --vgname=vg_os --fsoptions="rw,nodev,noexec,nosuid"
logvol /  --fstype="xfs" --size=31743 --label="lv_root" --name=lv_root --vgname=vg_os

%packages
# dnf group info minimal-environment
@^minimal-environment
sudo
qemu-guest-agent
openssh-server
# Alsa not needed in a VM
-alsa*
# Microcode updates cannot work in a VM
-microcode_ctl
# Firmware packages are not needed in a VM
-iwl*firmware
# Don't build rescue initramfs
-dracut-config-rescue
-plymouth
%end

%addon com_redhat_kdump --disable --reserve-mb='auto'
%end

%post 
sed -i 's/^.*requiretty/#Defaults requiretty/' /etc/sudoers
sed -i 's/rhgb //' /etc/default/grub
# SSHD PermitRootLogin and enable the service
sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config
/usr/bin/systemctl enable sshd
# Update all packages
# /usr/bin/yum -y update

# 其他需要执行的脚本
%end

复制内容并将其另存为 /var/ftp/pub/pxe/Rocky-9.3-x86_64.cfg

安装 Syslinux

Syslinux 项目涵盖了用于网络引导的轻量级引导加载程序 (PXELINUX) 等。

安装 syslinux 软件包:

yum install syslinux -y

将 syslinux 引导加载程序复制到 tftp 服务器的引导目录:

cp -prv /usr/share/syslinux/* /var/lib/tftpboot/

将 Rocky-9.3-x86_64-dvd.iso 安装介质复制 initrd.imgvmlinuz /var/lib/tftpboot/networkboot/Rocky-9.3-x86_64/

mkdir -p /var/lib/tftpboot/networkboot/Rocky-9.3-x86_64
cp -pv /var/ftp/pub/pxe/Rocky-9.3-x86_64/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/networkboot/Rocky-9.3-x86_64/

创建 PXE 配置目录:

mkdir -p /var/lib/tftpboot/pxelinux.cfg

创建 /var/lib/tftpboot/pxelinux.cfg/default 包含以下内容的 PXE 启动配置文件:

# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 50
menu title Homelab PXE Menu
label Install Rocky Linux 9 Server
  kernel /networkboot/Rocky-9.3-x86_64/vmlinuz
  append initrd=/networkboot/Rocky-9.3-x86_64/initrd.img inst.repo=ftp://pxe_server_ip/pub/pxe/Rocky-9.3-x86_64/ inst.ks=ftp://pxe_server_ip/pub/pxe/Rocky-9.3-x86_64.cfg

dhcp配置

yum install dhcpd -y
vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 192.168.0.0 netmask 255.255.255.0 {
     option routers             pxe_server_ip;
     option domain-name-servers pxe_server_ip;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.0.150 192.168.0.200;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                pxe_server_ip;
     filename "pxelinux.0";

}

# group for Cobbler DHCP tag: default
group {
}

接下来就是用网线, 把pxeserver + server接通然后, 把server从Network启动即可

2024-04-24_22-54-18

原文地址:https://www.mutter.cn/2024/03/24/infrastructure/pxe装机/

相关文章
|
监控 关系型数据库 Linux
|
缓存
yum 如何设置可以将安装的rpm包都缓存下来
【4月更文挑战第17天】yum 如何设置可以将安装的rpm包都缓存下来
1284 0
|
Ubuntu Linux KVM
分享一些OpenStack的qcow2格式实例镜像
分享一些OpenStack的qcow2格式实例镜像
13401 0
分享一些OpenStack的qcow2格式实例镜像
|
4月前
|
安全 Linux 虚拟化
Rocky Linux 10 - RHEL 100% 1:1 兼容免费发行版
Rocky Linux 10 - RHEL 100% 1:1 兼容免费发行版
542 34
Rocky Linux 10 - RHEL 100% 1:1 兼容免费发行版
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
255149 0
|
2月前
|
关系型数据库 Linux Nacos
Rocky Linux 部署 Docker 和 NACOS 实例
本文介绍在阿里云环境下基于 Rocky Linux 搭建 Docker 并部署 Nacos 的完整流程。涵盖 Docker 安装、镜像加速配置、网络设置及 MySQL 与 Nacos 容器的创建,适用于开发与生产环境。
444 0
|
存储 安全 IDE
Linux网络服务——PXE网络批量装机+Kickstart无人值守安装(上)
1 系统安装介绍 1.1 系统装机的三种引导方式 硬盘 光驱 网络
542 0
|
Linux Shell 网络安全
Kickstart 自动化安装
Kickstart结合PXE技术实现Linux系统的自动化安装,适用于需批量部署一致版本的服务器场景,以减少重复劳动。通过搭建Kickstart+DHCP+NFS+TFTP+PXE架构,服务器可远程启动并下载安装配置。具体包括:配置TFTP服务以传输启动文件,设置PXE引导参数指向Kickstart脚本,利用DHCP分配IP地址。这种方式极大地提高了部署效率与一致性。
247 2
|
Prometheus 监控 Cloud Native
使用 Jenkins 监控和优化构建性能
【8月更文第31天】在软件开发的过程中,构建性能直接影响着开发效率和团队的生产力。一个快速、可靠的构建流程可以显著加快迭代速度,减少等待时间,使团队能够更快地响应变化。Jenkins 作为一款广泛使用的持续集成/持续交付(CI/CD)工具,提供了丰富的功能来帮助开发者监控和优化构建性能。本文将探讨如何利用 Jenkins 的内置工具和外部工具来监控构建性能,并提出一些具体的优化方案。
1022 0
|
Linux
Linux中openvswitch配置网桥详解
Linux中openvswitch配置网桥详解
555 0