透過 Azure PowerShell 在 Azure Stack Edge 裝置上部署 VM

適用于: Yes for Pro GPU SKU Azure Stack Edge Pro - GPU Yes for Pro 2 SKU Azure Stack Edge Pro 2 Yes for Pro R SKU Azure Stack Edge Pro R Yes for Mini R SKU Azure Stack Edge Mini R

本文說明如何使用 Azure PowerShell 在 Azure Stack Edge 裝置上建立和管理虛擬機器(VM)。

VM 部署工作流程

VM 部署的高階部署工作流程如下所示:

  1. 連線裝置的本機 Azure Resource Manager。
  2. 識別裝置上的內建訂用帳戶。
  3. 攜帶您的 VM 映射。
  4. 在內建訂用帳戶中建立資源群組。 資源群組包含 VM 和所有相關資源。
  5. 在裝置上建立本機儲存體帳戶,以儲存用來建立 VM 映射的 VHD。
  6. 將 Windows/Linux 來源映射上傳至儲存體帳戶,以建立受控磁片。
  7. 使用受控磁片來建立 VM 映射。
  8. 在裝置埠上啟用計算,以建立虛擬交換器。
  9. 這會使用連結至您啟用計算之埠的虛擬交換器來建立虛擬網路。
  10. 使用先前建立的 VM 映射、虛擬網路和虛擬網路介面建立 VM,以在虛擬網路內通訊,並將公用 IP 位址指派給遠端存取 VM。 選擇性地包含資料磁片,為您的 VM 提供更多儲存體。

必要條件

您必須先設定用戶端透過 Azure PowerShell 透過 Azure Resource Manager 連線到裝置,才能在 Azure Stack Edge 裝置上部署 VM。 如需詳細指示,請參閱 在 Azure Stack Edge 裝置 上連線至 Azure Resource Manager。

請確定您可以使用下列步驟,從用戶端存取裝置。 您已在連線到 Azure Resource Manager 時完成此設定,現在您已確認設定是否成功。

  1. 執行下列命令來確認 Azure Resource Manager 通訊是否正常運作:

    Add-AzEnvironment -Name <Environment Name> -ARMEndpoint "https://management.<appliance name>.<DNSDomain>"
    
  2. 若要呼叫本機裝置 API 進行驗證,請輸入:

    login-AzAccount -EnvironmentName <Environment Name> -TenantId c0257de7-538f-415c-993a-1b87a031879d
    

    若要透過 Azure Resource Manager 連線,請提供使用者名稱 EdgeArmUser 和密碼。

  3. 如果您已設定 Kubernetes 的計算,您可以略過此步驟。 否則,請執行下列動作,確定您已啟用用於計算的網路介面:

    a. 在您的本機使用者介面上,移至 [計算 設定]。
    b. 選取您想要用來建立虛擬交換器的網路介面。 您建立的 VM 將會連結至連結至此埠和相關聯網絡的虛擬交換器。 請務必選擇符合您要用於 VM 之 IP 位址的網路。

    Screenshot of the Compute configuration network settings pane.

    c. 在 [啟用網路介面上的計算 ] 下,選取 [ ]。 Azure Stack Edge 會建立和管理對應至該網路介面的虛擬交換器。 目前請勿輸入 Kubernetes 的特定 IP。 啟用計算可能需要幾分鐘的時間。

    注意

    如果您要建立 GPU VM,請選取連線到網際網路的網路介面。 這麼做可讓您在裝置上安裝 GPU 擴充功能。

查詢裝置上的內建訂用帳戶

針對 Azure Resource Manager,僅支援使用者可見的單一固定訂用帳戶。 此訂用帳戶是每個裝置的唯一訂用帳戶,而且無法變更訂用帳戶名稱和訂用帳戶識別碼。

訂用帳戶包含建立 VM 所需的所有資源。

重要

當您從Azure 入口網站啟用 VM,並在裝置本機上建立訂用帳戶。

