为 Azure Stack HCI 虚拟机准备 Red Hat Enterprise 映像(预览版)

适用于:Azure Stack HCI 版本 23H2

本文介绍如何准备 Red Hat Enterprise Linux 映像,以在 Azure Stack HCI 群集上创建虚拟机(VM)。 使用 Azure CLI 创建 VM 映像。

先决条件

在开始之前,请满足以下先决条件:

  • 有权访问 Azure Stack HCI 群集。 此群集已部署、注册并连接到 Azure Arc。转到 Azure Stack HCI 群集资源中的“概述”页。 在右侧窗格的“服务器”选项卡上,Azure Arc 应显示为“已连接”。
  • 在 Azure Stack HCI 群集上下载最新支持的 Red Hat Enterprise 服务器映像 。 我们支持所有 Red Hat Enterprise Linux 7.x、8.x 和 9.x 版本。 在这里,我们下载了 rhel-9.4-x86_64-boot.iso 文件。 使用此映像创建 VM 映像。

Workflow

准备 Red Hat Enterprise 映像并创建 VM 映像:

  1. 创建 Red Hat Enterprise VM
  2. 连接到 VM 并安装 Red Hat OS
  3. 配置 VM
  4. 清理剩余配置
  5. 创建 Red Hat VM 映像

以下部分提供了工作流中每个步骤的详细说明。

从 Red Hat Enterprise 映像创建 VM 映像

重要

  • 请勿使用 Azure 虚拟机 VHD 磁盘为 Azure Stack HCI 准备 VM 映像。
  • 如果要在 VM 上启用来宾管理,建议准备 Red Hat Enterprise 映像。

按照 Azure Stack HCI 群集上的这些步骤,使用 Azure CLI 创建 VM 映像。

步骤 1:创建 Red Hat Enterprise VM

若要使用下载的 Red Hat Enterprise 映像预配 VM,请执行以下操作:

  1. 使用下载的映像创建具有以下规范的 VM:

    1. 为 VM 提供一个易记名称。

      显示“指定名称和位置”页上的“新建虚拟机向导”的屏幕截图。

    2. 在此处使用 VHDX 映像时,请为 VM 指定第 2 代

      显示“指定生成”页上的“新建虚拟机向导”的屏幕截图。

    3. 选择“分配内存”,然后输入 4096 用于启动内存

      显示“分配内存”页上的“新建虚拟机向导”的屏幕截图。

    4. 选择“ 配置网络”。 从下拉列表中选择 VM 用于连接的虚拟交换机。

      显示“配置网络”页上的“新建虚拟机向导”的屏幕截图。

    5. 接受“连接虚拟硬盘”页上的默认值。

      显示虚拟硬盘页上的“新建虚拟机向导”的屏幕截图。

    6. 选择“ 安装选项” ,然后选择“ 从可启动映像文件安装操作系统”。 指向之前下载的 ISO。

      显示“OS 安装选项”屏幕的屏幕截图。

    有关分步说明,请参阅 使用 Hyper-V 管理器预配 VM。

  2. 使用 UEFI 证书保护启动 VM。

    1. 创建 VM 后,它将显示在 Hyper-V 管理器中。 选择 VM,右键单击它,然后选择“ 设置”。

    2. 在左窗格中,选择“安全”选项卡。然后在“安全启动”下,从模板下拉列表中选择Microsoft UEFI 证书颁发机构

    3. 选择“确定”以保存更改。

    显示已启用 UEFI 安全启动的屏幕的屏幕截图。

  3. 从 Hyper-V 管理器中选择 VM,然后启动 VM。 VM 从提供的 ISO 映像启动。

步骤 2:连接到 VM 并安装 Red Hat OS

运行 VM 后,请执行以下步骤:

  1. 从 Hyper-V 管理器中选择 VM,右键单击它以打开菜单,然后选择“ 连接”。

  2. 从启动菜单中选择“ 安装 Red Hat Enterprise Linux 9.4 ”。

  3. 选择语言,然后选择“ 继续”。

    显示“语言选择”屏幕的屏幕截图。

  4. “安装摘要 ”页上,你可能会看到其他可操作的项目。

    显示具有可操作项的“安装摘要”的屏幕截图。

  5. 选择“ 连接到 Red Hat ”并创建凭据。 选择“注册,然后选择“完成”。

    显示“连接到 Red Hat”页的屏幕截图。

  6. 选择“软件选择,保留默认值,然后选择“完成”。

    显示“软件选择”页的屏幕截图。

  7. 选择 “安装目标 ”,然后选择“ 完成”。

    显示“安装目标”页的屏幕截图。

  8. 选择 “网络和主机名”。

    显示已完成的“安装摘要”页的屏幕截图。

  9. 为网络接口启用 ON 开关,然后选择“完成”。

    显示“网络和主机名”页的屏幕截图。

  10. 选择 “用户”设置 并设置根密码。 输入密码,确认密码,然后选择“ 完成”。

    显示凭据页的屏幕截图。

  11. 选择“ 开始安装”。

    显示“开始安装”按钮的屏幕截图。

  12. 安装完成后,选择“ 重新启动系统 ”重新启动 VM。

    显示安装后“重新启动系统”按钮的屏幕截图。

有关分步说明,请参阅 使用 Hyper-V 管理器预配 VM。

步骤 3:配置 VM

