Verwenden von API-Versionsprofilen mit Python in Azure Stack Hub

Wichtig

Das Python SDK wurde von Track 1 auf Track 2 aktualisiert. Es wird empfohlen, so schnell wie möglich zum Track 2 SDK zu migrieren. Anweisungen finden Sie in diesem Migrationsleitfaden.

Das Python SDK unterstützt API-Versionsprofile für unterschiedliche Cloudplattformen, z. B. Azure Stack Hub und globales Azure. Verwenden Sie API-Profile beim Erstellen von Lösungen für eine Hybrid Cloud.

Für die Anleitung in diesem Artikel ist ein Microsoft Azure-Abonnement erforderlich. Falls Sie nicht über ein Abonnement dieser Art verfügen, können Sie eine kostenlose Testversion verwenden.

Python und API-Versionsprofile

Das Python SDK unterstützt die folgenden API-Profile:

  • Neueste
    Dieses Profil ist auf die aktuellen API-Versionen für alle Dienstanbieter der Azure Platform ausgerichtet.

  • 2020_09_01_hybrid
    Dieses Profil ist auf die aktuellen API-Versionen für alle Ressourcenanbieter auf der Azure Stack Hub-Plattform für Version 2102 oder höher ausgerichtet.

  • 2019_03_01_hybrid
    Dieses Profil ist auf die aktuellen API-Versionen für alle Ressourcenanbieter auf der Azure Stack Hub-Plattform für Version 1904 oder höher ausgerichtet.

    Weitere Informationen zu API-Profilen und Azure Stack Hub finden Sie unter Verwalten von API-Versionsprofilen in Azure Stack Hub.

Installieren des Azure Python SDK

  1. Git installieren.
  2. Installieren Sie das Python SDK.

Profiles

Ersetzen Sie bei Profilen, die Datumsangaben enthalten, das Datum in v<date>_hybrid, um ein anderes SDK-Profil oder eine andere SDK-Version zu verwenden. Für die Version 2008 lautet das Profil beispielsweise 2019_03_01, und die Zeichenfolge wird zu v2019_03_01_hybrid. Beachten Sie, dass das SDK-Team manchmal den Namen der Pakete ändert, sodass das einfache Ersetzen des Datums einer Zeichenfolge durch ein anderes Datum möglicherweise nicht funktioniert. Informationen zur Zuordnung zwischen Profilen und Azure Stack-Versionen finden Sie in der folgenden Tabelle.

Azure Stack-Version Profil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Weitere Informationen zu Azure Stack Hub und API-Profilen finden Sie in der Zusammenfassung zu API-Profilen.

Siehe Python SDK-Profile

Subscription

Wenn Sie noch nicht über ein Abonnement verfügen, erstellen Sie ein Abonnement, und speichern Sie die Abonnement-ID zur späteren Verwendung. Weitere Informationen zum Erstellen eines Abonnements finden Sie in diesem Dokument.

Dienstprinzipal

Ein Dienstprinzipal und seine zugehörigen Umgebungsinformationen sollten erstellt und an einem Ort gespeichert werden. Ein Dienstprinzipal mit der Rolle owner wird empfohlen, aber je nach Beispiel kann eine contributor-Rolle ausreichen. Die erforderlichen Werte finden Sie in der Infodatei im Beispielrepository. Sie können diese Werte in jedem von der SDK-Sprache unterstützten Format lesen, z. B. aus einer JSON-Datei (die in unseren Beispielen verwendet wird). Je nachdem, wie das Beispiel ausgeführt wird, werden möglicherweise nicht alle diese Werte verwendet. Den aktualisierten Beispielcode bzw. weitere Informationen finden Sie im Beispielrepository.

Mandanten-ID

Folgen Sie den Anweisungen in diesem Artikel, um das Verzeichnis oder die Mandanten-ID für Ihre Azure Stack Hub-Instanz zu suchen.

Registrieren von Ressourcenanbietern

Registrieren Sie die erforderlichen Ressourcenanbieter, indem Sie dieses Dokument befolgen. Diese Ressourcenanbieter sind abhängig von den Beispielen, die Sie ausführen möchten, erforderlich. Wenn Sie beispielsweise ein VM-Beispiel ausführen möchten, ist die Registrierung des Ressourcenanbieters Microsoft.Compute erforderlich.

