Udostępnij za pośrednictwem


Wdrażanie maszyn wirtualnych na urządzeniu usługi Azure Stack Edge Pro z procesorem GPU za pomocą skryptu programu Azure PowerShell

DOTYCZY: Tak dla jednostki SKU procesora GPU ProAzure Stack Edge Pro — GPUTak dla jednostki SKU Pro 2Azure Stack Edge Pro 2Tak dla jednostki SKU Pro RAzure Stack Edge Pro R Azure Stack Edge Mini RTak dla jednostki SKU Mini R

W tym samouczku opisano sposób tworzenia maszyny wirtualnej na urządzeniu Azure Stack Edge Pro i zarządzania nią przy użyciu skryptu programu Azure PowerShell.

Wymagania wstępne

Przed rozpoczęciem tworzenia maszyny wirtualnej i zarządzania nią na urządzeniu Azure Stack Edge Pro przy użyciu tego skryptu należy upewnić się, że zostały spełnione wymagania wstępne wymienione w następujących krokach:

W przypadku urządzenia Azure Stack Edge Pro za pośrednictwem lokalnego internetowego interfejsu użytkownika

Przed wdrożeniem maszyn wirtualnych na urządzeniu Azure Stack Edge należy skonfigurować klienta tak, aby łączył się z urządzeniem za pośrednictwem usługi Azure Resource Manager za pośrednictwem programu Azure PowerShell. Aby uzyskać szczegółowe instrukcje, zobacz Nawiązywanie połączenia z usługą Azure Resource Manager na urządzeniu Azure Stack Edge.

Upewnij się, że możesz użyć poniższych kroków, aby uzyskać dostęp do urządzenia z poziomu klienta. Ta konfiguracja została już wykonana po nawiązaniu połączenia z usługą Azure Resource Manager, a teraz sprawdzasz, czy konfiguracja zakończyła się pomyślnie.

  1. Sprawdź, czy komunikacja z usługą Azure Resource Manager działa, uruchamiając następujące polecenie:

    Add-AzEnvironment -Name <Environment Name> -ARMEndpoint "https://management.<appliance name>.<DNSDomain>"
    
  2. Aby wywołać interfejsy API urządzeń lokalnych w celu uwierzytelnienia, wprowadź:

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

    Aby nawiązać połączenie za pośrednictwem usługi Azure Resource Manager, podaj nazwę użytkownika EdgeArmUser i hasło.

  3. Jeśli skonfigurowano obliczenia dla platformy Kubernetes, możesz pominąć ten krok. W przeciwnym razie upewnij się, że interfejs sieciowy dla obliczeń został włączony, wykonując następujące czynności:

    a. W lokalnym interfejsie użytkownika przejdź do pozycji Ustawienia obliczeniowe .
    b. Wybierz interfejs sieciowy, którego chcesz użyć do utworzenia przełącznika wirtualnego. Utworzone maszyny wirtualne zostaną dołączone do przełącznika wirtualnego dołączonego do tego portu i skojarzonej sieci. Pamiętaj, aby wybrać sieć zgodną z adresem IP używanym dla maszyny wirtualnej.

    Zrzut ekranu przedstawiający okienko Ustawienia sieci konfiguracji obliczeniowej.

    c. W obszarze Włącz dla obliczeń w interfejsie sieciowym wybierz pozycję Tak. Usługa Azure Stack Edge utworzy przełącznik wirtualny odpowiadający interfejsowi sieciowemu i zarządza nim. Obecnie nie wprowadzaj określonych adresów IP dla platformy Kubernetes. Włączenie obliczeń może potrwać kilka minut.

    Uwaga

    Jeśli tworzysz maszyny wirtualne procesora GPU, wybierz interfejs sieciowy połączony z Internetem. Dzięki temu można zainstalować rozszerzenie procesora GPU na urządzeniu.

