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: Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro R Azure Stack Edge 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.
Ogólne podsumowanie przepływu pracy wdrażania jest następujące:
- Łączenie się z usługą Azure Resource Manager
- Tworzenie grupy zasobów
- Tworzenie konta magazynu
- Dodawanie identyfikatora URI obiektu blob do pliku hosts
- Instalowanie certyfikatów
- Przekazywanie wirtualnego dysku twardego
- Tworzenie dysków zarządzanych na podstawie dysku VHD
- Tworzenie obrazu maszyny wirtualnej na podstawie dysku zarządzanego obrazu
- Tworzenie maszyny wirtualnej z wcześniej utworzonymi zasobami
- Tworzenie sieci wirtualnej
- 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:
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.
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:
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.
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.
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.
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.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.
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\etc
lokalizacji .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>
Użyj poniższej ilustracji, aby uzyskać informacje referencyjne. Zapisz plik hosts.
Pobierz skrypt języka Python używany w tej procedurze.
Przygotuj środowisko dla interfejsu wiersza polecenia platformy Azure:
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Krok 1. Konfigurowanie interfejsu wiersza polecenia platformy Azure/języka Python na kliencie
Weryfikowanie profilu i instalowanie interfejsu wiersza polecenia platformy Azure
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.
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.
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
msrestazure
programu :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
Znajdź lokalizację certyfikatu na komputerze. Lokalizacja może się różnić w zależności od lokalizacji, w której zainstalowano
az cli
program . Uruchom program Windows PowerShell jako administrator. Przejdź do ścieżki, w którejaz 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
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
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
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ątkiemAZURE_RESOURCE_LOCATION
wartoś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"
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"
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>
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 itenantId
, 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.
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ą.
- 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
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