跳转至

28. 自动化部署与镜像管理

本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 进行自动化部署和镜像管理,配合 SecureFX 传输配置文件。内容涵盖 Kickstart 高级使用(编写脚本、网络安装)和 Image Builder 镜像构建(创建自定义镜像、验证分发),全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。


28.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 仓库(参考第 2 章)。
  • 防火墙和 SELinux 启用(参考第 12 章)。
  • RHEL 9 ISO 文件已准备(参考第 1 章)。
  • HTTP 服务器(如 Apache)已安装并运行(参考第 20 章)。

💡 提示:自动化部署需网络环境支持 PXE 或 HTTP。在 RHEL 10 中,Image Builder 支持更多模块化镜像和容器集成,提升云原生部署效率。


28.2 Kickstart 高级使用

28.2.1 编写 Kickstart 脚本

  • 创建 Kickstart 文件:

    vim /var/www/html/ks.cfg  # 托管在 HTTP 服务器
    # 示例内容:
    url --url=https://cdn.redhat.com/content/dist/rhel9/9/x86_64/baseos/os
    lang en_US.UTF-8
    keyboard us
    timezone Asia/Shanghai
    rootpw --plaintext securepass
    user --name=testuser --password=securepass --groups=wheel
    network --bootproto=static --ip=192.168.1.100 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver=8.8.8.8
    zerombr
    clearpart --all --initlabel
    part / --fstype=ext4 --size=10000
    part swap --size=2048
    part /home --fstype=ext4 --size=5000
    %packages
    @core
    httpd
    %end
    %post
    systemctl enable httpd
    %end
    

  • 验证脚本:

    ksvalidator /var/www/html/ks.cfg  # 检查语法
    curl http://192.168.1.100/ks.cfg  # 验证 HTTP 访问
    

🧠 知识点:Kickstart 支持 %pre%post 脚本自动化。url 指定安装源。

28.2.2 配置 PXE 引导服务器

  • 安装 PXE 工具:

    dnf install -y tftp-server dhcp-server syslinux syslinux-tftpboot
    

  • 配置 DHCP(/etc/dhcp/dhcpd.conf):

    subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.150 192.168.1.200;
        option routers 192.168.1.1;
        option domain-name-servers 8.8.8.8;
        filename "pxelinux.0";
        next-server 192.168.1.100;
    }
    

  • 配置 TFTP:

    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    mkdir -p /var/lib/tftpboot/pxelinux.cfg
    vim /var/lib/tftpboot/pxelinux.cfg/default
    # 添加:
    default linux
    label linux
        kernel vmlinuz
        append initrd=initrd.img inst.repo=http://192.168.1.100 ks=http://192.168.1.100/ks.cfg
    

  • 启动服务:

    systemctl enable --now tftp-server dhcp-server
    

🧠 知识点:PXE 使用 DHCP + TFTP 引导网络安装。测试:虚拟机设置为 PXE 引导。


28.3 Image Builder 镜像构建

28.3.1 安装 Image Builder

  • 安装工具:
    dnf install -y osbuild-composer composer-cli lorax  # 安装 Image Builder
    systemctl enable --now osbuild-composer.socket
    systemctl enable --now composer-cli.socket
    

28.3.2 创建自定义镜像

  • 创建 Blueprint(TOML 文件):

    vim custom-rhel9.toml
    # 示例内容:
    name = "custom-rhel9"
    description = "Custom RHEL 9 with httpd"
    version = "0.0.1"
    modules = []
    [[packages]]
    name = "httpd"
    version = "*"
    [[customizations.user]]
    name = "admin"
    password = "$6$...hashed..."  # 使用 mkpasswd 生成
    groups = ["wheel"]
    

  • 推送 Blueprint:

    composer-cli blueprints push custom-rhel9.toml
    

  • 启动构建:

    composer-cli compose start custom-rhel9 iso  # 构建 ISO 镜像
    composer-cli compose status  # 检查状态
    composer-cli compose image <uuid>  # 下载镜像
    

  • 验证镜像:

    composer-cli compose status  # 确认成功
    mv <uuid>.iso /var/www/html/custom-rhel9.iso  # 分发到 HTTP
    

🧠 知识点:Image Builder 支持 ISO、QCOW2 等格式。查看:composer-cli blueprints list

检查点:镜像下载成功,curl http://192.168.1.100/custom-rhel9.iso 访问。


28.4 常见问题与排查

🔍 故障排查

  • 问题 1:Kickstart 语法错误
    解决ksvalidator ks.cfg,检查日志(journalctl -u httpd)。

  • 问题 2:PXE 引导失败
    解决:检查 DHCP(journalctl -u dhcpd)、TFTP(journalctl -u tftp-server)、网络。

  • 问题 3:Image Builder 构建失败
    解决composer-cli compose status,检查日志(journalctl -u osbuild-composer)。

  • 问题 4:镜像下载慢
    解决:验证 HTTP 服务(curl http://192.168.1.100/ks.cfg),网络。


28.5 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,编写 Kickstart 脚本并托管在 HTTP 服务器。
  2. 配置 PXE 引导服务器以支持网络安装。
  3. 使用 Image Builder 创建自定义镜像包含 httpd 包。
  4. 验证自定义镜像并分发到 /var/www/html

检查点:Kickstart 文件访问正常,PXE 引导成功,镜像构建完成。


28.6 自测问题

  • 问题 1:如何编写 Kickstart 脚本?
    答案:编辑 /var/www/html/ks.cfg,添加 url, part, %packages 等部分。

  • 问题 2:如何启动 Image Builder 构建?
    答案composer-cli blueprints push blueprint.toml, composer-cli compose start custom-rhel9 iso

  • 问题 3:如何验证网络安装配置?
    答案curl http://192.168.1.100/ks.cfg 检查文件访问。


🧾 总结
本章完整介绍了 RHEL 9 自动化部署与镜像管理的流程,包括 Kickstart 网络安装和 Image Builder 自定义镜像。这些技能实现大规模部署,为后续系统迁移与升级提供自动化基础。