Udostępnij za pośrednictwem


Wdrażanie maszyn wirtualnych na urządzeniu usługi Azure Stack Edge Pro z procesorem GPU przy użyciu interfejsu wiersza polecenia platformy Azure i języka Python

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

Korzystając z interfejsów API, można tworzyć maszyny wirtualne i zarządzać nimi na urządzeniu usługi Azure Stack Edge. Te interfejsy API to standardowe interfejsy API usługi Azure Resource Manager nazywane lokalnym punktem końcowym usługi Azure Stack Edge. Interfejsy API usługi Azure Resource Manager zapewniają spójną warstwę zarządzania, która w tym przypadku umożliwia tworzenie, aktualizowanie i usuwanie maszyn wirtualnych w lokalnej subskrypcji, która istnieje na urządzeniu. Można nawiązać połączenie z usługą Azure Resource Manager uruchomioną w usłudze Azure Stack Edge za pomocą poleceń cmdlet programu Azure PowerShell.

W tym samouczku opisano sposób tworzenia maszyny wirtualnej i zarządzania nią na urządzeniu Azure Stack Edge Pro przy użyciu języka Python i interfejsu API platformy Azure.

Przepływ pracy wdrażania maszyny wirtualnej

Przepływ pracy wdrażania przedstawiono na poniższym diagramie.

Przepływ pracy wdrażania maszyny wirtualnej

Ogólne podsumowanie przepływu pracy wdrażania jest następujące:

  1. Łączenie się z usługą Azure Resource Manager
  2. Tworzenie grupy zasobów
  3. Tworzenie konta magazynu
  4. Dodawanie identyfikatora URI obiektu blob do pliku hosts
  5. Instalowanie certyfikatów
  6. Przekazywanie wirtualnego dysku twardego
  7. Tworzenie dysków zarządzanych na podstawie dysku VHD
  8. Tworzenie obrazu maszyny wirtualnej na podstawie dysku zarządzanego obrazu
  9. Tworzenie maszyny wirtualnej z wcześniej utworzonymi zasobami
  10. Tworzenie sieci wirtualnej
  11. Tworzenie wirtualnej karty sieciowej przy użyciu identyfikatora podsieci sieci wirtualnej

