在 Azure Stack HCI 上创建 Arc 虚拟机

适用于:Azure Stack HCI 版本 23H2

本文介绍如何从 Azure Stack HCI 群集上创建的 VM 映像开始创建 Arc VM。 可以使用 Azure CLI、Azure 门户或 Azure 资源管理器 (ARM) 模板创建 Arc VM。

关于 Azure Stack HCI 群集资源

使用 Azure Stack HCI 群集资源页 执行以下操作:

  • 创建和管理 Arc VM 资源,例如 VM 映像、磁盘、网络接口。
  • 查看和访问与 Azure Stack HCI 群集关联的 Azure Arc 资源网桥和自定义位置。
  • 预配和管理 Arc VM。

下一部分将介绍 Arc VM 的创建过程。

先决条件

创建已启用 Azure Arc 的 VM 之前,请确保满足以下先决条件。

  • 如果使用客户端连接到 Azure Stack HCI 群集,请参阅 通过 Azure CLI 客户端连接到 Azure Stack HCI

  • 访问已在与 Azure Stack HCI 群集关联的逻辑网络上创建的网络接口。 可以选择具有静态 IP 的网络接口,也可以选择具有动态 IP 分配的网络接口。 有关详细信息,请参阅如何 创建网络接口

创建 Arc VM

按照以下步骤在 Azure Stack HCI 群集上创建 Arc VM。

在运行连接到 Azure Stack HCI 群集的 az CLI 的客户端上执行以下步骤。

登录并设置订阅

  1. 连接到 Azure Stack HCI 系统上的服务器。

  2. 登录。 键入:

    az login --use-device-code
    
  3. 设置订阅。

    az account set --subscription <Subscription ID>
    

创建 Windows VM

根据创建的网络接口的类型,可以创建具有具有静态 IP 的网络接口的 VM 或具有动态 IP 分配的 VM。

注意

如果 VM 需要多个具有静态 IP 的网络接口,请在创建 VM 之前立即创建接口 () 。 不支持在预配 VM 后添加具有静态 IP 的网络接口。

下面,我们将创建一个 VM,该 VM 使用指定存储路径上的特定内存和处理器计数。

  1. 设置一些参数。

    $vmName ="myhci-vm"
    $subscription =  "<Subscription ID>"
    $resource_group = "myhci-rg"
    $customLocationName = "myhci-cl"
    $customLocationID ="/subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.ExtendedLocation/customLocations/$customLocationName"
    $location = "eastus"
    $computerName = "mycomputer"
    $userName = "myhci-user"
    $password = "<Password for the VM>"
    $imageName ="ws22server"
    $nicName ="myhci-vnic" 
    $storagePathName = "myhci-sp" 
    $storagePathId = "/subscriptions/<Subscription ID>/resourceGroups/myhci-rg/providers/Microsoft.AzureStackHCI/storagecontainers/myhci-sp" 
    

    VM 创建的参数按如下方式进行表格化:

    参数 说明
    name 为 Azure Stack HCI 群集创建的 VM 的名称。 请确保提供符合 Azure 资源规则的名称。
    admin-username 在 Azure Stack HCI 群集上部署的 VM 上的用户的用户名。
    admin-password 要部署在 Azure Stack HCI 群集上的 VM 上的用户的密码。
    image-name 用于预配 VM 的 VM 映像的名称。
    location az locations 指定的 Azure 区域。 例如,这可以是 eastuswesteurope
    resource-group 在其中创建 VM 的资源组的名称。 为便于管理,建议使用与 Azure Stack HCI 群集相同的资源组。
    subscription 部署 Azure Stack HCI 的订阅的名称或 ID。 这可能是用于 Azure Stack HCI 群集上的 VM 的另一个订阅。
    custom-location 使用它来提供与要在其中创建此 VM 的 Azure Stack HCI 群集关联的自定义位置。
    authentication-type 要与 VM 一起使用的身份验证类型。 接受的值为 allpasswordssh。 默认值为 Windows 的密码和适用于 Linux 的 SSH 公钥。 使用 all 启用 sshpassword 身份验证。
    nics 与 VM 关联的网络接口的名称或 ID。 创建 VM 时,至少必须有一个网络接口才能启用来宾管理。
    memory-mb 分配给 VM 的内存(以兆字节为单位)。 如果未指定,则使用默认值。
    处理器 分配给 VM 的处理器数。 如果未指定,则使用默认值。
    storage-path-id 保存 VM 配置和数据的相关存储路径。
    proxy-configuration 使用此可选参数为 VM 配置代理服务器。 有关详细信息,请参阅 创建配置了代理的 VM
  2. 运行以下命令以创建 VM。

     az stack-hci-vm create --name $vmName --resource-group $resource_group --admin-username $userName --admin-password $password --computer-name $computerName --image $imageName --location $location --authentication-type all --nics $nicName --custom-location $customLocationID --hardware-profile memory-mb="8192" processors="4" --storage-path-id $storagePathId 
    

