使用本地共享中的映像创建 Azure 本地 VM 映像
适用于:Azure 本地版本 23H2
本文介绍如何使用本地共享中的源映像为 Azure 本地创建虚拟机(VM)映像。 可以使用 Azure 门户 或 Azure CLI 创建 VM 映像,然后使用这些 VM 映像在本地创建 Arc VM。
先决条件
在开始之前,请确保满足以下先决条件。
请确保查看并 完成先决条件。
对于 Azure 本地本地共享中的自定义映像,需要满足以下额外的先决条件:
- 系统应将 VHD/VHDX 上传到本地共享。
- VHDX 映像必须是“第 2 代”类型并已启用安全启动。
- 必须使用
sysprep /generalize /shutdown /oobe
准备 VHDX 映像。 有关详细信息,请参阅 Sysprep 命令行选项。 - 映像应驻留在群集共享卷上,可供实例中的所有计算机使用。 支持 Windows 和 Linux 操作系统。
- 如果使用客户端连接到 Azure 本地实例,请参阅 通过 Azure CLI 客户端连接到 Azure 本地。
从本地共享中的映像添加 VM 映像
从系统的本地共享中的映像开始创建 VM 映像,然后使用此映像在 Azure 本地部署 VM。
按照以下步骤使用 Azure CLI 创建 VM 映像。
登录并设置订阅
登录。 键入:
az login --use-device-code
设置订阅。
az account set --subscription <Subscription ID>
设置一些参数
设置映像的订阅、资源组、位置和 OS 类型。 请将
< >
中的参数替换为适当的值。$subscription = "<Subscription ID>" $resource_group = "<Resource group>" $location = "<Location for your Azure Local>" $imageName = <VM image name> $imageSourcePath = <path to the source image> $osType = "<OS of source image>"
下表介绍了这些参数:
参数 说明 subscription
与此映像关联的 Azure 本地的订阅组。 resource_group
与此映像关联的 Azure 本地的资源组。 location
Azure 本地位置。 例如,它可以是 eastus
。image-path
从本地共享中的映像开始创建的 VM 映像的名称。
注意:Azure 将拒绝所有包含关键字“Windows”的名称。name
系统上源库映像(仅限 VHDX)的路径。 例如 C:\OSImages\winos.vhdx。 请查看源映像的先决条件。 os-type
与源映像关联的操作系统。 这可以是 Windows 或 Linux。 下面是示例输出:
PS C:\Users\azcli> $subscription = "<Subscription ID>" PS C:\Users\azcli> $resource_group = "mylocalrg" PS C:\Users\azcli> $location = "eastus" PS C:\Users\azcli> $osType = "Windows" PS C:\ClusterStorage\Volume1> $imageName = "mylocal-localimage" PS C:\ClusterStorage\Volume1> $imageSourcePath = "C:\ClusterStorage\Volume1\Windows_K8s_17763.2928.220505-1621_202205101158.vhdx"
从本地共享中的映像创建 VM 映像
选择一个自定义位置来部署 VM 映像。 自定义位置应对应于 Azure 本地的自定义位置。 获取 Azure 本地的自定义位置 ID。 运行下面的命令:
$customLocationID=(az customlocation show --resource-group $resource_group --name "<custom location name for system>" --query id -o tsv)
从 Azure 本地本地共享中的指定映像开始创建 VM 映像。
az stack-hci-vm image create --subscription $subscription --resource-group $resource_group --custom-location $customLocationID --location $location --image-path $ImageSourcePath --name $ImageName --os-type $osType --storage-path-id $storagepathid
将针对 VM 映像启动一个部署作业。
在此示例中,使用
--storage-path-id
标志指定了存储路径,并确保将工作负荷数据(包括 VM、VM 映像、非 OS 数据磁盘)放置在指定的存储路径中。如果未指定标志,则工作负荷数据会自动放置在高可用性存储路径中。
映像部署需要几分钟才能完成。 下载映像所需的时间取决于本地共享中映像的大小,以及下载时可用的网络带宽。
下面是示例输出:
PS C:\Users\azcli> $customLocationID=(az customlocation show --resource-group $resource_group --name "myhci-cl" --query id -o tsv)
PS C:\Users\azcli> az stack-hci-vm image create --subscription $subscription --resource-group $resource_group --custom-location $customLocationID --location $location --image-path $ImageSourcePath --name $ImageName --os-type $osType --storage-path-id $storagepathid
type="CustomLocation" --location $Location --name $mktplaceImage --os-type $osType --image-path $mktImageSourcePath
Command group 'azurestackhci' is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
"extendedLocation": {
"name": "/subscriptions/<Subscription ID>/resourceGroups/mylocal-rg/providers/Microsoft.ExtendedLocation/customLocations/mylocal-cl",
"type": "CustomLocation"
},
"id": "/subscriptions/<Subscription ID>/resourceGroups/mylocal-rg/providers/Microsoft.AzureStackHCI/galleryimages/mylocal-localimage",
"location": "eastus",
"name": "mylocal-localimage",
"properties": {
"identifier": null,
"imagePath": null,
"osType": "Windows",
"provisioningState": "Succeeded",
"status": {
"downloadStatus": {},
"progressPercentage": 100,
"provisioningStatus": {
"operationId": "82f58893-b252-43db-97a9-258f6f7831d9*43114797B86E6D2B28C4B52B02302C81C889DABDD9D890F993665E223A5947C3",
"status": "Succeeded"
}
},
"storagepathId": "/subscriptions/<Subscription ID>/resourceGroups/myhci-rg/providers/Microsoft.AzureStackHCI/storagecontainers/myhci-storagepath",
"version": {
"name": null,
"properties": {
"storageProfile": {
"osDiskImage": {}
}
}
}
},
"resourceGroup": "myhci-rg",
"systemData": {
"createdAt": "2023-11-02T06:15:10.450908+00:00",
"createdBy": "guspinto@contoso.com",
"createdByType": "User",
"lastModifiedAt": "2023-11-02T06:15:56.689323+00:00",
"lastModifiedBy": "319f651f-7ddb-4fc6-9857-7aef9250bd05",
"lastModifiedByType": "Application"
},
"tags": null,
"type": "microsoft.azurestackhci/galleryimages"
}
PS C:\Users\azcli>
列出 VM 映像
需要查看 VM 映像列表才能选择要管理的映像。
按照以下步骤使用 Azure CLI 列出 VM 映像。
以管理员身份运行 PowerShell。
设置一些参数。
$subscription = "<Subscription ID associated with your Azure Local>" $resource_group = "<Resource group name for your Azure Local>"
列出与 Azure 本地关联的所有 VM 映像。 运行下面的命令:
az stack-hci-vm image list --subscription $subscription --resource-group $resource_group
根据所使用的命令,会列出与 Azure Local 关联的相应映像集。
- 如果你仅指定订阅,则该命令会列出该订阅中的所有映像。
- 如果你同时指定订阅和资源组,则该命令会列出该资源组中的所有映像。
这些映像包括:
- 市场映像中的 VM 映像。
- 驻留在Azure 存储帐户中的自定义映像,或者位于系统或连接到系统的客户端的本地共享中。
下面是示例输出。
PS C:\Users\azcli> az stack-hci-vm image list --subscription "<Subscription ID>" --resource-group "myhci-rg"
Command group 'stack-hci-vm' is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
[
{
"extendedLocation": {
"name": "/subscriptions/<Subscription ID>/resourcegroups/myhci-rg/providers/microsoft.extendedlocation/customlocations/myhci-cl",
"type": "CustomLocation"
},
"id": "/subscriptions/<Subscription ID>/resourceGroups/myhci-rg/providers/microsoft.azurestackhci/marketplacegalleryimages/w
inServer2022Az-01",
"location": "eastus",
"name": "winServer2022Az-01",
"properties": {
"hyperVGeneration": "V2",
"identifier": {
"offer": "windowsserver",
"publisher": "microsoftwindowsserver",
"sku": "2022-datacenter-azure-edition-core"
},
"imagePath": null,
"osType": "Windows",
"provisioningState": "Succeeded",
"status": {
"downloadStatus": {
"downloadSizeInMB": 6710
},
"progressPercentage": 100,
"provisioningStatus": {
"operationId": "19742d69-4a00-4086-8f17-4dc1f7ee6681*E1E9889F0D1840B93150BD74D428EAE483CB67B0904F9A198C161AD471F670ED",
"status": "Succeeded"
}
},
"storagepathId": null,
"version": {
"name": "20348.2031.231006",
"properties": {
"storageProfile": {
"osDiskImage": {
"sizeInMB": 130050
}
}
}
}
},
"resourceGroup": "mylocal-rg",
"systemData": {
"createdAt": "2023-10-30T21:44:53.020512+00:00",
"createdBy": "guspinto@contoso.com",
"createdByType": "User",
"lastModifiedAt": "2023-10-30T22:08:25.495995+00:00",
"lastModifiedBy": "319f651f-7ddb-4fc6-9857-7aef9250bd05",
"lastModifiedByType": "Application"
},
"tags": {},
"type": "microsoft.azurestackhci/marketplacegalleryimages"
}
]
PS C:\Users\azcli>
有关此 CLI 命令的详细信息,请参阅 az stack-hci-vm image list。
查看 VM 映像属性
在使用该映像创建 VM 之前,可能需要先查看 VM 映像的属性。 按照以下步骤查看映像属性:
按照以下步骤使用 Azure CLI 查看映像的属性:
以管理员身份运行 PowerShell。
设置以下参数。
$subscription = "<Subscription ID>" $resource_group = "<Azure Local resource group>" $mktplaceImage = "<Marketplace image name>"
可以通过两种不同的方式查看映像属性:指定 ID,或指定名称和资源组。 指定市场映像 ID 时,请执行以下步骤:
设置以下参数。
$mktplaceImageID = "/subscriptions/<Subscription ID>/resourceGroups/myhci-rg/providers/Microsoft.AzureStackHCI/galleryimages/mylocal-marketplaceimage"
运行以下命令以查看属性。
az stack-hci-vm image show --ids $mktplaceImageID
下面是此命令的示例输出:
PS C:\Users\azcli> az stack-hci-vm image show --ids $mktplaceImageID Command group 'stack-hci-vm' is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus { "extendedLocation": { "name": "/subscriptions/<Subscription ID>/resourcegroups/myhci-rg/providers/microsoft.extendedlocation/customlocations/mylocal-cl", "type": "CustomLocation" }, "id": "/subscriptions/<Subscription ID>/resourceGroups/myhci-rg/providers/Microsoft.AzureStackHCI/galleryimages/mylocal-marketplaceimage", "location": "eastus", "name": "mylocal-marketplaceimage", "properties": { "containerName": null, "hyperVGeneration": null, "identifier": null, "imagePath": null, "osType": "Windows", "provisioningState": "Succeeded", "status": null, "version": null }, "resourceGroup": "mylocal-rg", "systemData": { "createdAt": "2022-08-05T20:52:38.579764+00:00", "createdBy": "guspinto@microsoft.com", "createdByType": "User", "lastModifiedAt": "2022-08-05T20:52:38.579764+00:00", "lastModifiedBy": "guspinto@microsoft.com", "lastModifiedByType": "User" }, "tags": null, "type": "microsoft.azurestackhci/galleryimages" } PS C:\Users\azcli>
删除 VM 映像
如果下载因某种原因或不再需要映像,可能需要删除 VM 映像。 按照以下步骤删除 VM 映像。
以管理员身份运行 PowerShell。
设置以下参数:
$subscription = "<Subscription ID>" $resource_group = "<Azure Local resource group>" $mktplaceImage = "<Markeplace image name>"
删除现有的 VM 映像。 运行以下命令:
az stack-hci-vm image delete --subscription $subscription --resource-group $resource_group --name $mktplaceImage --yes
可以通过两种方式删除映像:
- 指定名称和资源组。
- 指定 ID。
删除某个映像后,可以检查该映像是否已删除。 下面是通过指定名称和资源组删除映像后的示例输出。
PS C:\Users\azcli> $subscription = "<Subscription ID>"
PS C:\Users\azcli> $resource_group = "mylocal-rg"
PS C:\Users\azcli> $mktplaceImage = "mymylocal-marketplaceimage"
PS C:\Users\azcli> az stack-hci-vm image delete --name $mktplaceImage --resource-group $resource_group
Command group 'stack-hci-vm' is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Are you sure you want to perform this operation? (y/n): y
PS C:\Users\azcli> az stack-hci-vm image show --name $mktplaceImage --resource-group $resource_group
Command group 'stack-hci-vm' is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
ResourceNotFound: The Resource 'Microsoft.AzureStackHCI/marketplacegalleryimages/myhci-marketplaceimage' under resource group 'mylocal-rg' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix
PS C:\Users\azcli>