Distribuera virtuella datorer på din Azure Stack Edge Pro GPU-enhet med Azure CLI och Python
GÄLLER FÖR: Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Du kan skapa och hantera virtuella datorer på en Azure Stack Edge-enhet med hjälp av API:er. Dessa API:er är Azure Resource Manager-standard-API:er som anropas med hjälp av den lokala Azure Stack Edge-slutpunkten. Azure Resource Manager-API:erna ger ett enhetligt hanteringslager som i det här fallet gör att du kan skapa, uppdatera och ta bort virtuella datorer i en lokal prenumeration som finns på enheten. Du kan ansluta till den Azure Resource Manager som körs i Azure Stack Edge via Azure PowerShell-cmdletar.
I den här självstudien beskrivs hur du skapar och hanterar en virtuell dator på din Azure Stack Edge Pro-enhet med hjälp av Python och Azure API.
Arbetsflöde för VM-distribution
Distributionsarbetsflödet visas i följande diagram.
Sammanfattningen på hög nivå av distributionsarbetsflödet är följande:
- Anslut till Azure Resource Manager
- Skapa en resursgrupp
- Skapa ett lagringskonto
- Lägga till blob-URI i värdfilen
- Installera certifikat
- Ladda upp en virtuell hårddisk
- Skapa hanterade diskar från den virtuella hårddisken
- Skapa en VM-avbildning från den hanterade avbildningsdisken
- Skapa en virtuell dator med resurser som skapats tidigare
- Skapa ett virtuellt nätverk
- Skapa ett virtuellt nätverkskort med VNet-undernäts-ID
En detaljerad förklaring av arbetsflödesdiagrammet finns i Distribuera virtuella datorer på din Azure Stack Edge Pro-enhet med Azure PowerShell. Information om hur du ansluter till Azure Resource Manager finns i Ansluta till Azure Resource Manager med Azure PowerShell.
Förutsättningar
Innan du börjar skapa och hantera en virtuell dator på din Azure Stack Edge Pro-enhet med Hjälp av Azure CLI och Python måste du se till att du har slutfört de krav som anges i följande steg:
Du har slutfört nätverksinställningarna på din Azure Stack Edge Pro-enhet enligt beskrivningen i Steg 1: Konfigurera Azure Stack Edge Pro-enhet.
Du har aktiverat ett nätverksgränssnitt för beräkning. Ip-adressen för nätverksgränssnittet används för att skapa en virtuell växel för vm-distributionen. Följande steg vägleder dig genom processen:
Gå till Beräkning. Välj det nätverksgränssnitt som du ska använda för att skapa en virtuell växel.
Viktigt!
Du kan bara konfigurera en port för beräkning.
Aktivera beräkning i nätverksgränssnittet. Azure Stack Edge Pro skapar och hanterar en virtuell växel som motsvarar nätverksgränssnittet.
Du har skapat och installerat alla certifikat på din Azure Stack Edge Pro-enhet och i klientens betrodda lager. Följ proceduren som beskrivs i Steg 2: Skapa och installera certifikat.
Du har skapat ett Base-64-kodat .cer certifikat (PEM-format) för din Azure Stack Edge Pro-enhet. Certifikatet har redan laddats upp som signeringskedja på enheten och installerats i det betrodda rotarkivet på klienten. Det här certifikatet krävs också i pem-format för att Python ska fungera på den här klienten.
Konvertera det här certifikatet till
pem
formatering med hjälp av kommandot certutil . Du måste köra det här kommandot i katalogen som innehåller certifikatet.certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
Följande visar exempel på kommandoanvändning:
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>
Du kommer också att lägga till detta
pem
i Python Store senare.Du har tilldelat enhetens IP-adress på sidan Nätverk i enhetens lokala webbgränssnitt. Lägg till den här IP-adressen i:
- Värdfilen på klienten, ELLER,
- DNS-serverkonfigurationen
Viktigt!
Vi rekommenderar att du ändrar DNS-serverkonfigurationen för slutpunktsnamnmatchning.
Starta Anteckningar som administratör (administratörsbehörighet krävs för att spara filen) och öppna sedan värdfilen som finns på
C:\Windows\System32\Drivers\etc
.Lägg till följande poster i värdfilen och ersätt med lämpliga värden för enheten:
<Device IP> login.<appliance name>.<DNS domain> <Device IP> management.<appliance name>.<DNS domain> <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
Använd följande bild som referens. Spara värdens fil.
Ladda ned Python-skriptet som används i den här proceduren.
Förbered din miljö för Azure CLI:
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Steg 1: Konfigurera Azure CLI/Python på klienten
Verifiera profilen och installera Azure CLI
Installera Azure CLI på klienten. I det här exemplet installerades Azure CLI 2.0.80. Kontrollera versionen av Azure CLI genom att köra kommandot az --version .
Följande är exempelutdata från kommandot ovan:
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>
Om du inte har Azure CLI laddar du ned och installerar Azure CLI i Windows. Du kan köra Azure CLI med hjälp av Windows-kommandotolken eller via Windows PowerShell.
Anteckna CLI:s Python-plats. Du behöver Python-platsen för att fastställa platsen för det betrodda rotcertifikatarkivet för Azure CLI.
Om du vill köra exempelskriptet som används i den här artikeln behöver du följande Python-biblioteksversioner:
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
Kör följande kommando för att installera versionerna:
.\python.exe -m pip install haikunator
Följande exempelutdata visar installationen av 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>
Följande exempelutdata visar installationen av pip för
msrestazure
: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>
Lita på rotcertifikatet för Azure Stack Edge Pro CA
Hitta certifikatplatsen på datorn. Platsen kan variera beroende på var du har installerat
az cli
. Kör Windows PowerShell som administratör. Växla till sökvägen däraz cli
installerade Python:C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe
.Om du vill hämta certifikatplatsen skriver du följande kommando:
.\python -c "import certifi; print(certifi.where())"
Cmdleten returnerar certifikatplatsen enligt nedan:
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>
Anteckna den här platsen eftersom du kommer att använda den senare -
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Lita på Azure Stack Edge Pro CA-rotcertifikatet genom att lägga till det i det befintliga Python-certifikatet. Du anger sökvägen till platsen där du sparade PEM-certifikatet tidigare.
$pemFile = "<Path to the pem format certificate>"
En exempelsökväg skulle vara "C:\VM-scripts\rootteam3device.pem"
Skriv sedan följande serie kommandon i 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"
Ansluta till Azure Stack Edge Pro
Registrera din Azure Stack Edge Pro-miljö genom att köra kommandot az cloud register .
I vissa scenarier dirigeras direkt utgående Internetanslutning via en proxy eller brandvägg, vilket framtvingar SSL-avlyssning. I dessa fall
az cloud register
kan kommandot misslyckas med ett fel som "Det går inte att hämta slutpunkter från molnet". Du kan undvika det här felet genom att ange följande miljövariabler i Windows PowerShell:$ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
Ange miljövariabler för skriptet för Azure Resource Manager-slutpunkten, platsen där resurserna skapas och sökvägen till den plats där den virtuella källHD:en finns. Platsen för resurserna är fast för alla Azure Stack Edge Pro-enheter och är inställd på
dbelocal
. Du måste också ange adressprefixen och den privata IP-adressen. Alla följande miljövariabler är värden som baseras på dina värden förutomAZURE_RESOURCE_LOCATION
, som ska hårdkodas till"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"
Registrera din miljö. Använd följande parametrar när du kör az cloud register:
Värde beskrivning Exempel Miljönamn Namnet på den miljö som du försöker ansluta till Ange ett namn, till exempel aze-environ
Resource Manager-slutpunkt Den här URL:en är https://Management.<appliancename><dnsdomain>
.
Om du vill hämta den här URL:en går du till sidan Enheter i enhetens lokala webbgränssnitt.Exempel: https://management.team3device.teatraining1.com
az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
Följande visar exempel på användning av kommandot ovan:
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
Ange den aktiva miljön med hjälp av följande kommando:
az cloud set -n <EnvironmentName>
Följande visar exempel på användning av kommandot ovan:
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>
Logga in på din Azure Stack Edge Pro-miljö med hjälp av kommandot az login . Du kan logga in på Azure Stack Edge Pro-miljön antingen som användare eller som tjänstens huvudnamn.
Följ dessa steg för att logga in som användare:
Du kan antingen ange användarnamnet och lösenordet direkt i kommandot eller autentisera
az login
med hjälp av en webbläsare. Du måste göra det senare om ditt konto har multifaktorautentisering aktiverat.Följande visar exempel på användning av
az login
:PS C:\Certificates> az login -u EdgeARMuser
När du har använt inloggningskommandot uppmanas du att ange ett lösenord. Ange Azure Resource Manager-lösenordet.
Följande visar exempelutdata för en lyckad inloggning när lösenordet har angetts:
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>
Anteckna
id
värdena ochtenantId
eftersom dessa värden motsvarar ditt Azure Resource Manager-prenumerations-ID respektive Azure Resource Manager-klient-ID och kommer att användas i det senare steget.Följande miljövariabler måste anges för att fungera som tjänstens huvudnamn:
$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>"
Ditt Azure Resource Manager-klient-ID är hårdkodat. Både ditt Klient-ID för Azure Resource Manager och Azure Resource Manager-prenumerations-ID finns i utdata från kommandot
az login
som du körde tidigare. Azure Resource Manager-klienthemligheten är det Azure Resource Manager-lösenord som du anger.Mer information finns i Azure Resource Manager-lösenord.
Ändra profilen till version 2019-03-01-hybrid. Om du vill ändra profilversionen kör du följande kommando:
az cloud update --profile 2019-03-01-hybrid
Följande visar exempel på användning av
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>
Steg 2: Skapa en virtuell dator
Du får ett Python-skript för att skapa en virtuell dator. Beroende på om du är inloggad som användare eller inställd som tjänstens huvudnamn tar skriptet indata i enlighet med detta och skapar en virtuell dator.
- Kör Python-skriptet från samma katalog där Python är installerat.
.\python.exe example_dbe_arguments_name_https.py cli
När skriptet körs tar det 20–30 minuter att ladda upp den virtuella hårddisken. Om du vill visa förloppet för uppladdningsåtgärden kan du använda Azure Storage Explorer eller AzCopy.
Här är ett exempel på utdata från en lyckad körning av skriptet. Skriptet skapar alla resurser i en resursgrupp, använder dessa resurser för att skapa en virtuell dator och tar slutligen bort resursgruppen inklusive alla resurser som den skapade.
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>