Aby uzyskać szczegółowe wyjaśnienie diagramu przepływu pracy, zobacz Deploy VMs on your Azure Stack Edge Pro device using Azure PowerShell (Wdrażanie maszyn wirtualnych na urządzeniu Azure Stack Edge Pro przy użyciu programu Azure PowerShell). Aby uzyskać informacje na temat nawiązywania połączenia z usługą Azure Resource Manager, zobacz Connect to Azure Resource Manager using Azure PowerShell (Nawiązywanie połączenia z usługą Azure Resource Manager przy użyciu 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 interfejsu wiersza polecenia platformy Azure i języka Python należy upewnić się, że zostały spełnione wymagania wstępne wymienione w następujących krokach:

  1. Ustawienia sieciowe na urządzeniu Azure Stack Edge Pro zostały ukończone zgodnie z opisem w kroku 1: Konfigurowanie urządzenia Azure Stack Edge Pro.

  2. Włączono interfejs sieciowy na potrzeby obliczeń. Ten adres IP interfejsu sieciowego służy do tworzenia przełącznika wirtualnego dla wdrożenia maszyny wirtualnej. W poniższych krokach przedstawiono proces:

    1. Przejdź do obszaru Obliczenia. Wybierz interfejs sieciowy, którego użyjesz do utworzenia przełącznika wirtualnego.

      Ważne

      Dla obliczeń można skonfigurować tylko jeden port.

    2. Włącz obliczenia w interfejsie sieciowym. Usługa Azure Stack Edge Pro tworzy przełącznik wirtualny odpowiadający temu interfejsowi sieciowemu i zarządza nim.

  3. Utworzono i zainstalowano wszystkie certyfikaty na urządzeniu Azure Stack Edge Pro i w zaufanym magazynie klienta. Postępuj zgodnie z procedurą opisaną w kroku 2: Tworzenie i instalowanie certyfikatów.

  4. Utworzono certyfikat .cer zakodowany w formacie Base-64 (format PEM) dla urządzenia Azure Stack Edge Pro. Ten certyfikat został już przekazany jako łańcuch podpisywania na urządzeniu i zainstalowany w zaufanym magazynie głównym na kliencie. Ten certyfikat jest również wymagany w formacie pem , aby język Python działał na tym kliencie.

    Przekonwertuj ten certyfikat na pem format przy użyciu polecenia certutil. To polecenie należy uruchomić w katalogu zawierającym certyfikat.

    certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
    

    Poniżej przedstawiono przykładowe użycie polecenia:

    PS C:\Certificates> certutil.exe -encode aze-root.cer aze-root.pem
    Input Length = 2150
    Output Length = 3014
    CertUtil: -encode command completed successfully.
    PS C:\Certificates>
    

    Dodasz go pem również do sklepu w języku Python później.

  5. Adres IP urządzenia został przypisany na stronie Sieć w lokalnym internetowym interfejsie użytkownika urządzenia. Dodaj ten adres IP do:

    • 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>
      
    3. Użyj poniższej ilustracji, aby uzyskać informacje referencyjne. Zapisz plik hosts.

      plik hosts w Notatniku

  6. Pobierz skrypt języka Python używany w tej procedurze.

  7. Przygotuj środowisko dla interfejsu wiersza polecenia platformy Azure:

Krok 1. Konfigurowanie interfejsu wiersza polecenia platformy Azure/języka Python na kliencie

Weryfikowanie profilu i instalowanie interfejsu wiersza polecenia platformy Azure

  1. Zainstaluj interfejs wiersza polecenia platformy Azure na kliencie. W tym przykładzie zainstalowano interfejs wiersza polecenia platformy Azure w wersji 2.0.80. Aby sprawdzić wersję interfejsu wiersza polecenia platformy Azure, uruchom polecenie az --version .

    Poniżej przedstawiono przykładowe dane wyjściowe z powyższego polecenia:

    PS C:\windows\system32> az --version
    azure-cli                         2.0.80
    
    command-modules-nspkg              2.0.3
    core                              2.0.80
    nspkg                              3.0.4
    telemetry                          1.0.4
    Extensions:
    azure-cli-iot-ext                  0.7.1
    
    Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
    Extensions directory 'C:\.azure\cliextensions'
    
    Python (Windows) 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 02:47:15) [MSC v.1900 32 bit (Intel)]
    
    Legal docs and information: aka.ms/AzureCliLegal
    
    Your CLI is up-to-date.
    
    Please let us know how we are doing: https://aka.ms/clihats
    PS C:\windows\system32>
    

    Jeśli nie masz interfejsu wiersza polecenia platformy Azure, pobierz i zainstaluj interfejs wiersza polecenia platformy Azure w systemie Windows. Interfejs wiersza polecenia platformy Azure można uruchomić przy użyciu wiersza polecenia systemu Windows lub programu Windows PowerShell.

  2. Zanotuj lokalizację języka Python interfejsu wiersza polecenia. Aby określić lokalizację zaufanego magazynu certyfikatów głównych dla interfejsu wiersza polecenia platformy Azure, potrzebna jest lokalizacja języka Python.

  3. Aby uruchomić przykładowy skrypt używany w tym artykule, potrzebne będą następujące wersje bibliotek języka Python:

    azure-common==1.1.23
    azure-mgmt-resource==2.1.0
    azure-mgmt-network==2.7.0
    azure-mgmt-compute==5.0.0
    azure-mgmt-storage==1.5.0
    azure-storage-blob==1.2.0rc1
    haikunator
    msrestazure==0.6.2
    

    Aby zainstalować wersje, uruchom następujące polecenie:

    .\python.exe -m pip install haikunator
    

    W poniższych przykładowych danych wyjściowych przedstawiono instalację aplikacji Haikunator:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install haikunator
    
    Collecting haikunator
      Downloading https://files.pythonhosted.org/packages/43/fa/130968f1a1bb1461c287b9ff35c630460801783243acda2cbf3a4c5964a5/haikunator-2.1.0-py2.py3-none-any.whl
    
    Installing collected packages: haikunator
    Successfully installed haikunator-2.1.0
    You are using pip version 10.0.1, however version 20.0.1 is available.
    You should consider upgrading using the 'python -m pip install --upgrade pip' command.
    
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> 
    

    Następujące przykładowe dane wyjściowe pokazują instalację narzędzia dla msrestazureprogramu :

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install msrestazure==0.6.2
    Requirement already satisfied: msrestazure==0.6.2 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (0.6.2)
    Requirement already satisfied: msrest<2.0.0,>=0.6.0 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from msrestazure==0.6.2) (0.6.10)
    === CUT ===========================  CUT ==================================
    Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (1.13.2)
    Requirement already satisfied: pycparser in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (2.18)
    You are using pip version 10.0.1, however version 20.0.1 is available.
    You should consider upgrading using the 'python -m pip install --upgrade pip' command.
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

