Usare i profili di versione api con Python nell'hub di Azure Stack

Importante

Python SDK è stato aggiornato dalla traccia 1 alla traccia 2. È consigliabile eseguire la migrazione al track 2 SDK non appena possibile. Per istruzioni, vedere questa guida alla migrazione.

Python SDK supporta i profili di versione api per indirizzare diverse piattaforme cloud, ad esempio l'hub di Azure Stack e Azure globale. Usare i profili API nella creazione di soluzioni per un cloud ibrido.

Le istruzioni contenute in questo articolo richiedono una sottoscrizione di Microsoft Azure. Se non ne hai uno, puoi ottenere un account di valutazione gratuito.

Profili di versione di Python e API

Python SDK supporta i profili API seguenti:

  • più recenti
    Questo profilo è destinato alle versioni API più recenti per tutti i provider di servizi nella piattaforma Azure.

  • 2020_09_01_hybrid
    Questo profilo è destinato alle versioni api più recenti per tutti i provider di risorse nella piattaforma Hub di Azure Stack per le versioni 2102 o successive.

  • 2019_03_01_hybrid
    Questo profilo è destinato alle versioni api più recenti per tutti i provider di risorse nella piattaforma Hub di Azure Stack per le versioni 1904 o successive.

    Per altre informazioni sui profili API e sull'hub di Azure Stack, vedere Gestire i profili di versione dell'API nell'hub di Azure Stack.

Installare Azure Python SDK

  1. Installare Git.
  2. Installare Python SDK.

Profiles

Per i profili contenenti date, per usare un profilo o una versione SDK diversi, sostituire la data in v<date>_hybrid. Ad esempio, per la versione 2008, il profilo è 2019_03_01e la stringa diventa v2019_03_01_hybrid. Si noti che a volte il team SDK modifica il nome dei pacchetti, quindi è sufficiente sostituire la data di una stringa con una data diversa potrebbe non funzionare. Vedere la tabella seguente per l'associazione di profili e versioni di Azure Stack.

Versione di Azure Stack Profilo
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Per altre informazioni sui profili dell'hub e delle API di Azure Stack, vedere Riepilogo dei profili API.

Vedere Profili SDK Python.

Subscription

Se non si ha già una sottoscrizione, creare una sottoscrizione e salvare l'ID sottoscrizione da usare in un secondo momento. Per informazioni su come creare una sottoscrizione, vedere questo documento.

Entità servizio

È necessario creare e salvare un'entità servizio e le relative informazioni sull'ambiente associate. L'entità servizio con owner ruolo è consigliata, ma a seconda dell'esempio, un contributor ruolo può essere sufficiente. Per i valori necessari, vedere README nel repository di esempio . È possibile leggere questi valori in qualsiasi formato supportato dal linguaggio SDK, ad esempio da un file JSON (che vengono usati dagli esempi). A seconda dell'esecuzione dell'esempio, non tutti questi valori possono essere usati. Vedere il repository di esempio per il codice di esempio aggiornato o altre informazioni.

ID tenant

Per trovare la directory o l'ID tenant per l'hub di Azure Stack, seguire le istruzioni riportate in questo articolo.

Registrare i provider di risorse

Registrare i provider di risorse necessari seguendo questo documento. Questi provider di risorse saranno necessari a seconda degli esempi da eseguire. Ad esempio, se si vuole eseguire un esempio di macchina virtuale, è necessaria la registrazione del Microsoft.Compute provider di risorse.

Endpoint di Azure Stack resource manager

Azure Resource Manager (ARM) è un framework di gestione che consente agli amministratori di distribuire, gestire e monitorare le risorse di Azure. Azure Resource Manager può gestire queste attività come gruppo, anziché singolarmente, in una singola operazione. È possibile ottenere le informazioni sui metadati dall'endpoint di Resource Manager. L'endpoint restituisce un file JSON con le informazioni necessarie per eseguire il codice.

  • ResourceManagerEndpointUrl in Azure Stack Development Kit (ASDK) è: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl nei sistemi integrati è: https://management.region.<fqdn>/, dove <fqdn> è il nome di dominio completo.
  • Per recuperare i metadati necessari: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Per le versioni api disponibili, vedere Specifiche dell'API rest di Azure. Ad esempio, nella versione del 2020-09-01 profilo è possibile modificare in per il api-version2019-10-01 provider microsoft.resourcesdi risorse .

JSON di esempio:

{
   "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"]
      }
}

Considerare attendibile il certificato radice della CA dell'hub di Azure Stack

Se si usa ASDK, è necessario considerare attendibile in modo esplicito il certificato radice della CA nel computer remoto. Non è necessario considerare attendibile il certificato radice della CA con i sistemi integrati dell'hub di Azure Stack.

Windows

  1. Trovare il percorso dell'archivio certificati Python nel computer. Il percorso può variare, a seconda della posizione in cui è stato installato Python. Aprire un prompt dei comandi o un prompt di PowerShell con privilegi elevati e digitare il comando seguente:

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

    Prendere nota della posizione dell'archivio certificati; Ad esempio, ~/lib/python3.5/site-packages/certifi/cacert.pem. Il percorso specifico dipende dal sistema operativo e dalla versione di Python installata.

  2. Considerare attendibile il certificato radice della CA dell'hub di Azure Stack aggiungendolo al certificato Python esistente:

    $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"
    

Nota

Se si usa virtualenv per lo sviluppo con Python SDK, è necessario aggiungere il certificato precedente all'archivio certificati dell'ambiente virtuale. Il percorso potrebbe essere simile a: ..\mytestenv\Lib\site-packages\certifi\cacert.pem.

Esempi

Vedere questo repository di esempio per il codice di esempio update-to-date (track 2). Vedere questo repository di esempio per il codice di esempio traccia 1. La radice README.md descrive i requisiti generali e ogni sottocartella contiene un esempio specifico con il proprio README.md che descrive come eseguire tale esempio.

Per l'esempio applicabile alla versione 2008 o al profilo 2019-03-01 di Azure Stack, vedere qui.

Passaggi successivi