配置 VM:

  1. 使用在 Red Hat Enterprise 安装过程中创建的根密码连接到 VM,然后登录到 VM。

  2. 请确保 cloud-init 未安装。

    Sudo yum list installed | grep cloud-init
    
  3. cloud-init安装该工具并验证已安装的版本cloud-init

    Sudo yum install -y cloud-init
    cloud-init --version
    

    下面是示例输出:

    [hcitest@localhost ~]$ sudo yum install -y cloud-init
    Installed:
    cloud-init-23.4-7.el9_4.noarch 
    dhcp-client-12:4.4.2-19.bl.el9.x86_64 
    dhcp-common-12:4.4.2-19.bl.el9.noarch 
    geolite2-city-20191217-6.el9.noarch 
    geolite2-country-20191217-6.el9.noarch 
    ipcalc-l.0.0-5.el9.x86_64 
    python3-attrs-20.3.0-7.el9.noarch 
    python3-babel-2.9.1-2.el9.noarch 
    python3-configob j-5.0.6-25.el9.noarch 
    python3-jinja2-2.11.3-5.el9.noarch 
    python3-j sonpatch-1.21-16.el9.noarch 
    python3-j sonpointer-2.0-4.el9.noarch 
    python3-j sonschema-3.2.0-13.el9.noarch 
    python3-markupsafe-l.1.1-12.el9.x86_64 
    python3-netifaces-0.10.6-15.el9.x86_64 
    python3-oauthlib-3.1.1-5.el9.noarch 
    python3-prettytable-0.7.2-27.el9.noarch 
    python3-pyrsistent-0.17.3-8.el9.x86_64 
    python3-pyserial-3.4-12.el9.noarch 
    python3-pytz-2021.1-5.el9.noarch
    
    Complete!
    [hcitest@localhost ~]$ cloud-init —version 
    /usr/bin/cloud-init 23.4-7.el9_4 
    

步骤 4:清理剩余配置

从 VM 中删除特定于计算机的文件和数据,以便创建干净的 VM 映像,而无需任何历史记录或默认配置。 按照 Azure Stack HCI 群集上的这些步骤清理剩余配置。

  1. 清理 cloud-init 默认配置。

    sudo yum clean all
    sudo cloud-init clean
    

    下面是示例输出:

    [hcitest@localhost ~]$ sudo yum clean all 
    Updating Subscription Management repositories.
    17 files removed
    [hcitest@localhost ~]$ sudo cloud-init clean
    
  2. 清理日志和缓存。

    sudo rm -rf /var/lib/cloud/ /var/log/* /tmp/*
    
  3. 取消注册 VM。

    sudo subscription-manager unregister
    sudo Subscription-manager clean
    

    下面是示例输出:

    [hcitest@localhost ~]$ sudo subscription-manager unregister 
    Unregistering from: subscription.rhsm.redhat.com:443/subscription 
    System has been unregistered.
    [hcitest@localhost ~]$ sudo subscription-manager clean 
    All local data removed
    
  4. 清除任何特定于主机的详细信息。

    sudo rm -f /etc/sysconfig/network-scripts/*
    sudo rm -f /etc/ssh/ssh_host*
    sudo rm /etc/lvm/devices/system.devices
    
  5. 删除 bash 历史记录。

    sudo rm -f ~/.bash_history 
    export HISTSIZE=0
    exit
    
  6. 关闭 VM。 在 Hyper-V 管理器中,转到“关闭操作>”。

  7. 导出 VHDX 或从 VM 复制 VHDX。 可以使用以下方法:

    • 将 VHDX 复制到 Azure Stack HCI 上的群集共享卷上的用户存储。
    • 或者,将 VHDX 作为页 blob 复制到Azure 存储帐户中的容器。

    显示导出虚拟机 VHDX 的屏幕截图。

步骤 5:创建 VM 映像

按照 Azure Stack HCI 群集上的这些步骤,从之前创建的 VHDX 创建 VM 映像。

使用 Azure CLI 创建 VM 映像:

  1. 以管理员身份运行 PowerShell。

  2. 登录。 运行以下 cmdlet:

    az login
    
  3. 设置订阅。 运行以下 cmdlet:

    az account set --subscription <Subscription ID>
    
  4. 为订阅、资源组、自定义位置、位置、映像的 OS 类型、映像的名称以及映像所在的路径设置参数。 请将 < > 中的参数替换为适当的值。

    $Subscription = "<Subscription ID>"
    $Resource_Group = "<Resource group>"
    $CustomLocation = "<Custom location>"
    $Location = "<Location for your Azure Stack HCI cluster>"
    $OsType = "<OS of source image>"
    

    下表介绍了参数。

    参数 说明
    Subscription 与你的 Azure Stack HCI 群集关联的订阅。
    Resource_Group 与此映像关联的 Azure Stack HCI 群集的资源组。
    Location Azure Stack HCI 群集的位置。 例如,位置可以是 eastuswestreurope
    OsType 与源映像关联的操作系统。 此系统可以是 Windows 或 Linux。
  5. 使用 VM 的 VHDX 创建库映像。 使用此 VM 映像在 Azure Stack HCI 上创建 Azure Arc 虚拟机。

    请确保在 Azure Stack HCI 的群集共享卷中的用户存储中复制 VHDX。 例如,路径可能如下所示 C:\ClusterStorage\UserStorage_1\linuxvhdx

    $ImagePath = "Path to user storage in CSV" 
    
    $ImageName = "mylinuxvmimg" 
    
    az stack-hci-vm image create --subscription $subscription -g $resource_group --custom-location $CustomLocation --location $location --image-path $ImagePath --name $ImageName --debug --os-type 'Linux' 
    
  6. 验证映像是否已创建。