Bereitstellen von VMs auf Ihrem Azure Stack Edge Pro-GPU-Gerät mit der Azure CLI und Python
GILT FÜR: Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Sie können mithilfe von APIs virtuelle Computer auf einem Azure Stack Edge-Gerät erstellen und verwalten. Bei diesen APIs handelt es sich um standardmäßige Azure Resource Manager-APIs, die mit dem lokalen Azure Stack Edge-Endpunkt aufgerufen werden. Mit den Azure Resource Manager-APIs wird eine konsistente Verwaltungsebene bereitgestellt, mit der Sie in diesem Fall virtuelle Computer in einem auf dem Gerät vorhandenen lokalen Abonnement erstellen, aktualisieren und löschen können. Sie können über Azure PowerShell-Cmdlets eine Verbindung mit Azure Resource Manager herstellen, der in Azure Stack Edge ausgeführt wird.
In diesem Tutorial wird beschrieben, wie Sie eine VM auf Ihrem Azure Stack Edge Pro-Gerät mit Python und der Azure-API erstellen und verwalten.
VM-Bereitstellungsworkflow
Der Bereitstellungsworkflow ist im folgenden Diagramm dargestellt.
Die allgemeine Zusammenfassung des Bereitstellungsworkflows lautet wie folgt:
- Herstellen einer Verbindung mit Azure Resource Manager
- Erstellen einer Ressourcengruppe
- Erstellen eines Speicherkontos
- Hinzufügen eines Blob-URI zur Datei „hosts“
- Installieren von Zertifikaten
- Hochladen einer VHD-Datei
- Erstellen verwalteter Datenträger aus der VHD
- Erstellen eines VM-Images aus dem verwalteten Imagedatenträger
- Erstellen eines virtuellen Computers mit zuvor erstellten Ressourcen
- Erstellen eines VNET
- Erstellen einer VNIC mithilfe der VNet-Subnetz-ID
Eine ausführliche Erläuterung des Workflowdiagramms finden Sie unter Bereitstellen von VMs auf Ihrem Azure Stack Edge Pro-Gerät mithilfe von Azure PowerShell. Informationen zum Herstellen einer Verbindung mit Azure Resource Manager finden Sie unter Herstellen einer Verbindung mit Azure Resource Manager mithilfe von Azure PowerShell.
Voraussetzungen
Bevor Sie mit dem Erstellen und Verwalten eines virtuellen Computers auf Ihrem Azure Stack Edge Pro-Gerät mit der Azure CLI und Python beginnen, müssen Sie sicherstellen, dass Sie die in den folgenden Schritten aufgeführten Voraussetzungen erfüllt haben:
Sie haben die Netzwerkeinstellungen auf Ihrem Azure Stack Edge Pro-Gerät wie unter Schritt 1: Konfigurieren des Azure Stack Edge Pro-Geräts beschrieben festgelegt.
Sie haben eine Netzwerkschnittstelle für Compute aktiviert. Diese IP-Adresse der Netzwerkschnittstelle wird verwendet, um einen virtuellen Switch für die VM-Bereitstellung zu erstellen. Die folgenden Schritte führen Sie durch den Prozess:
Navigieren Sie zu Compute. Wählen Sie die Netzwerkschnittstelle aus, die Sie verwenden möchten, um einen virtuellen Switch zu erstellen.
Wichtig
Sie können nur einen Port für Compute konfigurieren.
Aktivieren Sie Compute für die Netzwerkschnittstelle. Azure Stack Edge Pro erstellt und verwaltet einen virtuellen Switch, der dieser Netzwerkschnittstelle entspricht.
Sie haben alle Zertifikate auf Ihrem Azure Stack Edge Pro-Gerät und im vertrauenswürdigen Speicher des Clients erstellt und installiert. Befolgen Sie den unter Schritt 2: Erstellen und Installieren von Zertifikaten beschriebenen Ablauf.
Sie haben ein Base-64-codiertes CER-Zertifikat (PEM-Format) für Ihr Azure Stack Edge Pro-Gerät erstellt. Dieses Zertifikat wurde bereits als Signaturkette auf das Gerät hochgeladen und im vertrauenswürdigen Stammspeicher auf dem Client installiert. Dieses Zertifikat ist auch im PEM-Format erforderlich, damit Python auf diesem Client funktioniert.
Konvertieren Sie dieses Zertifikat mit dem Befehl certutil in das
pem
-Format. Sie müssen diesen Befehl in dem Verzeichnis ausführen, das Ihr Zertifikat enthält.certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
Im Folgenden ist die Verwendung des Beispielbefehls dargestellt:
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>
Sie fügen dieses
pem
-Zertifikat später auch zum Python-Speicher hinzu.Sie haben die IP-Adresse des Geräts auf der Seite Netzwerk in der lokalen Webbenutzeroberfläche des Geräts zugewiesen. Fügen Sie diese IP-Adresse folgenden Elementen hinzu:
- Der Hostdatei auf dem Client oder
- in der DNS-Serverkonfiguration
Wichtig
Es wird empfohlen, dass Sie die DNS-Serverkonfiguration für die Endpunktnamensauflösung ändern.
Starten Sie Editor als Administrator (Administratorrechte sind erforderlich, um die Datei zu speichern), und öffnen Sie anschließend die Datei hosts unter
C:\Windows\System32\Drivers\etc
.Fügen Sie die folgenden Einträge zur Datei hosts hinzu, und fügen Sie die entsprechenden Werte für Ihr Gerät ein:
<Device IP> login.<appliance name>.<DNS domain> <Device IP> management.<appliance name>.<DNS domain> <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
Verwenden Sie die folgende Abbildung als Referenz. Speichern Sie die Datei hosts.
Laden Sie das Python-Skript herunter, das in diesem Verfahren verwendet wird.
Vorbereiten der Umgebung für die Azure CLI:
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Schritt 1: Einrichten der Azure CLI/Python auf dem Client
Überprüfen des Profils und Installieren der Azure CLI
Installieren Sie die Azure CLI auf Ihrem Client. In diesem Beispiel wurde die Azure CLI 2.0.80 installiert. Führen Sie den Befehl az --version aus, um die Version der Azure CLI zu überprüfen.
Nachfolgend sehen Sie eine Beispielausgabe des obigen Befehls:
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>
Wenn Sie nicht über die Azure CLI verfügen, laden Sie die Azure CLI herunter, und installieren Sie sie unter Windows. Sie können die Azure CLI mithilfe der Windows-Eingabeaufforderung oder über Windows PowerShell ausführen.
Notieren Sie sich den Python-Speicherort der CLI. Sie benötigen den Python-Speicherort, damit Sie den Speicherort des vertrauenswürdigen Stammzertifikatspeichers für die Azure CLI bestimmen können.
Zum Ausführen des Beispielskripts, das in diesem Artikel verwendet wird, benötigen Sie die folgenden Versionen der Python-Bibliothek:
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
Führen Sie zum Installieren der Versionen den folgenden Befehl aus:
.\python.exe -m pip install haikunator
Die folgende Beispielausgabe zeigt die Installation von 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>
Die folgende Beispielausgabe zeigt die Installation von 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>
Einstufen des Zertifizierungsstellen-Stammzertifikats für Azure Stack Edge Pro als vertrauenswürdig
Suchen Sie den Speicherort des Zertifikats auf Ihrem Computer. Der Speicherort kann in Abhängigkeit davon variieren, wo Sie
az cli
installiert haben. Führen Sie Windows PowerShell als Administrator aus. Wechseln Sie zu dem Pfad, woaz cli
Python installiert hat:C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe
.Geben Sie folgenden Befehl ein, um den Speicherort des Zertifikats zu erhalten:
.\python -c "import certifi; print(certifi.where())"
Das Cmdlet gibt den Speicherort des Zertifikats zurück, wie unten gezeigt:
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>
Notieren Sie sich diesen Speicherort, da Sie ihn später verwenden werden:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Stufen Sie das Zertifizierungsstellen-Stammzertifikat für Azure Stack Edge Pro als vertrauenswürdig ein, indem Sie es an das vorhandene Python-Zertifikat anfügen. Geben Sie den Pfad an, wo Sie das PEM-Zertifikat zuvor gespeichert haben.
$pemFile = "<Path to the pem format certificate>"
Ein Beispielpfad wäre etwa „C:\VM-scripts\rootteam3device.pem“.
Geben Sie anschließend die folgende Reihe von Befehlen in Windows PowerShell ein:
$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"
Herstellen einer Verbindung mit Azure Stack Edge Pro
Registrieren Sie die Azure Stack Edge Pro-Umgebung, indem Sie den Befehl az cloud register ausführen.
In einigen Szenarien wird die direkte ausgehende Internetkonnektivität durch einen Proxy oder eine Firewall geleitet, die das Abfangen von SSL erzwingen. In diesen Fällen kann beim Befehl
az cloud register
ein Fehler wie „Endpunkte können nicht aus der Cloud abgerufen werden“ auftreten. Als Problemumgehung bei diesem Fehler legen Sie in Windows PowerShell die folgenden Umgebungsvariablen fest:$ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
Legen Sie Umgebungsvariablen für das Skript für den Azure Resource Manager-Endpunkt, den Speicherort, an dem die Ressourcen erstellt werden, und den Pfad zum Speicherort der Quell-VHD fest. Der Speicherort für die Ressourcen wird auf allen Azure Stack Edge Pro-Geräten korrigiert und auf
dbelocal
festgelegt. Sie müssen auch die Adresspräfixe und die private IP-Adresse angeben. Alle folgenden Umgebungsvariablen sind Werte, die auf Ihren Werten basieren, mit Ausnahme vonAZURE_RESOURCE_LOCATION
, was mit"dbelocal"
hartcodiert wird.$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"
Registrieren Sie Ihre Umgebung. Verwenden Sie beim Ausführen des Befehls az cloud register die folgenden Parameter:
Wert Beschreibung Beispiel Umgebungsname Der Name der Umgebung, mit der Sie eine Verbindung herstellen möchten Geben Sie einen Namen an, wie z. B. aze-environ
.Resource Manager-Endpunkt Die URL lautet https://Management.<appliancename><dnsdomain>
.
Damit Sie diese URL abrufen können, navigieren Sie zur Seite Geräte in der lokalen Webbenutzeroberfläche Ihres Geräts.Beispiel: https://management.team3device.teatraining1.com
.az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
Im Folgenden sehen Sie ein Beispiel für die Verwendung des o. g. Befehls:
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
Legen Sie die aktive Umgebung mithilfe des folgenden Befehls fest:
az cloud set -n <EnvironmentName>
Im Folgenden sehen Sie ein Beispiel für die Verwendung des o. g. Befehls:
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>
Melden Sie sich in Ihrer Azure Stack Edge Pro-Umgebung an, indem Sie den Befehl az login verwenden. Sie können sich entweder als Benutzer oder als Dienstprinzipal bei der Azure Stack Edge Pro-Umgebung anmelden.
Führen Sie die folgenden Schritte aus, um sich als Benutzer anzumelden:
Sie können entweder den Benutzernamen und das Kennwort direkt im Befehl
az login
eingeben oder die Authentifizierung über einen Browser ausführen. Sie müssen das letztgenannte Verfahren wählen, wenn für Ihr Konto die mehrstufige Authentifizierung aktiviert ist.Im Folgenden sehen Sie ein Beispiel für die Verwendung von
az login
:PS C:\Certificates> az login -u EdgeARMuser
Nach der Verwendung des Anmeldebefehls werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie das Azure Resource Manager-Kennwort ein.
Das folgende Beispiel zeigt die Ausgabe einer erfolgreichen Anmeldung nach Angabe des Kennworts:
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>
Notieren Sie sich die Werte
id
undtenantId
, da diese Ihrer Azure Resource Manager-Abonnement-ID bzw. Ihrer Azure Resource Manager-Mandanten-ID entsprechen und in einem späteren Schritt verwendet werden.Die folgenden Umgebungsvariablen müssen so festgelegt werden, dass sie als Dienstprinzipal funktionieren:
$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>"
Ihre Azure Resource Manager-Client-ID ist hartcodiert. Ihre Azure Resource Manager-Mandanten-ID und Azure Resource Manager-Abonnement-ID sind in der Ausgabe des zuvor ausgeführten Befehls
az login
enthalten. Der geheime Azure Resource-Clientschlüssel ist das Azure Resource Manager-Kennwort, das Sie festgelegt haben.Weitere Informationen finden Sie unter Azure Resource Manager-Kennwort.
Ändern Sie das Profil in Version „2019-03-01-hybrid“. Führen Sie den folgenden Befehl aus, um die Profilversion zu ändern:
az cloud update --profile 2019-03-01-hybrid
Im Folgenden sehen Sie ein Beispiel für die Verwendung von
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>
Schritt 2: Erstellen eines virtuellen Computers
Ein Python-Skript wird für Sie bereitgestellt, um einen virtuellen Computer zu erstellen. In Abhängigkeit davon, ob Sie als Benutzer angemeldet oder als Dienstprinzipal festgelegt sind, übernimmt das Skript die Eingabe entsprechend und erstellt einen virtuellen Computer.
- Führen Sie das Python-Skript aus dem Verzeichnis aus, in dem Python installiert ist.
.\python.exe example_dbe_arguments_name_https.py cli
Wenn das Skript ausgeführt wird, dauert das Hochladen der VHD 20–30 Minuten. Um den Fortschritt des Uploadvorgangs anzuzeigen, können Sie Azure Storage-Explorer oder AzCopy verwenden.
Im Folgenden finden Sie eine Beispielausgabe einer erfolgreichen Ausführung des Skripts. Das Skript erstellt alle Ressourcen in einer Ressourcengruppe, verwendet diese Ressourcen, um einen virtuellen Computer zu erstellen, und löscht schließlich die Ressourcengruppe einschließlich aller erstellten Ressourcen.
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>
Nächste Schritte
Häufig verwendete Azure CLI-Befehle zum Verwalten von Azure-Ressourcen