VM's implementeren op uw GPU-apparaat voor Azure Stack Edge Pro met behulp van Azure CLI en Python
VAN TOEPASSING OP: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
U kunt virtuele machines (VM's) maken en beheren op een Azure Stack Edge-apparaat met behulp van API's. Deze API's zijn standaard Azure Resource Manager-API's die worden aangeroepen met behulp van het lokale Azure Stack Edge-eindpunt. De Azure Resource Manager-API's bieden een consistente managementlaag, waarmee u in dit geval VM's kunt maken, bijwerken en verwijderen in een lokaal abonnement dat bestaat op het apparaat. U kunt verbinding maken met de versie van Azure Resource Manager die wordt uitgevoerd op Azure Stack Edge via Azure PowerShell-cmdlets.
In deze zelfstudie wordt beschreven hoe u een virtuele machine maakt en beheert op uw Azure Stack Edge Pro-apparaat met behulp van Python en de Azure-API.
VM-implementatiewerkstroom
De implementatiewerkstroom wordt afgebeeld in het volgende diagram.
Het overzicht op hoog niveau van de implementatiewerkstroom is als volgt:
- Verbinding maken met Azure Resource Manager
- Een brongroep maken
- Een opslagaccount maken
- Blob-URI toevoegen aan het hosts-bestand
- Certificaten installeren
- Een VHD uploaden
- Beheerde schijven maken op basis van de VHD
- Een VM-installatiekopie maken op basis van de installatiekopie van de beheerde schijf
- Een VM maken met eerder gemaakte resources
- Een VNet maken
- Een VNIC maken met de VNet-subnet-ID
Zie VM's op uw Azure Stack Edge Pro-apparaat implementeren met behulp van Azure PowerShell voor een gedetailleerde uitleg van het werkstroomdiagram. Voor informatie over verbinding maken met Azure Resource Manager raadpleegt u Verbinding maken met Azure Resource Manager met behulp van Azure PowerShell.
Vereisten
Voordat u een virtuele machine op uw Azure Stack Edge Pro-apparaat gaat maken en beheren met behulp van Azure CLI en Python, moet u ervoor zorgen dat u voldoet aan de vereisten die worden genoemd in de volgende stappen:
U hebt de netwerkinstellingen op uw Azure Stack Edge Pro-apparaat voltooid, zoals beschreven in stap 1: Azure Stack Edge Pro-apparaat configureren.
U hebt een netwerkinterface ingeschakeld voor berekening. Het IP-adres van de netwerkinterface wordt gebruikt om een virtuele switch te maken voor de VM-implementatie. Met de volgende stappen doorloopt u dit proces:
Ga naar Compute. Selecteer de netwerkinterface die u wilt gebruiken om een virtuele switch te maken.
Belangrijk
U kunt slechts één poort configureren voor berekeningen.
Schakel Compute in op de netwerkinterface. Azure Stack Edge Pro maakt en beheert een virtuele switch die overeenkomt met die netwerkinterface.
U hebt alle certificaten gemaakt en geïnstalleerd op uw Azure Stack Edge Pro-apparaat en in het vertrouwensarchief van uw client. Volg de procedure die wordt beschreven in stap 2: Certificaten maken en installeren.
U hebt een met Base-64 versleuteld .CER-certificaat (PEM-indeling) gemaakt voor uw Azure Stack Edge Pro-apparaat. Dat certificaat is al geüpload als ondertekeningsketen op het apparaat en geïnstalleerd in het vertrouwde basisarchief op uw client. Dit certificaat is ook vereist in PEM-indeling om Python te laten werken op deze client.
Converteer dit certificaat naar
pem
indeling met behulp van de opdracht certutil . U moet deze opdracht uitvoeren in de map met uw certificaat.certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
Hieronder ziet u een voorbeeld van hoe u deze opdracht gebruikt:
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>
U voegt dit
pem
ook later toe aan het Python-archief.U hebt het IP-adres van het apparaat toegewezen in uw netwerkpagina in de lokale web-UI van het apparaat. Voeg dit IP-adres toe aan:
- Het hostbestand op de client, OF
- De DNS-serverconfiguratie
Belangrijk
We raden aan de DNS-serverconfiguratie aan te passen voor de eindpuntnaamomzetting.
Start Kladblok als beheerder (er zijn beheerdersrechten vereist om het bestand op te slaan) en open vervolgens het bestand hosts dat zich bevindt op
C:\Windows\System32\Drivers\etc
.Voeg de volgende vermeldingen toe aan uw hosts-bestand, waarbij u de juiste waarden voor uw apparaat invoert:
<Device IP> login.<appliance name>.<DNS domain> <Device IP> management.<appliance name>.<DNS domain> <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
Gebruik de volgende afbeelding ter referentie. Sla het bestand met hosts op.
Download het Python-script dat in deze procedure wordt gebruikt.
De omgeving voorbereiden op de Azure CLI:
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Stap 1: Azure CLI/Python instellen op de client
Profiel controleren en Azure CLI installeren
Installeer Azure CLI op uw clientcomputer. In dit voorbeeld is Azure CLI 2.0.80 geïnstalleerd. Voer de opdracht az --version uit om de versie van Azure CLI te controleren.
Hieronder ziet u voorbeelduitvoer van de bovenstaande opdracht:
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>
Als u Azure CLI nog niet hebt, kunt u Azure CLI downloaden en installeren in Windows. U kunt Azure CLI uitvoeren via de Windows-opdrachtprompt of via Windows PowerShell.
Noteer de locatie van Python voor de CLI. U hebt de Python-locatie nodig om de locatie van het vertrouwde basiscertificaatarchief voor Azure CLI te bepalen.
Om het voorbeeldscript uit te voeren dat in dit artikel wordt gebruikt, hebt u de volgende Python-bibliotheekversies nodig:
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
Voer de volgende opdracht uit om de versies te installeren:
.\python.exe -m pip install haikunator
In de volgende voorbeelduitvoer ziet u de installatie van 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>
In de volgende voorbeelduitvoer ziet u de installatie van pip voor
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>
Het CA-basiscertificaat van Azure Stack Edge Pro vertrouwen
Zoek de locatie van het certificaat op de computer. De locatie kan variëren, afhankelijk van waar u
az cli
hebt geïnstalleerd. Voer Windows PowerShell uit als administrator. Schakel over naar het pad waaraz cli
Python heeft geïnstalleerd:C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe
.Als u de certificaatlocatie wilt ophalen, typt u de volgende opdracht:
.\python -c "import certifi; print(certifi.where())"
De cmdlet retourneert de certificaatlocatie, zoals hieronder wordt weergegeven:
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>
Noteer deze locatie als u deze later gaat gebruiken:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Vertrouw het CA-basiscertificaat van Azure Stack Edge Pro door het toe te voegen aan het bestaande Python-certificaat. U geeft het pad op naar de locatie waar u het PEM-certificaat eerder hebt opgeslagen.
$pemFile = "<Path to the pem format certificate>"
Een voorbeeld van dit pad is 'C:\VM-scripts\rootteam3device.pem'
Typ vervolgens de volgende reeks opdrachten in 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"
Verbinding maken met Azure Stack Edge Pro
Registreer uw Azure Stack Edge Pro-omgeving door de opdracht az cloud register uit te voeren.
In sommige gevallen worden directe uitgaande Internet-verbindingen gerouteerd via een proxy of firewall, waarmee SSL-onderschepping wordt afgedwongen. In deze gevallen kan de
az cloud register
opdracht mislukken met een fout zoals 'Kan geen eindpunten ophalen uit de cloud'. Als u deze fout wilt omzeilen, stelt u de volgende omgevingsvariabelen in Windows PowerShell in:$ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
Stel omgevingsvariabelen in voor het script voor het Azure Resource Manager-eindpunt, de locatie waar de resources zijn gemaakt en het pad naar de locatie van de bron-VHD. De locatie van de resources is hetzelfde op alle Azure Stack Edge Pro-apparaten en is ingesteld op
dbelocal
. U moet ook de adresvoorvoegsels en het privé-IP-adres opgeven. Alle volgende omgevingsvariabelen zijn waarden op basis van uw waarden, met uitzondering vanAZURE_RESOURCE_LOCATION
, die moeten worden vastgelegd in"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"
Registreer uw omgeving. Gebruik de volgende parameters bij het uitvoeren van az cloud register:
Weergegeven als Beschrijving Voorbeeld Omgevingsnaam De naam van de omgeving waarmee u verbinding wilt maken Geef een naam op, zoals aze-environ
Resource Manager-eindpunt Deze URL is https://Management.<appliancename><dnsdomain>
.
Als u deze URL wilt ophalen, gaat u naar pagina Apparaten in de lokale webgebruikersinterface van uw apparaat.Bijvoorbeeld: https://management.team3device.teatraining1.com
.az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
Hieronder ziet u een voorbeeld van het gebruik van de bovenstaande opdracht:
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
Stel de actieve omgeving in met behulp van de volgende opdracht:
az cloud set -n <EnvironmentName>
Hieronder ziet u een voorbeeld van het gebruik van de bovenstaande opdracht:
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>
Meld u aan bij uw Azure Stack Edge Pro-omgeving met behulp van de opdracht az login . U kunt zich aanmelden bij de Azure Stack Edge Pro-omgeving als een gebruiker of als een service-principal.
Voer de volgende stappen uit om u aan te melden als een gebruiker:
U kunt de gebruikersnaam en het wachtwoord rechtstreeks opgeven met de opdracht
az login
of verifiëren met behulp van een browser. U moet dit laatste doen als voor uw account meervoudige verificatie is ingeschakeld.Hieronder ziet u een voorbeeld van hoe u
az login
gebruikt:PS C:\Certificates> az login -u EdgeARMuser
Nadat u de aanmeldingsopdracht hebt gebruikt, wordt u om een wachtwoord gevraagd. Voer het Azure Resource Manager-wachtwoord in.
Hieronder ziet u voorbeelduitvoer voor een geslaagde aanmelding nadat u het wachtwoord hebt opgeven:
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>
Noteer de
id
waarden entenantId
waarden omdat deze waarden overeenkomen met respectievelijk uw Azure Resource Manager-abonnements-id en azure Resource Manager-tenant-id. Deze waarden worden in de latere stap gebruikt.De volgende omgevingsvariabelen moeten worden ingesteld voor correcte werking als service-principal:
$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>"
De Azure Resource Manager-client-id is vastgelegd in code. Uw Azure Resource Manager-tenant-id en Azure Resource Manager-abonnements-id zijn beide aanwezig in de uitvoer van de
az login
opdracht die u eerder hebt uitgevoerd. Het Azure Resource Manager-clientgeheim is het Azure Resource Manager-wachtwoord dat u hebt ingesteld.Zie Azure Resource Manager-wachtwoord voor meer informatie.
Wijzig het profiel naar versie 2019-03-01-hybrid. Als u de profielversie wilt wijzigen, voert u de volgende opdracht uit:
az cloud update --profile 2019-03-01-hybrid
Hieronder ziet u een voorbeeld van hoe u
az cloud update
gebruikt: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>
Stap 2: een VIRTUELE machine maken
Er wordt een Python-script beschikbaar gemaakt waarmee u een virtuele machine kunt maken. Afhankelijk van of u bent aangemeld als gebruiker of als service-principal, gebruikt het script de relevante invoer om een VM te maken.
- Voer het Python-script uit in dezelfde map waarin Python is geïnstalleerd.
.\python.exe example_dbe_arguments_name_https.py cli
Wanneer het script wordt uitgevoerd, duurt het uploaden van de VHD 20-30 minuten. Als u de voortgang van de uploadbewerking wilt weergeven, kunt u Azure Storage Explorer of AzCopy gebruiken.
Hier volgt een voorbeeld van de uitvoer van een geslaagde uitvoering van het script. Met het script worden alle resources in een resourcegroep gemaakt, worden deze resources gebruikt om een VM te maken en wordt de resourcegroep verwijderd, inclusief alle resources die zijn gemaakt.
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>