Dla klienta systemu Windows

  1. Upewnij się, że zmodyfikowano:

    • Plik hosta na kliencie LUB,
    • Konfiguracja serwera DNS

    Ważne

    Zalecamy zmodyfikowanie konfiguracji serwera DNS na potrzeby rozpoznawania nazw punktów końcowych.

    1. Uruchom Notatnik jako administrator (uprawnienia administratora są wymagane do zapisania pliku), a następnie otwórz plik hosts znajdujący się w C:\Windows\System32\Drivers\etclokalizacji .

      Plik hostów Eksploratora Windows

    2. Dodaj następujące wpisy do pliku hosts , zastępując ciąg odpowiednimi wartościami dla urządzenia:

      <device IP> login.<appliance name>.<DNS domain>
      <device IP> management.<appliance name>.<DNS domain>
      <device IP> <storage name>.blob.<appliance name>.<DNS domain>
      

      W przypadku konta magazynu możesz podać nazwę, której skrypt ma użyć później do utworzenia nowego konta magazynu. Skrypt nie sprawdza, czy konto magazynu istnieje.

    3. Użyj poniższej ilustracji, aby uzyskać informacje referencyjne. Zapisz plik hosts.

      plik hosts w Notatniku

  2. Pobierz skrypt programu PowerShell używany w tej procedurze.

  3. Upewnij się, że klient systemu Windows korzysta z programu PowerShell 5.0 lub nowszego.

  4. Upewnij się, że Azure.Storage Module version 4.5.0 element jest zainstalowany w systemie. Ten moduł można pobrać z Galeria programu PowerShell. Aby zainstalować ten moduł, wpisz:

    Install-Module -Name Azure.Storage -RequiredVersion 4.5.0

    Aby sprawdzić wersję zainstalowanego modułu, wpisz:

    Get-InstalledModule -name Azure.Storage

    Aby odinstalować inne moduły wersji, wpisz:

    Uninstall-Module -Name Azure.Storage

  5. Pobierz narzędzie AzCopy 10 do klienta systemu Windows. Zanotuj tę lokalizację, ponieważ przekażesz ją jako parametr podczas uruchamiania skryptu.

  6. Upewnij się, że klient systemu Windows korzysta z protokołu TLS 1.2 lub nowszego.