Azure Stack Resource Manager-Endpunkt

Azure Resource Manager (ARM) ist ein Verwaltungsframework, mit dem Administratoren Azure-Ressourcen bereitstellen, verwalten und überwachen können. Azure Resource Manager kann diese Aufgaben als Gruppe – anstatt einzeln – in einem gemeinsamen Vorgang verarbeiten. Sie können die Metadateninformationen vom Resource Manager-Endpunkt abrufen. Der Endpunkt gibt eine JSON-Datei mit den zum Ausführen des Codes erforderlichen Informationen zurück.

  • Der ResourceManagerEndpointUrl-Wert im Azure Stack Development Kit (ASDK) lautet: https://management.local.azurestack.external/.
  • Die ResourceManagerUrl in integrierten Systemen lautet https://management.region.<fqdn>/, wobei <fqdn> Ihr vollqualifizierter Domänenname ist.
  • Zum Abrufen der erforderlichen Metadaten: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Verfügbare API-Versionen finden Sie unter Azure REST-API-Spezifikationen. Beispielsweise können Sie in der Profilversion 2020-09-01 für den Ressourcenanbieter microsoft.resourcesapi-version in 2019-10-01 ändern.

JSON-Beispielcode:

{
   "galleryEndpoint": "https://portal.local.azurestack.external:30015/",
   "graphEndpoint": "https://graph.windows.net/",
   "portal Endpoint": "https://portal.local.azurestack.external/",
   "authentication": 
      {
         "loginEndpoint": "https://login.windows.net/",
         "audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
      }
}

Einstufen des Zertifizierungsstellen-Stammzertifikats für Azure Stack Hub als vertrauenswürdig

Bei Verwendung des ASDK müssen Sie das Zertifizierungsstellen-Stammzertifikat auf Ihrem Remotecomputer explizit als vertrauenswürdig einstufen. Es ist nicht erforderlich, dass Sie das Zertifizierungsstellen-Stammzertifikat für die integrierten Azure Stack Hub-Systeme als vertrauenswürdig einstufen.

Windows

  1. Suchen Sie auf Ihrem Computer nach dem Python-Zertifikatspeicherort. Der Speicherort kann in Abhängigkeit davon variieren, wo Sie Python installiert haben. Öffnen Sie eine Eingabeaufforderung oder eine PowerShell-Eingabeaufforderung mit erhöhten Rechten, und geben Sie den folgenden Befehl ein:

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

    Notieren Sie sich den Zertifikatspeicherort, z. B. ~/lib/python3.5/site-packages/certifi/cacert.pem. Ihr jeweiliger Pfad hängt von Ihrem Betriebssystem und der installierten Python-Version ab.

  2. Stufen Sie das Zertifizierungsstellen-Stammzertifikat für Azure Stack Hub als vertrauenswürdig ein, indem Sie es an das vorhandene Python-Zertifikat anfügen:

    $pemFile = "<Fully qualified path to the PEM certificate; for ex: C:\Users\user1\Downloads\root.pem>"
    
    $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)}\Python35\Lib\site-packages\certifi\cacert.pem" $rootCertEntry
    
    Write-Host "Python Cert store was updated to allow the Azure Stack Hub CA root certificate"
    

Hinweis

Wenn Sie virtualenv für die Entwicklung mit dem Python SDK verwenden, müssen Sie das vorherige Zertifikat Ihrem Zertifikatspeicher der virtuellen Umgebung hinzufügen. Der Pfad sieht in etwa wie folgt aus: ..\mytestenv\Lib\site-packages\certifi\cacert.pem.

Beispiele

In diesem Beispielrepository finden Sie Beispielcode für aktuelle Aktualisierungen (Track 2). In diesem Beispielrepository finden Sie Nachverfolgungscode für 1 Beispielcode. Der Stamm README.md beschreibt allgemeine Anforderungen, und jedes Unterverzeichnis enthält ein bestimmtes Beispiel mit einem eigenen README.md , das die Ausführung dieses Beispiels beschreibt.

Hier finden Sie die Beispielanwendung für die Azure Stack-Version 2008 oder das Profil 2019-03-01 und niedriger.

Nächste Schritte