如果输出中的 provisioningState 显示为 succeeded,表示成功创建了 VM。

注意

创建的 VM 默认启用来宾管理。 如果在 VM 创建过程中由于任何原因导致来宾管理失败,可以按照 在 Arc VM 上启用来宾管理 中的步骤操作,在创建 VM 后启用它。

在此示例中,存储路径是使用 --storage-path-id 标志指定的,并确保工作负载数据 (包括 VM、VM 映像、非 OS 数据磁盘) 放置在指定的存储路径中。

如果未指定标志,则工作负荷 (VM、VM 映像、非 OS 数据磁盘) 会自动放置在高可用性存储路径中。

创建 Linux VM

若要创建 Linux VM,请使用用于创建 Windows VM 的相同命令。

  • 指定的库映像应为 Linux 映像。
  • 用户名和密码适用于 authentication-type-all 参数。
  • 对于 SSH 密钥,需要将 ssh-key-values 参数与 一起 authentication-type-all传递。

重要

Linux VM 不支持在 VM 创建期间设置代理服务器。

创建配置了代理的 VM

使用此可选参数 proxy-configuration 为 VM 配置代理服务器。

如果在代理服务器后面创建 VM,请运行以下命令:

az stack-hci-vm create --name $vmName --resource-group $resource_group --admin-username $userName --admin-password $password --computer-name $computerName --image $imageName --location $location --authentication-type all --nics $nicName --custom-location $customLocationID --hardware-profile memory-mb="8192" processors="4" --storage-path-id $storagePathId --proxy-configuration http_proxy="<Http URL of proxy server>" https_proxy="<Https URL of proxy server>" no_proxy="<URLs which bypass proxy>" cert_file_path="<Certificate file path for your server>" 

可以为 输入以下参数 proxy-server-configuration

参数 说明
http_proxy 代理服务器的 HTTP URL。 示例 URL 为:http://proxy.example.com:3128
https_proxy 代理服务器的 HTTPS URL。 服务器可能仍使用 HTTP 地址,如以下示例所示: http://proxy.example.com:3128
no_proxy 可以绕过代理的 URL。 典型示例为 localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,100.0.0.0/8
cert_file_path 代理服务器的证书文件路径的名称。 例如:C:\Users\Palomino\proxycert.crt

下面是一个示例命令:

az stack-hci-vm create --name $vmName --resource-group $resource_group --admin-username $userName --admin-password $password --computer-name $computerName --image $imageName --location $location --authentication-type all --nics $nicName --custom-location $customLocationID --hardware-profile memory-mb="8192" processors="4" --storage-path-id $storagePathId --proxy-configuration http_proxy="http://ubuntu:ubuntu@192.168.200.200:3128" https_proxy="http://ubuntu:ubuntu@192.168.200.200:3128" no_proxy="localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,100.0.0.0/8,s-cluster.test.contoso.com" cert_file_path="C:\ClusterStorage\UserStorage_1\server.crt"

对于代理身份验证,可以传递 URL 中组合的用户名和密码,如下所示:"http://username:password@proxyserver.contoso.com:3128"

根据 VM 上运行的 PowerShell 版本,可能需要为 VM 启用代理设置。

  • 对于运行 PowerShell 版本 5.1 或更早版本的 Windows VM,请在创建后登录到 VM。 运行以下命令以启用代理:

    netsh winhttp set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.foo.com"
    

    启用代理后,即可 启用来宾管理

  • 对于运行 PowerShell 版本高于 5.1 的 Windows VM,在 VM 创建过程中传递的代理设置仅用于启用 Arc 来宾管理。 创建 VM 后,登录到 VM 并运行上述命令,为其他应用程序启用代理。

使用托管标识对 Arc VM 进行身份验证

通过 Azure CLI 或 Azure 门户 在 Azure Stack HCI 系统上创建 Arc VM 时,还会创建一个系统分配的托管标识,该标识在 Arc VM 的生存期内持续。

Azure Stack HCI 上的 Arc VM 从已启用 Arc 的服务器扩展,可以使用系统分配的托管标识访问支持基于Microsoft Entra ID身份验证的其他 Azure 资源。 例如,Arc VM 可以使用系统分配的托管标识来访问 Azure 密钥保管库。

有关详细信息,请参阅 系统分配的托管标识 和使用 已启用 Azure Arc 的服务器对 Azure 资源进行身份验证

后续步骤