Tworzenie maszyny wirtualnej

  1. Uruchom program Powershell jako Administrator.

  2. Przejdź do folderu, w którym pobrano skrypt na klienta.

  3. Przed uruchomieniem skryptu upewnij się, że nadal masz połączenie z lokalnym usługą Azure Resource Manager urządzenia, a połączenie nie wygasło.

    PS C:\windows\system32> login-AzureRMAccount -EnvironmentName aztest1 -TenantId c0257de7-538f-415c-993a-1b87a031879d
    
    Account               SubscriptionName              TenantId                             Environment
    -------               ----------------              --------                             -----------
    EdgeArmUser@localhost Default Provider Subscription c0257de7-538f-415c-993a-1b87a031879d aztest1
    
    PS C:\windows\system32> cd C:\Users\v2
    PS C:\Users\v2>
    
  4. Użyj następującego polecenia, aby uruchomić skrypt:

    .\ArmPowershellClient.ps1 -NicPrivateIp <Private IP> -VHDPath <Path> -VHDFile <VHD File, with extension> -StorageAccountName <Name> -OS <Windows/Linux> -VMSize <Supported VM Size> -VMUserName <Username to be used to sign in to VM> -VMPassword <Password for the VM> --AzCopy10Path <Absolute Path>

    Jeśli chcesz, aby adres IP był dynamicznie przydzielany do maszyny wirtualnej, pomiń -NicPrivateIp parametr .

    Poniżej przedstawiono przykłady uruchamiania skryptu w celu utworzenia maszyny wirtualnej z systemem Windows i maszyny wirtualnej z systemem Linux.

    W przypadku maszyny wirtualnej z systemem Windows:

    Oto przykładowe dane wyjściowe dla maszyny wirtualnej z systemem Windows, która została utworzona.

    PS C:\Users\v2> .\ArmPowershellClient.ps1 -VHDPath \\asefs\Logs\vmvhd -VHDFile WindowsServer2016Datacenter.vhd -StorageAccountName myasesatest -OS Windows -VMSize Standard_D1_v2 -VMUserName Administrator -VMPassword Password1 -AzCopy10Path C:\Users\AzCopy10\AzCopy.exe
    New-AzureRmResourceGroup -Name rg201221071831 -Location DBELocal -Force
    Successfully created Resource Group:rg201221071831
    Successfully created Resource Group:StorAccRG
    Get-AzureRmStorageAccount -Name myasesatest -ResourceGroupName StorAccRG -ErrorAction SilentlyContinue
    New-AzureRmStorageAccount -Name myasesatest  -ResourceGroupName StorAccRG -SkuName Standard_LRS -Location DBELocal
    
    Created New Storage Account
    Get-AzureRmStorageAccount -name myasesatest -resourcegroupname
    StorageAccountName ResourceGroupName Location SkuName     Kind    AccessTier CreationTime          ProvisioningState EnableHttpsTrafficOnly
    ------------------ ----------------- -------- -------     ----    ---------- ------------          ----------------- ----------------------
    myasesatest        StorAccRG         DBELocal StandardLRS Storage            12/22/2020 3:18:38 AM Succeeded         False
    myasesatest        StorAccRG         DBELocal StandardLRS Storage            12/22/2020 3:18:38 AM Succeeded         False
    
     Uploading Vhd to Storage Account
    
    New-AzureStorageContext -StorageAccountName myasesatest -StorageAccountKey hyibjhbVlOROgTlU1nQJIlxrg94eGDhF+RIQ71Z7UVZIxoOPMlHP274NUhZtA1hMxGBcpk2BVApiFasFPEhY/A== -Endpoint https://myasesatest.blob.myasegpuvm.wdshcsso.com/
    
    New-AzureStorageAccountSASToken -Service Blob,File,Queue,Table -ResourceType Container,Service,Object -Permission
    
    SAS Token : ?sv=2017-07-29&sig=TXaGbjum9tFFaJnu3SFmDuslJuqNiNQwvuHfpPJMYN0%3D&spr=https&se=2020-12-22T04%3A18%3A43Z&srt=sco&ss=bfqt&sp=racwdl
    
     C:\Users\AzCopy10\AzCopy.exe make https://myasesatest.blob.myasegpuvm.wdshcsso.com/vmimages?sv=2017-07-29&sig=TXaGbjum9tFFaJnu3SFmDuslJuqNiNQwvuHfpPJMYN0%3D&spr=https&se=2020-12-22T04%3A18%3A43Z&srt=sco&ss=bfqt&sp=racwdl
    
    Successfully created the resource.
    
     AzCopy cp \\asefs\Logs\vmvhd\WindowsServer2016Datacenter.vhd https://myasesatest.blob.myasegpuvm.wdshcsso.com/vmimages?sv=2017-07-29&sig=TXaGbjum9tFFaJnu3SFmDuslJuqNiNQwvuHfpPJMYN0%3D&spr=https&se=2020-12-22T04%3A18%3A43Z&srt=sco&ss=bfqt&sp=racwdl
    
    INFO: Scanning...
    
    Job b6f54665-93c4-2f47-4770-5f3b7b0de2dc has started
    Log file is located at: C:\Users\Administrator\.azcopy\b6f54665-93c4-2f47-4770-5f3b7b0de2dc.log
    
    INFO: AzCopy.exe: A newer version 10.8.0 is available to download
    
    99.9 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total,  (Disk may be limiting speed)
    
    Job b6f54665-93c4-2f47-4770-5f3b7b0de2dc summary
    Elapsed Time (Minutes): 12.7717
    Total Number Of Transfers: 1
    Number of Transfers Completed: 1
    Number of Transfers Failed: 0
    Number of Transfers Skipped: 0
    TotalBytesTransferred: 13958644224
    Final Job Status: Completed
    
    VHD Upload Done
    
     Creating a new managed disk
    
      = New-AzureRmDiskConfig -Location DBELocal -CreateOption Import -SourceUri
    
     Microsoft.Azure.Commands.Compute.Automation.Models.PSDisk
    
     New-AzureRmDisk -ResourceGroupName rg201221071831 -DiskName ld201221071831 -Disk
    
    ResourceGroupName  : rg201221071831
    ManagedBy          :
    Sku                : Microsoft.Azure.Management.Compute.Models.DiskSku
    Zones              :
    TimeCreated        : 12/21/2020 7:31:35 PM
    OsType             :
    CreationData       : Microsoft.Azure.Management.Compute.Models.CreationData
    DiskSizeGB         : 13
    EncryptionSettings :
    ProvisioningState  : Succeeded
    Id                 : /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/rg201221071831/providers/Microsoft.Compute/disks/ld201221071831
    Name               : ld201221071831
    Type               : Microsoft.Compute/disks
    Location           : DBELocal
    Tags               : {}
    
     Created a new managed disk
    
     Creating a new Image out of managed disk
    
    ResourceGroupName    :
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    :
    Id                   :
    Name                 :
    Type                 :
    Location             : DBELocal
    Tags                 :
    
     New-AzureRmImage -Image Microsoft.Azure.Commands.Compute.Automation.Models.PSImage -ImageName ig201221071831  -ResourceGroupName rg201221071831 -HyperVGeneration V1
    
    ResourceGroupName    : rg201221071831
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    : Succeeded
    Id                   : /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/rg201221071831/providers/Microsoft.Compute/images/ig201221071831
    Name                 : ig201221071831
    Type                 : Microsoft.Compute/images
    Location             : dbelocal
    Tags                 : {}
    
     Created a new Image
    
     Using Vnet /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/ASERG/providers/Microsoft.Network/virtualNetworks/ASEVNET
    
     Creating a new Newtork Interface
    WARNING: The output object type of this cmdlet will be modified in a future release.
    
    VirtualMachine              :
    IpConfigurations            : {ip201221071831}
    DnsSettings                 : Microsoft.Azure.Commands.Network.Models.PSNetworkInterfaceDnsSettings
    MacAddress                  : 001DD87D7216
    Primary                     :
    EnableAcceleratedNetworking : False
    EnableIPForwarding          : False
    NetworkSecurityGroup        :
    ProvisioningState           : Succeeded
    VirtualMachineText          : null
    IpConfigurationsText        : [
                                    {
                                      "Name": "ip201221071831",
                                      "Etag": "W/\"27785dd5-d12a-4d73-9495-ffad7847261a\"",
                                      "Id": "/subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/rg201221071831/providers/Microsoft.Network/networkInterfaces/nic201221071831/ipConfigurations/ip201221071831",
                                      "PrivateIpAddress": "10.57.51.61",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Id": "/subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/ASERG/providers/Microsoft.Network/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ResourceNavigationLinks": [],
                                        "ServiceEndpoints": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettingsText             : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "qgotb4hjdh4efnhn0vz5adtb3f.a--x.internal.cloudapp.net"
                                  }
    NetworkSecurityGroupText    : null
    ResourceGroupName           : rg201221071831
    Location                    : dbelocal
    ResourceGuid                : e6327ab9-0855-4f04-9b36-17bbf31b5bd8
    Type                        : Microsoft.Network/networkInterfaces
    Tag                         :
    TagsTable                   :
    Name                        : nic201221071831
    Etag                        : W/"27785dd5-d12a-4d73-9495-ffad7847261a"
    Id                          : /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/rg201221071831/providers/Microsoft.Network/networkInterfaces/nic201221071831
    
     Created Network Interface
    
     Creating a new VM
    
     New-AzureRmVMConfig -VMName VM201221071831 -VMSize Standard_D1_v2
    
     Set-AzureRmVMOperatingSystem -VM Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine -Windows -ComputerName COM201221071831 -Credential System.Management.Automation.PSCredential
    
     Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine = Set-AzureRmVMOSDisk -VM Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine -Name osld201221071831 -Caching ReadWrite -CreateOption FromImage -Windows -StorageAccountType StandardLRS
    
     Add-AzureRmVMNetworkInterface -VM Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine -Id /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/rg201221071831/providers/Microsoft.Network/networkInterfaces/nic201221071831.Id
    
     Set-AzureRmVMSourceImage -VM Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine -Id /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/rg201221071831/providers/Microsoft.Compute/images/ig201221071831
    
     New-AzureRmVM -ResourceGroupName rg201221071831 -Location DBELocal -VM Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine -Verbose
    WARNING: Since the VM is created using premium storage or managed disk, existing standard storage account, myasesa1, is used for boot
    diagnostics.
    VERBOSE: Performing the operation "New" on target "VM201221071831".
    
    Ticks             : 1533424841
    Days              : 0
    Hours             : 0
    Milliseconds      : 342
    Minutes           : 2
    Seconds           : 33
    TotalDays         : 0.00177479726967593
    TotalHours        : 0.0425951344722222
    TotalMilliseconds : 153342.4841
    TotalMinutes      : 2.55570806833333
    TotalSeconds      : 153.3424841
    
    RequestId           :
    IsSuccessStatusCode : True
    StatusCode          : OK
    ReasonPhrase        : OK
    
    PS C:\Users\v2>
    

    W przypadku maszyny wirtualnej z systemem Linux:

    Oto przykład polecenia użytego do utworzenia maszyny wirtualnej z systemem Linux.

    .\ArmPowershellClient.ps1 -VHDPath \\asefs\Logs\vmvhd -VHDFile ubuntu13.vhd -StorageAccountName myasesatest -OS Linux -VMSize Standard_D1_v2 -VMUserName Administrator -VMPassword Password1 -AzCopy10Path C:\Users\AzCopy10\AzCopy.exe
    New-AzureRmResourceGroup -Name rg201221075546 -Location DBELocal -Force    
    
  5. Po pomyślnym utworzeniu maszyn wirtualnych te maszyny wirtualne powinny zostać wyświetlone na liście maszyn wirtualnych w witrynie Azure Portal. Aby wyświetlić maszyny wirtualne, w zasobie Azure Stack Edge dla urządzenia w witrynie Azure Portal przejdź do pozycji Usługi > brzegowe Maszyny wirtualne.

    Wyświetlanie listy maszyn wirtualnych

    Aby wyświetlić szczegóły maszyny wirtualnej, wybierz nazwę maszyny wirtualnej. Zanotuj dynamiczną alokację adresu IP dla tej maszyny wirtualnej.

    Wyświetlanie szczegółów maszyny wirtualnej

  6. Aby wyczyścić zasoby utworzone przez skrypt, użyj następujących poleceń:

    Get-AzureRmVM | Remove-AzureRmVM -Force
    Get-AzureRmNetworkInterface | Remove-AzureRmNetworkInterface -Force
    Get-AzureRmImage | Remove-AzureRmImage -Force
    Get-AzureRmDisk | Remove-AzureRmDisk -Force
    Get-AzureRmStorageAccount | Remove-AzureRmStorageAccount -Force
    

Następne kroki

Wdrażanie maszyn wirtualnych przy użyciu poleceń cmdlet programu Azure PowerShell