Appearance
26. 自动化部署与镜像管理
本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行自动化部署和镜像管理,配合 SecureFX 传输配置文件。内容涵盖 Kickstart 高级使用(编写脚本、网络安装)和 Image Builder 镜像构建(创建自定义镜像、验证分发),全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。
26.1 前提条件
- RHEL 8.10 已安装(参考第 1 章),主机名设置为
ZSLinux. - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
- 使用 SecureFX 传输文件(SFTP 协议).
- 具有 root 或 sudo 权限.
- 系统已订阅并启用 RHEL 仓库(参考第 4 章).
- 防火墙和 SELinux 启用(参考第 13 章).
- RHEL 8.10 ISO 文件已准备(参考第 1 章).
- HTTP 服务已配置(参考第 22 章)以支持网络安装.
26.2 Kickstart 高级使用
26.2.1 编写 Kickstart 脚本
- 创建 Kickstart 配置文件(ks.cfg):bash
vim /etc/httpd/conf.d/ks.cfg # 创建 Kickstart 脚本 # 添加以下内容(示例自动安装 RHEL 8.10): url --url=http://192.168.1.100/rhel-8.10-iso lang en_US.UTF-8 keyboard us timezone Asia/Shanghai rootpw --plaintext rootpass bootloader --location=mbr zerombr clearpart --all --initlabel part /boot --fstype xfs --size=500 part pv.01 --grow --size=1 volgroup vg_root pv.01 logvol / --fstype xfs --name=lv_root --vgname=vg_root --grow --size=1 %packages @core %end reboot - 配置 HTTP 服务器以托管 ks.cfg 和 ISO:bash
mkdir /var/www/html/rhel-8.10-iso # 创建 ISO 托管目录 mount -o loop /path/to/rhel-8.10-x86_64-dvd.iso /var/www/html/rhel-8.10-iso # 挂载 ISO cp ks.cfg /var/www/html # 复制 Kickstart 脚本 systemctl restart httpd # 重启 HTTP 服务
26.2.2 网络安装部署
- 配置 PXE 引导服务器(假设使用 DHCP 和 TFTP):bash
dnf install -y dhcp-server tftp-server syslinux # 安装 PXE 工具 vim /etc/dhcp/dhcpd.conf # 编辑 DHCP 配置文件 # 添加: subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.50; option routers 192.168.1.1; option domain-name-servers 8.8.8.8; filename "pxelinux.0"; next-server 192.168.1.100; # TFTP 服务器 IP } systemctl enable --now dhcpd # 启用 DHCP 服务 - 配置 TFTP 和 PXE:bash
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 复制 PXE 引导文件 mkdir /var/lib/tftpboot/pxelinux.cfg # 创建 PXE 配置目录 vim /var/lib/tftpboot/pxelinux.cfg/default # 编辑默认引导配置 # 添加: default rhel8 label rhel8 kernel vmlinuz append initrd=initrd.img ks=http://192.168.1.100/ks.cfg cp /var/www/html/rhel-8.10-iso/images/pxeboot/vmlinuz /var/lib/tftpboot/ # 复制内核文件 cp /var/www/html/rhel-8.10-iso/images/pxeboot/initrd.img /var/lib/tftpboot/ # 复制 initrd 文件 systemctl enable --now tftp # 启用 TFTP 服务
26.3 镜像构建
26.3.1 使用 Image Builder 创建自定义镜像
- 安装 Image Builder:bash
dnf install -y osbuild-composer composer-cli # 安装 Image Builder 工具 systemctl enable --now osbuild-composer # 启用并启动 Image Builder 服务 - 创建自定义镜像蓝图:bash
composer-cli blueprints push blueprint.toml # 推送蓝图文件 # 示例 blueprint.toml 内容: name = "custom-rhel8" description = "Custom RHEL 8 image with httpd" version = "0.0.1" packages = ["httpd"] - 构建镜像:bash
composer-cli compose start custom-rhel8 iso # 开始构建 ISO 镜像 composer-cli compose status # 检查构建状态 composer-cli compose image <UUID> # 下载镜像(UUID 从 status 获取)
26.3.2 验证与分发镜像
- 验证镜像:bash
sha256sum custom-rhel8.iso # 检查镜像完整性 - 分发镜像:bash
cp custom-rhel8.iso /var/www/html/ # 复制到 HTTP 服务器 virt-install --name testvm --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/testvm.qcow2,size=10 --os-variant rhel8.10 --location /var/www/html/custom-rhel8.iso # 使用自定义镜像创建虚拟机
26.4 验证
- 验证 Kickstart 脚本:bash
ksvalidator /etc/httpd/conf.d/ks.cfg # 验证 Kickstart 语法 - 验证网络安装:bash
curl http://192.168.1.100/ks.cfg # 检查 Kickstart 文件访问 - 验证自定义镜像:bash
virt-install --name testvm --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/testvm.qcow2,size=10 --os-variant rhel8.10 --location custom-rhel8.iso --dry-run # 模拟安装验证 - 测试 SSH 连接:bash
ssh -p 2222 testuser@ZSLinux # 测试 SSH 连接(参考第 6 章) - 常见问题:
- Kickstart 语法错误:使用
ksvalidator检查脚本(dnf install -y pykickstart)。 - 镜像构建失败:检查蓝图文件(
composer-cli blueprints show custom-rhel8)或日志(journalctl -u osbuild-composer)。 - 网络安装失败:确认 TFTP/DHCP 配置(
systemctl status tftp dhcpd)或 ISO 挂载(mount | grep iso)。
- Kickstart 语法错误:使用
26.5 实践任务
- 使用 SecureCRT 登录
ZSLinux,编写 Kickstart 脚本ks.cfg并托管在 HTTP 服务器。 - 配置 PXE 引导服务器以支持网络安装。
- 使用 Image Builder 创建自定义镜像包含
httpd包。 - 验证自定义镜像并分发到
/var/www/html.
26.6 自测问题
- 问题:如何编写 Kickstart 脚本?
- 答案:编辑
/etc/httpd/conf.d/ks.cfg,添加url,part,%packages等部分。
- 答案:编辑
- 问题:如何启动 Image Builder 构建?
- 答案:
composer-cli blueprints push blueprint.toml,composer-cli compose start custom-rhel8 iso.
- 答案:
- 问题:如何验证网络安装配置?
- 答案:
curl http://192.168.1.100/ks.cfg检查文件访问。
- 答案:
