Condividi tramite


Usare i profili di versione dell'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 il prima possibile. Per istruzioni, vedere questa guida alla migrazione.

Python SDK supporta i profili di versione dell'API per usare piattaforme cloud diverse, ad esempio l'hub di Azure Stack e Azure globale. Usare i profili API per la 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ù recente
    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 più recenti dell'API 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 più recenti dell'API 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.

Profili

Per i profili contenenti date, per usare un profilo o una versione SDK diversa, 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 la semplice sostituzione della 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 01/09/2020
2301 2020.09.01
2206 01/09/2020
2108 01/09/2020
2102 01/09/2020
2008 01/03/2019

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

Consulta Python SDK Profiles.

Abbonamento

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.

Service Principal

Bisogna creare un principale di servizio e salvare da qualche parte le informazioni sull'ambiente associate. È consigliabile usare un'entità servizio con il ruolo owner, ma a seconda del contesto può essere sufficiente il ruolo contributor. Per i valori richiesti, vedere il README nel repository di esempio. È possibile leggere questi valori in qualsiasi formato supportato dal linguaggio SDK, ad esempio da un file JSON (usato dagli esempi). A seconda dell'esempio in esecuzione, non tutti questi valori possono essere usati. Consultare il repository di esempio per il codice di esempio aggiornato o ulteriori informazioni.

ID del locatario

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

Registrare i fornitori 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.

  • Il ResourceManagerEndpointUrl in il 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 2020-09-01 del profilo, è possibile modificare il api-version in 2019-10-01 per il provider di risorse microsoft.resources.

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 utilizza l'ASDK, è necessario esprimere esplicitamente fiducia nel certificato radice della CA sul computer remoto. Non è necessario considerare attendibile il certificato radice della CA con i sistemi integrati dell'hub di Azure Stack.

Finestre

  1. Trova il percorso dell'archivio certificati Python nel computer. La posizione può variare, a seconda di dove è 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 del percorso 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 dell'Autorità di Certificazione (CA) dell'hub di Azure Stack aggiungendolo al certificato esistente di Python.

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

Annotazioni

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 al seguente: ..\mytestenv\Lib\site-packages\certifi\cacert.pem.

Esempi

Consulta questo repository di esempio per il codice di esempio aggiornato (track 2). Consultare questo repository di esempio per il codice di esempio per il track 1. La radice README.md descrive i requisiti generali e ogni sottodirectory contiene un esempio specifico con il proprio README.md che descrive come eseguire tale esempio.

Vedere qui per l'esempio applicabile per la versione 2008 o il profilo 2019-03-01 di Azure Stack e di seguito.

Passaggi successivi