文档目录

环境准备

前提条件

CentOS Stream 9系统模板封装需提前获取ISO镜像,并将其添加至ZStack Cloud,以备操作系统安装时使用。请注意以下内容:
  • 用户需在官网自行获取CentOS Stream 9安装镜像,并遵守相关授权许可。
  • 本文档参考版本为:CentOS-Stream-9-20260902.0-x86_64-boot.iso

操作步骤

  1. 添加安装镜像。

    在ZStack Cloud主菜单,点击资源中心 > 云资源池 > 计算配置 > 镜像,进入镜像界面。点击添加镜像,弹出添加镜像界面。

    参考以下示例输入相应内容:
    • 名称:设置镜像名称
    • 简介:设置镜像简介
    • 镜像类型:选择系统镜像
    • 镜像格式:选择iso
    • CPU架构:选择x86_64
    • 平台:选择Linux
    • 操作系统:选择CentOS Stream 9
    • Virtio:开启Virtio
    • 镜像服务器:选择已添加至云平台的镜像服务器
    • 镜像路径:添加URL路径或上传本地文件,本示例选择本地文件并上传镜像
      Note: 添加本地文件作为镜像,采用了本地浏览器作为中转上传镜像,请勿刷新或关闭当前浏览器,也不可停止管理节点服务,否则将添加失败。
    • BIOS模式:选择Legacy
    图 1. 核对ISO镜像状态和配置

    核对ISO镜像状态和配置

封装模板

安装操作系统

背景信息

安装操作系统包含以下步骤:
  1. 创建云主机。
  2. 安装CentOS Stream 9。

操作步骤

  1. 创建云主机。

    在ZStack Cloud创建云主机,并使用安装镜像引导云主机启动,详情可参考《用户手册》的创建云主机章节。本示例使用2个vCPU、4 GiB内存和40 GiB根云盘,启动模式与安装镜像保持一致。

  2. 安装CentOS Stream 9。

    boot ISO需要联网下载安装软件包。安装网卡必须能解析仓库域名,并访问安装源的元数据及BaseOS、AppStream软件包。本示例使用Closest mirror,先在安装程序中确认网络已连接,再等待安装源元数据读取完成,选择最小安装。安装过程中需保持网络可用。

    1. 在安装程序中选择English (United States),然后点击Continue。
      如图 2所示:
      图 2. 选择安装语言

      选择安装语言
    2. 配置网络。

      在Network & Host Name页面启用网卡,确认状态为Connected,并核对DHCP分配的IP地址、默认路由和DNS。本示例网卡为ens3,请以实际设备名为准。完成后点击Done。

      如图 3所示:
      图 3. 启用安装网卡

      启用安装网卡
    3. 磁盘分区。

      在Installation Destination页面选择40 GiB空白根云盘vda,选择Automatic,然后点击Done。请按实际设备名和容量核对安装目标。

      如图 4所示:
      图 4. 选择安装磁盘和自动分区

      选择安装磁盘和自动分区
    4. 选择安装类型。

      在Software Selection页面选择Minimal Install,保留附加软件为未选中状态,然后点击Done。

      如图 5所示:
      图 5. 选择最小安装

      选择最小安装
    5. 安装配置汇总。

      核对时间和时区,设置root密码,并按需创建管理用户。确认安装源已完成元数据读取、安装目标和其他配置无误后,点击Begin Installation。记录实际分区方案。

      本示例的安装源为Closest mirror。确认安装源元数据读取完成后再继续;时间和时区请按实际环境设置。

      如图 6所示:
      图 6. 确认安装配置

      确认安装配置

      安装完成后,卸载安装ISO,将HardDisk设为首个启动项,重启云主机并通过控制台登录系统。

配置模板系统

背景信息

模板系统配置包含以下步骤:
  1. 指定Hostname。
  2. 配置网络。
  3. (可选)安装性能优化工具。
  4. (可选)安装cloud-init。