Ufaj certyfikatowi głównemu urzędu certyfikacji usługi Azure Stack Edge Pro

  1. Znajdź lokalizację certyfikatu na komputerze. Lokalizacja może się różnić w zależności od lokalizacji, w której zainstalowano az cliprogram . Uruchom program Windows PowerShell jako administrator. Przejdź do ścieżki, w której az cli zainstalowano język Python: C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe.

    Aby uzyskać lokalizację certyfikatu, wpisz następujące polecenie:

    .\python -c "import certifi; print(certifi.where())"
    

    Polecenie cmdlet zwraca lokalizację certyfikatu, jak pokazano poniżej:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python -c "import certifi; print(certifi.where())"
    C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    Zanotuj tę lokalizację, ponieważ użyjesz jej później — C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem

  2. Ufaj certyfikatowi głównemu urzędu certyfikacji Usługi Azure Stack Edge Pro, dołączając go do istniejącego certyfikatu języka Python. Należy podać ścieżkę do miejsca zapisania certyfikatu PEM wcześniej.

    $pemFile = "<Path to the pem format certificate>"
    

    Przykładowa ścieżka to "C:\VM-scripts\rootteam3device.pem"

    Następnie wpisz następującą serię poleceń w programie Windows PowerShell:

    $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
        $root.Import($pemFile)
    
    Write-Host "Extracting required information from the cert file"
    $md5Hash    = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower()
    $sha1Hash   = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower()
    $sha256Hash = (Get-FileHash -Path $pemFile -Algorithm SHA256).Hash.ToLower()
    
    $issuerEntry  = [string]::Format("# Issuer: {0}", $root.Issuer)
    $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject)
    $labelEntry   = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1])
    $serialEntry  = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower())
    $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash)
    $sha1Entry= [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash)
    $sha256Entry  = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash)
    $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n")
    
    $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + `
    $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText
    
    Write-Host "Adding the certificate content to Python Cert store"
    Add-Content "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem" $rootCertEntry
    
    Write-Host "Python Cert store was updated to allow the Azure Stack Edge Pro CA root certificate"
    

Nawiązywanie połączenia z usługą Azure Stack Edge Pro

  1. Zarejestruj środowisko usługi Azure Stack Edge Pro, uruchamiając polecenie az cloud register .

    W niektórych scenariuszach bezpośrednia łączność internetowa wychodząca jest kierowana przez serwer proxy lub zaporę, która wymusza przechwytywanie protokołu SSL. W takich przypadkach polecenie może zakończyć się niepowodzeniem z powodu błędu, az cloud register takiego jak "Nie można pobrać punktów końcowych z chmury". Aby obejść ten błąd, ustaw następujące zmienne środowiskowe w programie Windows PowerShell:

    $ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 
    $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
    
  2. Ustaw zmienne środowiskowe dla skryptu punktu końcowego usługi Azure Resource Manager, lokalizację, w której są tworzone zasoby, oraz ścieżkę do lokalizacji źródłowego dysku VHD. Lokalizacja zasobów jest stała na wszystkich urządzeniach Azure Stack Edge Pro i jest ustawiona na wartość dbelocal. Należy również określić prefiksy adresów i prywatny adres IP. Wszystkie poniższe zmienne środowiskowe są wartościami opartymi na wartościach z wyjątkiem AZURE_RESOURCE_LOCATIONwartości , które powinny być zakodowane na stałe w pliku "dbelocal".

    $ENV:ARM_ENDPOINT = "https://management.team3device.teatraining1.com"
    $ENV:AZURE_RESOURCE_LOCATION = "dbelocal"
    $ENV:VHD_FILE_PATH = "C:\Downloads\Ubuntu1604\Ubuntu13.vhd"
    $ENV:ADDRESS_PREFIXES = "5.5.0.0/16"
    $ENV:PRIVATE_IP_ADDRESS = "5.5.174.126"
    
  3. Zarejestruj swoje środowisko. Podczas uruchamiania polecenia az cloud register użyj następujących parametrów:

    Wartość Opis Przykład
    Nazwa środowiska Nazwa środowiska, z którym próbujesz nawiązać połączenie Podaj nazwę, na przykład aze-environ
    Punkt końcowy usługi Resource Manager Ten adres URL to https://Management.<appliancename><dnsdomain>.
    Aby uzyskać ten adres URL, przejdź do strony Urządzenia w lokalnym internetowym interfejsie użytkownika urządzenia.
    Na przykład https://management.team3device.teatraining1.com.
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
    

    Poniżej przedstawiono przykładowe użycie powyższego polecenia:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
    
  4. Ustaw aktywne środowisko przy użyciu następującego polecenia:

    az cloud set -n <EnvironmentName>
    

    Poniżej przedstawiono przykładowe użycie powyższego polecenia:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud set -n az-new-env
    Switched active cloud to 'az-new-env'.
    Use 'az login' to log in to this cloud.
    Use 'az account set' to set the active subscription.
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    
  5. Zaloguj się do środowiska usługi Azure Stack Edge Pro przy użyciu polecenia az login . Możesz zalogować się do środowiska Azure Stack Edge Pro jako użytkownik lub jako jednostka usługi.

    Wykonaj następujące kroki, aby zalogować się jako użytkownik:

    Możesz określić nazwę użytkownika i hasło bezpośrednio w poleceniu az login lub uwierzytelnić się przy użyciu przeglądarki. Należy wykonać tę drugą czynność, jeśli twoje konto ma włączone uwierzytelnianie wieloskładnikowe.

    Poniżej przedstawiono przykładowe użycie elementu az login:

    PS C:\Certificates> az login -u EdgeARMuser
    

    Po użyciu polecenia logowania zostanie wyświetlony monit o podanie hasła. Podaj hasło usługi Azure Resource Manager.

    Poniżej przedstawiono przykładowe dane wyjściowe pomyślnego logowania po podaniu hasła:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az login -u EdgeARMuser
    Password:
    [
         {
             "cloudName": "az-new-env",
             "id": "A4257FDE-B946-4E01-ADE7-674760B8D1A3",
             "isDefault": true,
             "name": "Default Provider Subscription",
             "state": "Enabled",
             "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
             "user": {
                 "name": "EdgeArmUser@localhost",
                 "type": "user"
             }
         }
    ]
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    Zanotuj id wartości i tenantId , ponieważ te wartości odpowiadają identyfikatorowi subskrypcji usługi Azure Resource Manager i identyfikatorowi dzierżawy usługi Azure Resource Manager i zostaną użyte w późniejszym kroku.

    Następujące zmienne środowiskowe muszą być ustawione tak, aby działały jako jednostka usługi:

    $ENV:ARM_TENANT_ID = "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    $ENV:ARM_CLIENT_ID = "cbd868c5-7207-431f-8d16-1cb144b50971"
    $ENV:ARM_CLIENT_SECRET - "<Your Azure Resource Manager password>"
    $ENV:ARM_SUBSCRIPTION_ID = "<Your subscription ID>"
    

    Identyfikator klienta usługi Azure Resource Manager jest trwale zakodowany. Identyfikator dzierżawy usługi Azure Resource Manager i identyfikator subskrypcji usługi Azure Resource Manager są obecne w danych wyjściowych uruchomionego az login wcześniej polecenia. Wpis tajny klienta usługi Azure Resource Manager to ustawione hasło usługi Azure Resource Manager.

    Aby uzyskać więcej informacji, zobacz Hasło usługi Azure Resource Manager.

  6. Zmień profil na wersja 2019-03-01-hybrid. Aby zmienić wersję profilu, uruchom następujące polecenie:

    az cloud update --profile 2019-03-01-hybrid
    

    Poniżej przedstawiono przykładowe użycie elementu az cloud update:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud update --profile 2019-03-01-hybrid
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

Krok 2. Tworzenie maszyny wirtualnej

Skrypt języka Python jest udostępniany w celu utworzenia maszyny wirtualnej. W zależności od tego, czy użytkownik jest zalogowany jako użytkownik, czy ustawiona jako jednostka usługi, skrypt pobiera odpowiednio dane wejściowe i tworzy maszynę wirtualną.

  1. Uruchom skrypt języka Python z tego samego katalogu, w którym zainstalowano język Python.
.\python.exe example_dbe_arguments_name_https.py cli
  1. Po uruchomieniu skryptu przekazywanie dysku VHD trwa od 20 do 30 minut. Aby wyświetlić postęp operacji przekazywania, możesz użyć narzędzia Eksplorator usługi Azure Storage lub Narzędzia AzCopy.

    Oto przykładowe dane wyjściowe pomyślnego uruchomienia skryptu. Skrypt tworzy wszystkie zasoby w grupie zasobów, używa tych zasobów do utworzenia maszyny wirtualnej, a na koniec usuwa grupę zasobów, w tym wszystkie utworzone zasoby.

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe example_dbe_arguments_name_https.py cli
    
    Create Resource Group
    Create a storage account
    Uploading to Azure Stack Storage as blob:
            ubuntu13.vhd
    
    Listing blobs...
            ubuntu13.vhd
    
    VM image resource id:
                /subscriptions/.../resourceGroups/azure-sample-group-virtual-machines118/providers/Microsoft.Compute/images/UbuntuImage
    
    Create Vnet
    Create Subnet
    Create NIC
    Creating Linux Virtual Machine
    Tag Virtual Machine
    Create (empty) managed Data Disk
    Get Virtual Machine by Name
    Attach Data Disk
    Detach Data Disk
    Deallocating the VM (to prepare for a disk resize)
    Update OS disk size
    Start VM
    Restart VM
    Stop VM
    
    List VMs in subscription
            VM: VmName118
    
    List VMs in resource group
            VM: VmName118
    
    Delete VM
    All example operations completed successfully!
    
    Delete Resource Group
    Deleted: azure-sample-group-virtual-machines118
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

Następne kroki

Typowe polecenia interfejsu wiersza polecenia az dla maszyn wirtualnych z systemem Linux