訂用帳戶是用來部署 VM。

  1. 若要列出訂用帳戶,請執行下列命令:

    Get-AzSubscription
    

    以下是一些範例輸出:

    PS C:\WINDOWS\system32> Get-AzSubscription
    
    Name                          Id                                   TenantId
    ----                          --                                   --------
    Default Provider Subscription ...                                  ...
    
    
    PS C:\WINDOWS\system32>
    
  2. 取得在裝置上執行的已註冊資源提供者清單。 此清單通常包含計算、網路和儲存體。

    Get-AzResourceProvider
    

    注意

    資源提供者已預先註冊,且無法修改或變更。

    以下是一些範例輸出:

    PS C:\WINDOWS\system32>  Get-AzResourceProvider
    
    ProviderNamespace : Microsoft.AzureBridge
    RegistrationState : Registered
    ResourceTypes     : {locations, operations, locations/ingestionJobs}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Compute
    RegistrationState : Registered
    ResourceTypes     : {virtualMachines, virtualMachines/extensions, locations, operations...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Network
    RegistrationState : Registered
    ResourceTypes     : {operations, locations, locations/operations, locations/usages...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Resources
    RegistrationState : Registered
    ResourceTypes     : {tenants, locations, providers, checkresourcename...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Storage
    RegistrationState : Registered
    ResourceTypes     : {storageaccounts, storageAccounts/blobServices, storageAccounts/tableServices,
                        storageAccounts/queueServices...}
    Locations         : {DBELocal}
    
    PS C:\WINDOWS\system32>
    

建立資源群組

從建立新的 Azure 資源群組開始,並以此作為所有 VM 相關資源的邏輯容器,例如儲存體帳戶、磁片、網路介面和受控磁片。

重要

所有資源都會建立在與裝置相同的位置,並將位置設定為 DBELocal

  1. 設定一些參數。

    $ResourceGroupName = "<Resource group name>" 
    
  2. 針對您為 VM 建立的資源建立資源群組。

    New-AzResourceGroup -Name $ResourceGroupName -Location DBELocal
    

    以下是一些範例輸出:

    PS C:\WINDOWS\system32> New-AzResourceGroup -Name myaseazrg -Location DBELocal
    
    ResourceGroupName : myaseazrg
    Location          : dbelocal
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/.../resourceGroups/myaseazrg
    
    PS C:\WINDOWS\system32>
    

建立本機儲存體帳戶

使用現有的資源群組建立新的本機儲存體帳戶。 使用此本機儲存體帳戶在建立 VM 時上傳虛擬磁片映射。

建立本機儲存體帳戶之前,您必須先設定用戶端,透過 Azure PowerShell 透過 Azure Resource Manager 連線到裝置。 如需詳細指示,請參閱 在 Azure Stack Edge 裝置 上連線至 Azure Resource Manager。

  1. 設定一些參數。

    $StorageAccountName = "<Storage account name>"    
    
  2. 在您的裝置上建立新的本機儲存體帳戶。

    New-AzStorageAccount -Name $StorageAccountName -ResourceGroupName $ResourceGroupName -Location DBELocal -SkuName Standard_LRS
    

    注意

    藉由使用 Azure Resource Manager,您只能建立本機儲存體帳戶,例如本地備援儲存體(標準或進階)。 若要建立階層式儲存體帳戶,請參閱 教學課程:透過具有 GPU 的 Azure Stack Edge Pro 透過儲存體帳戶傳輸資料。

    以下為範例輸出:

    PS C:\WINDOWS\system32> New-AzStorageAccount -Name myaseazsa -ResourceGroupName myaseazrg -Location DBELocal -SkuName Standard_LRS
    
    StorageAccountName ResourceGroupName PrimaryLocation SkuName      Kind    AccessTier CreationTime
    ------------------ ----------------- --------------- -------      ----    ---------- ------------
    myaseazsa          myaseazrg         DBELocal        Standard_LRS Storage            6/10/2021 11:45...
    
    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: myaseazrg
Name: myaseazsa
    
KeyName    Value                                                                                       Permissions
-------    -----                                                                                       ------
key1       gv3OF57tuPDyzBNc1M7fhil2UAiiwnhTT6zgiwE3TlF/CD217Cvw2YCPcrKF47joNKRvzp44leUe5HtVkGx8RQ==    Full
key2       kmEynIs3xnpmSxWbU41h5a7DZD7v4gGV3yXa2NbPbmhrPt10+QmE5PkOxxypeSqbqzd9si+ArNvbsqIRuLH2Lw==    Full
    
PS C:\WINDOWS\system32>

將 Blob URI 新增至主機檔案

您已在用戶端的主機檔案中新增 Blob URI,以用於在修改主機檔案中 連線到Azure Blob 儲存體,以解析 Azure Stack Edge 裝置 上連線至 Azure Resource Manager 的端點名稱。 此專案用來新增 Blob URI:

<Device IP address> <storage name>.blob.<appliance name>.<dnsdomain>

安裝憑證

如果您使用 HTTPS,您必須在裝置上安裝適當的憑證。 在這裡,您會安裝 Blob 端點憑證。 如需詳細資訊,請參閱 搭配您的 Azure Stack Edge Pro 搭配 GPU 裝置 使用憑證。

上傳 VHD

將任何磁片映射複製到您稍早建立的本機儲存體帳戶中的分頁 Blob 中。 您可以使用 AzCopy 之類的 工具,將虛擬硬碟 (VHD) 上傳至儲存體帳戶。

搭配 AzCopy 10 使用下列命令:

  1. 設定一些參數,包括適用于 AzCopy 的適當 API 版本。 在此範例中,使用了 AzCopy 10。

    $Env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2019-07-07"    
    $ContainerName = <Container name>
    $ResourceGroupName = <Resource group name>
    $StorageAccountName = <Storage account name>
    $VHDPath = "Full VHD Path"
    $VHDFile = <VHD file name>
    
  2. 將 VHD 從來源 (在此案例中為本機系統) 複製到您在先前步驟中于裝置上建立的儲存體帳戶。

    $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
    $blobendpoint = (Get-AzEnvironment -Name Environment Name).StorageEndpointSuffix
    $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -Endpoint $blobendpoint
    <Create the container if it does not exist>
    $containerName = "con1"
    $container = New-AzStorageContainer -Name $containerName -Context $StorageAccountContext -Permission Container
    $StorageAccountSAS = New-AzStorageAccountSASToken -Service Blob -ResourceType Container,Service,Object -Permission "acdlrw" -Context $StorageAccountContext -Protocol HttpsOnly
    $endPoint = (Get-AzStorageAccount -name $StorageAccountName -ResourceGroupName $ResourceGroupName).PrimaryEndpoints.Blob
    <Path to azcopy.exe> cp "$VHDPath\$VHDFile" "$endPoint$ContainerName$StorageAccountSAS"    
    

    以下為範例輸出:

    PS C:\windows\system32> $ContainerName = "testcontainer1"
    PS C:\windows\system32> $ResourceGroupName = "myaseazrg"
    PS C:\windows\system32> $StorageAccountName = "myaseazsa"
    PS C:\windows\system32> $VHDPath = "C:\Users\alkohli\Downloads\Ubuntu1604"           
    PS C:\windows\system32> $VHDFile = "ubuntu13.vhd"
    
    PS C:\windows\system32> $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
    PS C:\windows\system32> $endPoint = (Get-AzStorageAccount -name $StorageAccountName -ResourceGroupName $ResourceGroupName).PrimaryEndpoints.Blob
    PS C:\windows\system32> $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -Endpoint $endpoint
    PS C:\windows\system32> $StorageAccountSAS = New-AzStorageAccountSASToken -Service Blob -ResourceType Container,Service,Object -Permission "acdlrw" -Context $StorageAccountContext -Protocol HttpsOnly
    
    PS C:\windows\system32> C:\azcopy\azcopy_windows_amd64_10.10.0\azcopy.exe cp "$VHDPath\$VHDFile" "$endPoint$ContainerName$StorageAccountSAS"
    INFO: Scanning...
    INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support
    
    Job 72a5e3dd-9210-3e43-6691-6bebd4875760 has started
    Log file is located at: C:\Users\alkohli\.azcopy\72a5e3dd-9210-3e43-6691-6bebd4875760.log
    
    INFO: azcopy.exe: A newer version 10.11.0 is available to download
    

從 VHD 建立受控磁片

您現在會從上傳的 VHD 建立受控磁片。

  1. 設定一些參數。

    $DiskName = "<Managed disk name>"
    $HyperVGeneration = "<Generation of the image: V1 or V2>"
    
  2. 從上傳的 VHD 建立受控磁片。 若要取得 VHD 的來源 URL,請移至儲存體帳戶中的容器,其中包含 儲存體總管 中的 VHD。 選取 VHD,然後按一下滑鼠右鍵,然後選取 [ 屬性 ]。 在 [ Blob 屬性] 對話方塊中,選取 URI

    $StorageAccountId = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName).Id    
    $DiskConfig = New-AzDiskConfig -Location DBELocal -HyperVGeneration $HyperVGeneration -StorageAccountId $StorageAccountId -CreateOption Import -SourceUri "Source URL for your VHD"
    New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $DiskConfig
    

    以下是輸出範例:

    PS C:\WINDOWS\system32> $DiskName = "myazmd"
    PS C:\WINDOWS\system32  $HyperVGeneration = "V1"
    PS C:\WINDOWS\system32> $StorageAccountId = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName).Id
    PS C:\WINDOWS\system32> $DiskConfig = New-AzDiskConfig -Location DBELocal -HyperVGeneration $HyperVGeneration -StorageAccountId $StorageAccountId -CreateOption Import -SourceUri "https://myaseazsa.blob.myasegpu.wdshcsso.com/testcontainer1/ubuntu13.vhd"
    PS C:\WINDOWS\system32> New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $DiskConfig
    
    ResourceGroupName            : myaseazrg
    ManagedBy                    :
    Sku                          : Microsoft.Azure.Management.Compute.Models.DiskSku
    Zones                        :
    TimeCreated                  : 6/24/2021 12:19:56 PM
    OsType                       :
    HyperVGeneration             : V1
    CreationData                 : Microsoft.Azure.Management.Compute.Models.CreationDat
                                   a
    DiskSizeGB                   : 30
    DiskSizeBytes                : 32212254720
    UniqueId                     : 53743801-cbf2-4d2f-acb4-971d037a9395
    EncryptionSettingsCollection :
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Unattached
    Encryption                   : Microsoft.Azure.Management.Compute.Models.Encryption
    Id                           : /subscriptions/.../r
                                   esourceGroups/myaseazrg/providers/Microsoft.Compute/d
                                   isks/myazmd
    Name                         : myazmd
    Type                         : Microsoft.Compute/disks
    Location                     : DBELocal
    Tags                         : {}
    
    PS C:\WINDOWS\system32>
    

從受控磁片建立 VM 映射

您現在會從受控磁片建立 VM 映射。

  1. 設定一些參數。

    $DiskSize = "<Size greater than or equal to size of source managed disk>"
    $OsType = "<linux or windows>" 
    $ImageName = "<Image name>"
    
  2. 建立 VM 映射。 支援的 OS 類型為 Linux 和 Windows。

    $imageConfig = New-AzImageConfig -Location DBELocal -HyperVGeneration $hyperVGeneration 
    $ManagedDiskId = (Get-AzDisk -Name $DiskName -ResourceGroupName $ResourceGroupName).Id
    Set-AzImageOsDisk -Image $imageConfig -OsType $OsType -OsState 'Generalized' -DiskSizeGB $DiskSize -ManagedDiskId $ManagedDiskId 
    New-AzImage -Image $imageConfig -ImageName $ImageName -ResourceGroupName $ResourceGroupName  
    

    以下是範例輸出。

    PS C:\WINDOWS\system32> $OsType = "linux"
    PS C:\WINDOWS\system32> $ImageName = "myaseazlinuxvmimage"
    PS C:\WINDOWS\system32> $DiskSize = 35
    PS C:\WINDOWS\system32> $imageConfig = New-AzImageConfig -Location DBELocal
    PS C:\WINDOWS\system32> $ManagedDiskId = (Get-AzDisk -Name $DiskName -ResourceGroupName $ResourceGroupName).Id
    PS C:\WINDOWS\system32> Set-AzImageOsDisk -Image $imageConfig -OsType $OsType -OsState 'Generalized' -DiskSizeGB $DiskSize -ManagedDiskId $ManagedDiskId
    
    ResourceGroupName    :
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    :
    HyperVGeneration     : V1
    Id                   :
    Name                 :
    Type                 :
    Location             : DBELocal
    Tags                 :
    
    PS C:\WINDOWS\system32> New-AzImage -Image $imageConfig -ImageName $ImageName -ResourceGroupName $ResourceGroupName
    
    ResourceGroupName    : myaseazrg
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    : Succeeded
    HyperVGeneration     : V1
    Id                   : /subscriptions/.../resourceG
                           roups/myaseazrg/providers/Microsoft.Compute/images/myaseazlin
                           uxvmimage
    Name                 : myaseazlinuxvmimage
    Type                 : Microsoft.Compute/images
    Location             : dbelocal
    Tags                 : {}
    
    PS C:\WINDOWS\system32> 
    

使用先前建立的資源建立 VM

建立和部署 VM 之前,您必須先建立一個虛擬網路,並將虛擬網路介面與其產生關聯。

重要

適用的規則如下:

  • 您只能建立一個虛擬網路,甚至是跨資源群組。 虛擬網路必須與邏輯網路完全相同的位址空間。
  • 虛擬網路只能有一個子網。 子網的位址空間必須與虛擬網路完全相同。
  • 當您建立虛擬網路介面卡時,只能使用靜態配置方法。 使用者必須提供私人 IP 位址。

查詢自動建立的虛擬網路

當您從裝置的本機 UI 啟用計算時,系統會自動在資源群組底下建立名為 ASEVNETASERG 虛擬網路。

使用下列命令來查詢現有的虛擬網路:

$ArmVn = Get-AzVirtualNetwork -Name ASEVNET -ResourceGroupName ASERG 

建立虛擬網路介面卡

您可以使用虛擬網路子網識別碼來建立虛擬網路介面卡。

  1. 設定一些參數。

    $IpConfigName = "<IP config name>"
    $NicName = "<Network interface name>"
    
  2. 建立虛擬網路介面。

    $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id 
    $Nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName -Location DBELocal -IpConfiguration $IpConfig    
    

    根據預設,IP 會從啟用計算的網路動態指派給您的網路介面。 -PrivateIpAddress parameter如果您要將靜態 IP 配置給網路介面,請使用 。

    以下為範例輸出:

    PS C:\WINDOWS\system32> $IpConfigName = "myazipconfig1"
    PS C:\WINDOWS\system32> $NicName = "myaznic1"
    PS C:\WINDOWS\system32> $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id 
    PS C:\WINDOWS\system32> $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id
    PS C:\WINDOWS\system32> $Nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName -Location DBELocal -IpConfiguration $IpConfig
    PS C:\WINDOWS\system32> $Nic
    
    Name                        : myaznic1
    ResourceGroupName           : myaseazrg
    Location                    : dbelocal
    Id                          : /subscriptions/.../re
                                  sourceGroups/myaseazrg/providers/Microsoft.Network/net
                                  workInterfaces/myaznic1
    Etag                        : W/"0b20057b-2102-4f34-958b-656327c0fb1d"
    ResourceGuid                : e7d4131f-6f01-4492-9d4c-a8ff1af7244f
    ProvisioningState           : Succeeded
    Tags                        :
    VirtualMachine              : null
    IpConfigurations            : [
                                    {
                                      "Name": "myazipconfig1",
                                      "Etag":
                                  "W/\"0b20057b-2102-4f34-958b-656327c0fb1d\"",
                                      "Id": "/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.
                                  Network/networkInterfaces/myaznic1/ipConfigurations/my
                                  azipconfig1",
                                      "PrivateIpAddress": "10.126.76.60",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Delegations": [],
                                        "Id": "/subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Ne
                                  twork/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ServiceAssociationLinks": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettings                 : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "auwlfcx0dhxurjgisct43fc
                                  ywb.a--x.internal.cloudapp.net"
                                  }
    EnableIPForwarding          : False
    EnableAcceleratedNetworking : False
    NetworkSecurityGroup        : null
    Primary                     :
    MacAddress                  : 001DD84A58D1
    
    PS C:\WINDOWS\system32>
    

您可以選擇性地為 VM 建立虛擬網路介面卡,但您可以傳遞公用 IP。 在此實例中,公用 IP 會傳回私人 IP。

New-AzPublicIPAddress -Name <Public IP> -ResourceGroupName <ResourceGroupName> -AllocationMethod Static -Location DBELocal
$publicIP = (Get-AzPublicIPAddress -Name <Public IP> -ResourceGroupName <Resource group name>).Id
$ipConfig = New-AzNetworkInterfaceIpConfig -Name <ConfigName> -PublicIpAddressId $publicIP -SubnetId $subNetId

建立 VM

您現在可以使用 VM 映射來建立 VM,並將其連結至您稍早建立的虛擬網路。

  1. 將使用者名稱和密碼設定為登入您想要建立的 VM。

    $pass = ConvertTo-SecureString "<Password>" -AsPlainText -Force;
    $cred = New-Object System.Management.Automation.PSCredential("<Enter username>", $pass)
    

    建立並啟動 VM 之後,您將使用上述使用者名稱和密碼來登入 VM。

  2. 設定參數。

    $VmName = "<VM name>"
    $ComputerName = "<VM display name>"
    $OsDiskName = "<OS disk name>"
    
  3. 建立 VM。

    $VirtualMachine =  New-AzVMConfig -VmName $VmName -VMSize "Standard_D1_v2"
    
    $VirtualMachine =  Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $cred
    
    $VirtualMachine =  Set-AzVmOsDisk -VM $VirtualMachine -Name $OsDiskName -Caching "ReadWrite" -CreateOption "FromImage" -Linux -StorageAccountType Standard_LRS
    
    $nicID = (Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName).Id
    
    $VirtualMachine =  Add-AzVMNetworkInterface -Vm $VirtualMachine -Id $nicID
    
    $image = ( Get-AzImage -ResourceGroupName $ResourceGroupName -ImageName $ImageName).Id
    
    $VirtualMachine =  Set-AzVMSourceImage -VM $VirtualMachine -Id $image
    
    New-AzVM -ResourceGroupName $ResourceGroupName -Location DBELocal -VM $VirtualMachine -Verbose
    

    以下是範例輸出。

    PS C:\WINDOWS\system32> $pass = ConvertTo-SecureString "Password1" -AsPlainText -Force;
    PS C:\WINDOWS\system32> $cred = New-Object System.Management.Automation.PSCredential("myazuser", $pass)
    PS C:\WINDOWS\system32> $VmName = "myazvm"
    >> $ComputerName = "myazvmfriendlyname"
    >> $OsDiskName = "myazosdisk1"
    PS C:\WINDOWS\system32> $VirtualMachine =  New-AzVMConfig -VmName $VmName -VMSize "Standard_D1_v2"
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $cred
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVmOsDisk -VM $VirtualMachine -Name $OsDiskName -Caching "ReadWrite" -CreateOption "FromImage" -Linux -StorageAccountType Standard_LRS
    PS C:\WINDOWS\system32> $nicID = (Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName).Id
    PS C:\WINDOWS\system32> $nicID/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.Network/networkInterfaces/myaznic1
    PS C:\WINDOWS\system32> $VirtualMachine =  Add-AzVMNetworkInterface -VM $VirtualMachine -Id $nicID
    PS C:\WINDOWS\system32> $image = ( Get-AzImage -ResourceGroupName $ResourceGroupName -ImageName $ImageName).Id
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVMSourceImage -VM $VirtualMachine -Id $image
    PS C:\WINDOWS\system32> New-AzVM -ResourceGroupName $ResourceGroupName -Location DBELocal -VM $VirtualMachine -Verbose
    WARNING: Since the VM is created using premium storage or managed disk, existing
    standard storage account, myaseazsa, is used for boot diagnostics.
    VERBOSE: Performing the operation "New" on target "myazvm".
    
    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    
  4. 若要找出指派給您所建立 VM 的 IP,請查詢您所建立的虛擬網路介面。 找出 並 PrivateIPAddress 複製 VM 的 IP。 以下是範例輸出。

    PS C:\WINDOWS\system32> $Nic
    
    Name                        : myaznic1
    ResourceGroupName           : myaseazrg
    Location                    : dbelocal
    Id                          : /subscriptions/.../re
                                  sourceGroups/myaseazrg/providers/Microsoft.Network/net
                                  workInterfaces/myaznic1
    Etag                        : W/"0b20057b-2102-4f34-958b-656327c0fb1d"
    ResourceGuid                : e7d4131f-6f01-4492-9d4c-a8ff1af7244f
    ProvisioningState           : Succeeded
    Tags                        :
    VirtualMachine              : null
    IpConfigurations            : [
                                    {
                                      "Name": "myazipconfig1",
                                      "Etag":
                                  "W/\"0b20057b-2102-4f34-958b-656327c0fb1d\"",
                                      "Id": "/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.
                                  Network/networkInterfaces/myaznic1/ipConfigurations/my
                                  azipconfig1",
                                      "PrivateIpAddress": "10.126.76.60",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Delegations": [],
                                        "Id": "/subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Ne
                                  twork/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ServiceAssociationLinks": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettings                 : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "auwlfcx0dhxurjgisct43fc
                                  ywb.a--x.internal.cloudapp.net"
                                  }
    EnableIPForwarding          : False
    EnableAcceleratedNetworking : False
    NetworkSecurityGroup        : null
    Primary                     :
    MacAddress                  : 001DD84A58D1
    
    PS C:\WINDOWS\system32>
    

連線至 VM

視您建立 Windows VM 或 Linux VM 而定,連線指示可能不同。

連線至 Linux VM (英文)

若要連線到 Linux VM,請執行下列動作:

使用您在建立 VM 期間傳遞的私人 IP,將連線至 VM。

  1. 開啟 SSH 會話以與 IP 位址連線。

    ssh -l <username> <ip address>
    
  2. 出現提示時,請提供您在建立 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>
    

如果您在建立 VM 期間使用了公用 IP 位址,您可以使用該 IP 來連線到 VM。 若要取得公用 IP,請執行下列命令:

$publicIp = Get-AzPublicIpAddress -Name $PublicIp -ResourceGroupName $ResourceGroupName

在此實例中,公用 IP 與您在建立虛擬網路介面期間傳遞的私人 IP 相同。

連線至 Windows VM

若要連線到 Windows VM,請執行下列動作:

連線透過您在建立 VM 期間傳遞的 IP,使用遠端桌面通訊協定 (RDP) 連線到 Windows VM。

  1. 在您的用戶端上,開啟 RDP。

  2. 移至 [ 開始] ,然後輸入 mstsc

  3. 在 [ 遠端桌面連線ion ] 窗格中,輸入 VM 的 IP 位址,以及您在 VM 範本參數檔案中使用的存取認證。 然後選取 [連線]。

    Screenshot of the Remote Desktop Connection pane for connecting via RDP to your Windows VM.

    注意

    您可能需要核准連線到不受信任的電腦。

您現在已登入在設備上執行的 VM。

管理 VM

下列各節說明您可以在 Azure Stack Edge Pro 裝置上建立的一些常見作業。

列出在裝置上執行的 VM

若要傳回在 Azure Stack Edge 裝置上執行的所有 VM 清單,請執行此命令:

Get-AzVM -ResourceGroupName <String> -Name <String>

如需此 Cmdlet 的詳細資訊,請參閱 Get-AzVM

開啟 VM

若要開啟在裝置上執行的虛擬機器,請執行下列 Cmdlet:

Start-AzVM [-Name] <String> [-ResourceGroupName] <String>

如需此 Cmdlet 的詳細資訊,請參閱 Start-AzVM

暫停或關閉 VM

若要停止或關閉裝置上執行的虛擬機器,請執行下列 Cmdlet:

Stop-AzVM [-Name] <String> [-StayProvisioned] [-ResourceGroupName] <String>

如需此 Cmdlet 的詳細資訊,請參閱 Stop-AzVM Cmdlet

新增資料磁碟

如果 VM 上的工作負載需求增加,您可能需要新增資料磁片。 若要這樣做,請執行下列命令:

Add-AzRmVMDataDisk -VM $VirtualMachine -Name "disk1" -VhdUri "https://contoso.blob.core.windows.net/vhds/diskstandard03.vhd" -LUN 0 -Caching ReadOnly -DiskSizeinGB 1 -CreateOption Empty 
 
Update-AzVM -ResourceGroupName "<Resource Group Name string>" -VM $VirtualMachine

刪除 VM

若要從您的裝置移除虛擬機器,請執行下列 Cmdlet:

Remove-AzVM [-Name] <String> [-ResourceGroupName] <String>

如需此 Cmdlet 的詳細資訊,請參閱 Remove-AzVm Cmdlet

下一步

Azure Resource Manager Cmdlet