透過範本在 Azure Stack Edge Pro GPU 裝置上部署 VM
適用于: Azure Stack Edge Pro - GPU Azure Stack Edge Pro 2 Azure Stack Edge Pro R Azure Stack Edge Mini R
本教學課程說明如何使用範本在 Azure Stack Edge Pro 裝置上建立和管理 VM。 這些範本是 JavaScript 物件標記法 (JSON) 檔案,可定義 VM 的基礎結構和組態。 在這些範本中,您可以指定要部署的資源,以及這些資源的屬性。
範本在不同的環境中具有彈性,因為它們可以從檔案在執行時間接受參數作為輸入。 標準命名結構適用于 TemplateName.json
範本和 TemplateName.parameters.json
參數檔案。 如需 ARM 範本的詳細資訊,請移至 什麼是 Azure Resource Manager 範本? 。
在本教學課程中,我們將使用預先撰寫的範例範本來建立資源。 您不需要編輯範本檔案,而且只要修改檔案 .parameters.json
即可自訂電腦的部署。
VM 部署工作流程
若要跨許多裝置部署 Azure Stack Edge Pro VM,您可以針對完整車隊使用單一 sysprepped VHD、相同的部署範本,並只是對每個部署位置的範本參數進行次要變更(這些變更可能是我們在此執行或程式設計時手動進行的。
使用範本部署工作流程的高階摘要如下所示:
設定必要條件 - 有三種類型的必要條件:裝置、用戶端和 VM。
裝置必要條件
- 連線至裝置上的 Azure Resource Manager 。
- 透過本機 UI 啟用計算。
用戶端必要條件
- 下載用戶端上的 VM 範本和相關聯的檔案。
- 選擇性地在用戶端上設定 TLS 1.2。
- 在您的用戶端上下載並安裝Microsoft Azure 儲存體總管 。
VM 必要條件
- 在裝置位置中建立資源群組,其中包含所有 VM 資源。
- 建立儲存體帳戶以上傳用來建立 VM 映射的 VHD。
- 將本機儲存體帳戶 URI 新增至存取您裝置的用戶端上的 DNS 或主機檔案。
- 在裝置和存取裝置的本機用戶端上安裝 Blob 儲存體憑證。 選擇性地在儲存體總管上安裝 Blob 儲存體憑證。
- 建立 VHD 並將其上傳至稍早建立的儲存體帳戶。
從範本建立 VM
- 使用
CreateImage.parameters.json
參數檔案和CreateImage.json
部署範本建立 VM 映射。 - 使用
CreateVM.parameters.json
參數檔案和CreateVM.json
部署範本建立先前建立資源的 VM。
- 使用
裝置必要條件
在 Azure Stack Edge Pro 裝置上設定這些必要條件。
您必須先設定用戶端透過 Azure PowerShell 透過 Azure Resource Manager 連線到裝置,才能在 Azure Stack Edge 裝置上部署 VM。 如需詳細指示,請參閱 在 Azure Stack Edge 裝置 上連線至 Azure Resource Manager。
請確定您可以使用下列步驟,從用戶端存取裝置。 您已在連線到 Azure Resource Manager 時完成此設定,現在您已確認設定是否成功。
執行下列命令來確認 Azure Resource Manager 通訊是否正常運作:
若要呼叫本機裝置 API 進行驗證,請輸入:
如果您已設定 Kubernetes 的計算,您可以略過此步驟。 否則,請執行下列動作,確定您已啟用用於計算的網路介面:
a. 在您的本機使用者介面上,移至 [計算 設定]。
b. 選取您想要用來建立虛擬交換器的網路介面。 您建立的 VM 將會連結至連結至此埠和相關聯網絡的虛擬交換器。 請務必選擇符合您要用於 VM 之 IP 位址的網路。c. 在 [啟用網路介面上的計算 ] 下,選取 [ 是 ]。 Azure Stack Edge 會建立和管理對應至該網路介面的虛擬交換器。 目前請勿輸入 Kubernetes 的特定 IP。 啟用計算可能需要幾分鐘的時間。
注意
如果您要建立 GPU VM,請選取連線到網際網路的網路介面。 這麼做可讓您在裝置上安裝 GPU 擴充功能。
用戶端必要條件
在您的用戶端上設定這些必要條件,以用來存取 Azure Stack Edge Pro 裝置。
- 如果您使用它來上傳 VHD,請下載儲存體總管 。 或者,您可以下載 AzCopy 來上傳 VHD。 如果執行舊版 AzCopy,您可能需要在用戶端電腦上設定 TLS 1.2。
- 將 VM 範本和參數檔案 下載到您的用戶端電腦。 將它解壓縮到您將用來作為工作目錄的目錄。
VM 必要條件
設定這些必要條件以建立 VM 建立所需的資源。
建立資源群組
使用 New-AzResourceGroup 來建立 Azure 資源群組。 資源群組是一個邏輯容器,Azure 資源,例如儲存體帳戶、磁片、受控磁片的部署和管理。
重要
所有資源都會建立在與裝置相同的位置,並將位置設定為 DBELocal 。
New-AzResourceGroup -Name <Resource group name> -Location DBELocal
以下是範例輸出:
PS C:\WINDOWS\system32> New-AzResourceGroup -Name myaserg1 -Location DBELocal
ResourceGroupName : myaserg1
Location : dbelocal
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/04a485ed-7a09-44ab-6671-66db7f111122/resourceGroups/myaserg1
PS C:\WINDOWS\system32>
建立儲存體帳戶
使用在上一個步驟中建立的資源群組,建立新的儲存體帳戶。 此帳戶是本機 儲存體帳戶 ,將用來上傳 VM 的虛擬磁片映射。
New-AzStorageAccount -Name <Storage account name> -ResourceGroupName <Resource group name> -Location DBELocal -SkuName Standard_LRS
注意
只有本機儲存體帳戶,例如本地備援儲存體(Standard_LRS或進階版_LRS),才能透過 Azure Resource Manager 建立。 若要建立階層式儲存體帳戶,請參閱新增、連線至 Azure Stack Edge Pro 上的儲存體帳戶中的 步驟。
以下是範例輸出:
PS C:\WINDOWS\system32>New-AzStorageAccount -Name myasesa1 -ResourceGroupName myaserg1 -Location DBELocal -SkuName Standard_LRS
StorageAccountName ResourceGroupName PrimaryLocation SkuName Kind AccessTier CreationTime ProvisioningState EnableHttpsTrafficOnly
------------------ ----------------- --------------- ------- ---- ---------- ------------ ----------------- ------
myasesa1 myaserg1 DBELocal Standard_LRS Storage 4/18/2022 8:35:09 PM Succeeded False
PS C:\WINDOWS\system32>
若要取得儲存體帳戶金鑰,請執行 Get-AzStorageAccountKey
命令。 以下是範例輸出:
PS C:\WINDOWS\system32> Get-AzStorageAccountKey
cmdlet Get-AzStorageAccountKey at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
ResourceGroupName: myaserg1
Name: myasesa1
KeyName Value Permissions
------- ----- -----------
key1 7a707uIh43qADXvuhwqtw39mwq3M97r1BflhoF2yZ6W9FNkGOCblxb7nDSiYVGQprpkKk0Au2AjmgUXUT6yCog== Full
key2 2v1VQ6qH1CJ9bOjB15p4jg9Ejn7iazU95Qe8hAGE22MTL21Ac5skA6kZnE3nbe+rdiXiORBeVh9OpJcMOfoaZg== Full
PS C:\WINDOWS\system32>
將 Blob URI 新增至主機檔案
請確定您已針對您用來連線至 Blob 儲存體的用戶端,在主機檔案中新增 Blob URI。 以系統管理員 身分執行記事本,並在 中 C:\windows\system32\drivers\etc\hosts
新增 Blob URI 的下列專案:
<Device IP> <storage account name>.blob.<Device name>.<DNS domain>
在一般環境中,您會設定 DNS,讓所有儲存體帳戶都指向具有 *.blob.devicename.domainname.com
專案的 Azure Stack Edge Pro 裝置。
(選擇性)安裝憑證
如果您要使用 HTTP 透過 儲存體總管 連線,請略過此步驟。 如果您使用 HTTPs ,則必須在 儲存體總管中安裝適當的憑證。 在此情況下,請安裝 Blob 端點憑證。 如需詳細資訊,請參閱管理憑證中 如何建立和上傳憑證 。
建立和上傳 VHD
請確定您有虛擬磁片映射,您可以在稍後的步驟中用來上傳。 請遵循建立 VM 映射 中的 步驟。
複製任何磁片映射,以用於您在先前步驟中建立的本機儲存體帳戶中的分頁 Blob。 您可以使用 儲存體總管 或 AzCopy 之類的 工具,將 VHD 上傳至您在先前步驟中建立的儲存體帳戶 。
使用儲存體總管上傳
開啟儲存體總管。 移至 [ 編輯 ],並確定應用程式已設定為 [目標 Azure Stack API ]。
以 PEM 格式安裝用戶端憑證。 移至 [ 編輯 > SSL 憑證 > 匯入憑證 ]。 指向用戶端憑證。
如果您使用裝置產生的憑證,請下載 Blob 儲存體端點
.cer
憑證.pem
並將其轉換為格式。 執行下列命令。PS C:\windows\system32> Certutil -encode 'C:\myasegpu1_Blob storage (1).cer' .\blobstoragecert.pem Input Length = 1380 Output Length = 1954 CertUtil: -encode command completed successfully.
如果您要攜帶自己的憑證,請使用格式的
.pem
簽署鏈結根憑證。
匯入憑證之後,請重新開機儲存體總管,變更才會生效。
在左窗格中,以滑鼠右鍵按一下 儲存體帳戶 ,然後選取 連線以Azure 儲存體 。
選取 [使用儲存體帳戶名稱和金鑰]。 選取 [下一步] 。
在 [名稱] 和 [金鑰 ] 連線中,提供 [顯示名稱]、 [儲存體帳戶名稱 ] Azure 儲存體 [帳戶金鑰 ]。 選取 [其他 儲存體網域],然後提供
<device name>.<DNS domain>
連接字串。 如果您未在 儲存體總管 中安裝憑證,請檢查 [ 使用 HTTP ] 選項。 選取 [下一步] 。檢閱 連線摘要 ,然後選取 [連線 ]。
儲存體帳戶會出現在左窗格中。 選取並展開儲存體帳戶。 選取 [Blob 容器 ],以滑鼠右鍵按一下,然後選取 [ 建立 Blob 容器 ]。 提供 Blob 容器的名稱。
選取您剛才建立的容器,然後在右窗格中選取 [ 上傳 > 上傳檔案 ]。
流覽並指向您想要在 [選取的檔案 ] 中上傳的 VHD。 選取 [Blob 類型 ] 作為 [分頁 Blob ],然後選取 [ 上傳 ]。
將 VHD 載入 Blob 容器之後,請選取 VHD,以滑鼠右鍵按一下,然後選取 [ 屬性 ]。
複製並儲存 您將在後續步驟中使用的 URI 。
為您的 VM 建立映射
若要為您的 VM 建立映射,請編輯 CreateImage.parameters.json
參數檔案,然後部署使用此參數檔案的範本 CreateImage.json
。
編輯參數檔案
CreateImage.parameters.json
檔案會採用下列參數:
"parameters": {
"osType": {
"value": "<Operating system corresponding to the VHD you upload can be Windows or Linux>"
},
"imageName": {
"value": "<Name for the VM image>"
},
"imageUri": {
"value": "<Path to the VHD that you uploaded in the Storage account>"
},
"hyperVGeneration": {
"type": "string",
"value": "<Generation of the VM, V1 or V2>"
},
}
編輯檔案 CreateImage.parameters.json
以包含 Azure Stack Edge Pro 裝置的下列值:
提供對應至您要上傳之 VHD 的 OS 類型和 Hyper V 世代。 OS 類型可以是 Windows 或 Linux,VM 世代可以是 V1 或 V2。
"parameters": { "osType": { "value": "Windows" }, "hyperVGeneration": { "value": "V2" }, }
將映射 URI 變更為您在先前步驟中上傳之影像的 URI:
"imageUri": { "value": "https://myasegpusavm.blob.myasegpu1.wdshcsso.com/windows/WindowsServer2016Datacenter.vhd" },
如果您使用 HTTP 搭配 儲存體總管,請將 URI 變更為 HTTP URI。
提供唯一的映射名稱。 此映射是用來在後續步驟中建立 VM。
以下是本文中使用的範例 json。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "osType": { "value": "Linux" }, "hyperVGeneration": { "value": "V1" }, "imageName": { "value": "myaselinuximg" }, "imageUri": { "value": "https://sa2.blob.myasegpuvm.wdshcsso.com/con1/ubuntu18.04waagent.vhd" } } }
儲存參數檔案。
部署範本
部署範本 CreateImage.json
。 此範本會部署將在後續步驟中用來建立 VM 的映射資源。
注意
如果您收到驗證錯誤,部署範本時,此會話的 Azure 認證可能已過期。 重新執行 login-Az
命令,以再次連線到 Azure Stack Edge Pro 裝置上的 Azure Resource Manager。
執行以下命令:
$templateFile = "Path to CreateImage.json" $templateParameterFile = "Path to CreateImage.parameters.json" $RGName = "<Name of your resource group>" New-AzResourceGroupDeployment ` -ResourceGroupName $RGName ` -TemplateFile $templateFile ` -TemplateParameterFile $templateParameterFile ` -Name "<Name for your deployment>"
此命令會部署映射資源。
若要查詢資源,請執行下列命令:
Get-AzImage -ResourceGroupName <Resource Group Name> -name <Image Name>
以下是範例輸出:
PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\CreateImage\CreateImage.json" PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\CreateImage\CreateImage.parameters.json" PS C:\WINDOWS\system32> $RGName = "myaserg1" PS C:\WINDOWS\system32> New-AzResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment1" DeploymentName : deployment1 ResourceGroupName : myaserg1 ProvisioningState : Succeeded Timestamp : 4/18/2022 9:24:26 PM Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== osType String Linux imageName String myaselinuximg1 imageUri String https://myasepro2stor.blob.dm1176047910p.wdshcsso.com/myasepro2cont1/ubuntu13.vhd Outputs : DeploymentDebugLogLevel : PS C:\WINDOWS\system32>
建立 VM
編輯參數檔案以建立 VM
若要建立 VM,請使用 CreateVM.parameters.json
參數檔案。 它會採用下列參數。
"vmName": {
"value": "<Name for your VM>"
},
"adminUsername": {
"value": "<Username to log into the VM>"
},
"Password": {
"value": "<Password to log into the VM>"
},
"imageName": {
"value": "<Name for your image>"
},
"vmSize": {
"value": "<A supported size for your VM>"
},
"vnetName": {
"value": "<Name for the virtual network, use ASEVNET>"
},
"subnetName": {
"value": "<Name for the subnet, use ASEVNETsubNet>"
},
"vnetRG": {
"value": "<Resource group for Vnet, use ASERG>"
},
"nicName": {
"value": "<Name for the network interface>"
},
"privateIPAddress": {
"value": "<Private IP address, enter a static IP in the subnet created earlier or leave empty to assign DHCP>"
},
"IPConfigName": {
"value": "<Name for the ipconfig associated with the network interface>"
}
在 中 CreateVM.parameters.json
為 Azure Stack Edge Pro 裝置指派適當的參數。
提供唯一的名稱、網路介面名稱和 ipconfig 名稱。
輸入使用者名稱、密碼和支援的 VM 大小。
當您啟用用於計算的網路介面時,會自動在該網路介面上建立虛擬交換器和虛擬網路。 您可以查詢現有的虛擬網路,以取得 Vnet 名稱、子網名稱和 Vnet 資源組名。
執行以下命令:
Get-AzVirtualNetwork
以下是範例輸出:
PS C:\WINDOWS\system32> Get-AzVirtualNetwork Name : ASEVNET ResourceGroupName : ASERG Location : dbelocal Id : /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/ASERG/providers/Microsoft .Network/virtualNetworks/ASEVNET Etag : W/"990b306d-18b6-41ea-a456-b275efe21105" ResourceGuid : f8309d81-19e9-42fc-b4ed-d573f00e61ed ProvisioningState : Succeeded Tags : AddressSpace : { "AddressPrefixes": [ "10.57.48.0/21" ] } DhcpOptions : null Subnets : [ { "Name": "ASEVNETsubNet", "Etag": "W/\"990b306d-18b6-41ea-a456-b275efe21105\"", "Id": "/subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/ASERG/provider s/Microsoft.Network/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet", "AddressPrefix": "10.57.48.0/21", "IpConfigurations": [], "ResourceNavigationLinks": [], "ServiceEndpoints": [], "ProvisioningState": "Succeeded" } ] VirtualNetworkPeerings : [] EnableDDoSProtection : false EnableVmProtection : false PS C:\WINDOWS\system32>
使用 ASEVNET 作為 Vnet 名稱、ASEVNETsubNet 作為子網名稱,以及針對 Vnet 資源組名使用 ASERG。
現在您需要靜態 IP 位址,才能指派給上面所定義子網網路中的 VM。 將 PrivateIPAddress 取代 為參數檔案中的這個位址。 若要讓 VM 從本機 DCHP 伺服器取得 IP 位址,請將此值保留
privateIPAddress
空白。"privateIPAddress": { "value": "5.5.153.200" },
儲存參數檔案。
以下是本文中使用的範例 json。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "vmName": { "value": "vm1" }, "adminUsername": { "value": "Administrator" }, "Password": { "value": "Password1" }, "imageName": { "value": "myaselinuximg1" }, "vmSize": { "value": "Standard_NC4as_T4_v3" }, "vnetName": { "value": "vswitch1" }, "subnetName": { "value": "vswitch1subNet" }, "vnetRG": { "value": "myaserg1" }, "nicName": { "value": "nic1" }, "privateIPAddress": { "value": "" }, "IPConfigName": { "value": "ipconfig1" } } }
部署範本以建立 VM
部署 VM 建立範本 CreateVM.json
。 此範本會從現有的 VNet 建立網路介面,並從已部署的映射建立 VM。
執行以下命令:
Command: $templateFile = "<Path to CreateVM.json>" $templateParameterFile = "<Path to CreateVM.parameters.json>" $RGName = "<Resource group name>" New-AzResourceGroupDeployment ` -ResourceGroupName $RGName ` -TemplateFile $templateFile ` -TemplateParameterFile $templateParameterFile ` -Name "<DeploymentName>"
建立 VM 需要 15-20 分鐘的時間。 以下是成功建立 VM 的範例輸出:
PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\CreateVM\CreateVM.json" PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\CreateVM\CreateVM.parameters.json" PS C:\WINDOWS\system32> $RGName = "myaserg1" PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "Deployment2" DeploymentName : Deployment2 ResourceGroupName : myaserg1 ProvisioningState : Succeeded Timestamp : 04/18/2022 1:51:28 PM Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vmName String vm1 adminUsername String Administrator password String Password1 imageName String myaselinuximg vmSize String Standard_NC4as_T4_v3 vnetName String vswitch1 vnetRG String myaserg1 subnetName String vswitch1subNet nicName String nic1 ipConfigName String ipconfig1 privateIPAddress String Outputs : DeploymentDebugLogLevel : PS C:\WINDOWS\system32
您也可以使用
–AsJob
參數以非同步方式執行New-AzResourceGroupDeployment
命令。 以下是 Cmdlet 在背景中執行時的範例輸出。 然後,您可以查詢使用Get-Job
Cmdlet 所建立之作業的狀態。PS C:\WINDOWS\system32> New-AzResourceGroupDeployment ` >> -ResourceGroupName $RGName ` >> -TemplateFile $templateFile ` >> -TemplateParameterFile $templateParameterFile ` >> -Name "Deployment4" ` >> -AsJob Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 4 Long Running... AzureLongRun... Running True localhost New-AzureRmResourceGro... PS C:\WINDOWS\system32> Get-Job -Id 4 Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- -------
檢查 VM 是否已成功布建。 執行以下命令:
Get-AzVm
連線至 VM
視您建立 Windows 或 Linux VM 而定,連線的步驟可能不同。
連線至 Windows VM
請遵循下列步驟來連線到 Windows VM。
連線透過您在建立 VM 期間傳遞的 IP,使用遠端桌面通訊協定 (RDP) 連線到 Windows VM。
在您的用戶端上,開啟 RDP。
移至 [ 開始] ,然後輸入 mstsc 。
在 [ 遠端桌面連線ion ] 窗格中,輸入 VM 的 IP 位址,以及您在 VM 範本參數檔案中使用的存取認證。 然後選取 [連線]。
注意
您可能需要核准連線到不受信任的電腦。
您現在已登入在設備上執行的 VM。
連線至 Linux VM
請遵循下列步驟來連線到 Linux VM。
使用您在建立 VM 期間傳遞的私人 IP,將連線至 VM。
開啟 SSH 會話以與 IP 位址連線。
ssh -l <username> <ip address>
出現提示時,請提供您在建立 VM 時所使用的密碼。
如果您需要提供 SSH 金鑰,請使用此命令。
ssh -i c:/users/Administrator/.ssh/id_rsa Administrator@5.5.41.236
以下是連線到 VM 時的範例輸出:
PS C:\WINDOWS\system32> ssh -l myazuser "10.126.76.60" The authenticity of host '10.126.76.60 (10.126.76.60)' can't be established. ECDSA key fingerprint is SHA256:V649Zbo58zAYMKreeP7M6w7Na0Yf9QPg4SM7JZVV0E4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.126.76.60' (ECDSA) to the list of known hosts. myazuser@10.126.76.60's password: Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.18.0-1013-azure x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information disabled due to load higher than 1.0 Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 284 packages can be updated. 192 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. myazuser@myazvmfriendlyname:~$ client_loop: send disconnect: Connection reset PS C:\WINDOWS\system32>