Skip to content

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)。

26.5 实践任务

  1. 使用 SecureCRT 登录 ZSLinux,编写 Kickstart 脚本 ks.cfg 并托管在 HTTP 服务器。
  2. 配置 PXE 引导服务器以支持网络安装。
  3. 使用 Image Builder 创建自定义镜像包含 httpd 包。
  4. 验证自定义镜像并分发到 /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 检查文件访问。

Released under the MIT License.