操作步骤

  1. 指定Hostname。
    执行以下命令指定主机名:
    sudo hostnamectl set-hostname localhost.localdomain
  2. 配置网络。

    本教程采用单网卡IPv4 DHCP。选择实际以太网连接UUID,清除源系统的静态地址、DNS和网卡绑定。连接修改默认持久保存。

    nmcli -f NAME,UUID,TYPE,DEVICE connection show --active
    PROFILE="REPLACE_WITH_CONNECTION_UUID"
    sudo nmcli connection modify "$PROFILE" \
      connection.autoconnect yes connection.interface-name "" \
      ipv4.method auto ipv4.addresses "" ipv4.gateway "" \
      ipv4.routes "" ipv4.dns "" ipv4.dns-search "" \
      ipv4.ignore-auto-dns no ipv4.ignore-auto-routes no \
      ipv4.dhcp-client-id mac \
      802-3-ethernet.mac-address "" \
      802-3-ethernet.cloned-mac-address permanent
    sudo nmcli connection up "$PROFILE"
    nmcli device show
    Note: 通过控制台执行,避免网络切换中断SSH。确认DHCP提供的DNS可用,并停用不再使用的旧自动连接配置。
  3. (可选)安装性能优化工具。
    sudo dnf install -y tar

    在源云主机详情页挂载性能优化工具ISO。执行以下命令,将DEVICE替换为实际光驱设备(例如/dev/sr0)。安装失败时先处理错误;介质仍挂载时,确认未被使用后再卸载。

    (
        set -e
        DEVICE="REPLACE_WITH_OPTICAL_DEVICE"
        test -b "$DEVICE"
        sudo mkdir -p /mnt/guesttools
        if mountpoint -q /mnt/guesttools; then
            printf '%s\n' 'Mount point already in use; inspect it before continuing.'
            exit 1
        fi
        sudo mount -o ro "$DEVICE" /mnt/guesttools
        test -f /mnt/guesttools/zs-tools-install.sh
        cd /mnt/guesttools
        sudo bash ./zs-tools-install.sh
        cd /
        sudo umount /mnt/guesttools
    )
    图 7. 核对性能优化工具安装输出

    核对性能优化工具安装输出
  4. (可选)安装cloud-init。

    如需User Data或SSH公钥初始化功能,可安装cloud-init。使用root或具有sudo权限的账户,从官方仓库安装以下软件。

    sudo dnf install -y cloud-init openssh-server &&
      sudo systemctl enable --now sshd

    保留SELinux和防火墙策略。在/etc/cloud/cloud.cfg.d/99-template.cfg中添加以下配置,使NetworkManager管理网络,cloud-init管理初始化;同名文件已存在时合并修改。

    network:
      config: disabled
    preserve_hostname: false
    ssh_deletekeys: true
    ssh_pwauth: false
    Note: SSH密码认证关闭。请核对cloud-init默认登录用户,并在使用镜像创建云主机时为该用户提供SSH公钥。

    保存后重启源云主机。

    sudo systemctl reboot

创建系统模板

背景信息

创建系统模板包含以下步骤:
  1. 创建镜像。
  2. 导出镜像。

操作步骤

  1. 创建镜像。

    移除临时文件、安装应答文件中的凭据、临时账户和命令历史,保留使用镜像所需的登录账户及认证配置。cloud-init清理不会清除本地账户密码。

    已安装cloud-init时,确认其支持以下清理选项且已按前文配置首次启动生成SSH主机密钥。未安装时,以下命令仅重置机器ID,保留现有网络配置及SSH主机密钥,然后关机。未安装cloud-init的镜像需自行安排每台云主机SSH主机密钥的重新生成。

    sudo bash <<'CLEANUP'
    set -e
    if command -v cloud-init >/dev/null 2>&1; then
        cloud-init clean --logs --machine-id --seed
        rm -f /etc/ssh/ssh_host_*_key /etc/ssh/ssh_host_*_key.pub
    else
        truncate -s 0 /etc/machine-id
    fi
    if [ -d /var/lib/dbus ]; then
        rm -f /var/lib/dbus/machine-id
        ln -s /etc/machine-id /var/lib/dbus/machine-id
    fi
    sync
    systemctl poweroff
    CLEANUP
    Note: 仅在模板源云主机执行。失败时先处理错误;清理后不要重新启动源云主机,否则需重新清理后再创建镜像。

    确认云主机已停止,并卸载安装ISO和性能优化工具ISO。

    在所创建云主机详情页,点击更多操作 > 镜像与ISO > 创建镜像,进入创建镜像界面。

    可参考以下示例输入相应内容:
    • 名称:设置镜像名称
    • 简介:可选项,可留空不填
    • 镜像类型:选择系统镜像
    • 镜像服务器:选择已创建的镜像服务器
    图 8. 创建系统镜像

    系统镜像类型、名称、简介及镜像服务器字段
  2. 导出镜像
    导出镜像用于其他云平台直接使用该镜像创建云主机,不同类型镜像服务器的导出方法不同:
    • ImageStore类型镜像服务器。

      在镜像页面点击操作 > 导出镜像按钮,即可导出镜像。

      镜像生成后,可以在总览页面复制已导出的镜像URL下载镜像,也可以在导出记录页面复制已导出的镜像URL或直接点击下载镜像。

    • Ceph类型镜像服务器。支持在UI和镜像服务器上导出镜像。
      • 在UI上导出:

        在镜像页面点击操作 > 导出镜像按钮,即可导出镜像。

        镜像导出后,可在总览页面复制已导出的镜像URL下载镜像,也可在导出记录页面复制已导出的镜像URL或直接点击下载镜像。

      • 在镜像服务器上导出:
        1. 进入已创建镜像的总览页面,复制安装路径。
        2. 登录Ceph服务器终端,使用rbd export命令导出,例如:
          假定获取到的安装路径为ceph://bak-t-cac5eee23a204c1a914d1743f1584644/7232237c0059409babcd1c7a69452b98,使用以下命令导出镜像:
          [root@ceph-node1 ~]# rbd export bak-t-cac5eee23a204c1a914d1743f1584644/7232237c0059409babcd1c7a69452b98 /root/export-test.qcow2
          [root@ceph-node1 ~]# # bak-t字段表示镜像安装路径
          [root@ceph-node1 ~]# # /root/export-test.qcow2表示导出的目标路径及文件名
          Note: rbd export命令中不包含 ceph:// 前缀。

后续操作

至此,CentOS Stream 9系统模板封装已完成,可使用该镜像批量生成云主机。
CentOS Stream 9 系统模板封装教程 | 5.5.38 | ZStack Cloud · ZCF | ZStack 资源中心