Utilizar perfis de versão da API com Python no Azure Stack Hub

Importante

O SDK python foi atualizado da faixa 1 para a faixa 2. Recomendamos a migração para o SDK track 2 o mais rapidamente possível. Para obter instruções, veja este guia de migração.

O SDK python suporta perfis de versão da API para direcionar diferentes plataformas na cloud, como o Azure Stack Hub e o Azure global. Utilize perfis de API na criação de soluções para uma cloud híbrida.

As instruções neste artigo requerem uma subscrição do Microsoft Azure. Se não tiver uma, pode obter uma conta de avaliação gratuita.

Perfis de versão do Python e da API

O SDK python suporta os seguintes perfis de API:

  • mais recente
    Este perfil destina-se às versões de API mais recentes para todos os fornecedores de serviços na plataforma do Azure.

  • 2020_09_01_hybrid
    Este perfil destina-se às versões mais recentes da API para todos os fornecedores de recursos na plataforma do Azure Stack Hub para as versões 2102 ou posteriores.

  • 2019_03_01_hybrid
    Este perfil destina-se às versões mais recentes da API para todos os fornecedores de recursos na plataforma do Azure Stack Hub para as versões 1904 ou posteriores.

    Para obter mais informações sobre perfis de API e o Azure Stack Hub, veja Gerir perfis de versão da API no Azure Stack Hub.

Instalar o SDK python do Azure

  1. Instale o Git.
  2. Instale o SDK python.

Perfis

Para perfis que contenham datas, para utilizar um perfil ou versão do SDK diferente, substitua a data em v<date>_hybrid. Por exemplo, para a versão de 2008, o perfil é 2019_03_01, e a cadeia torna-se v2019_03_01_hybrid. Tenha em atenção que, por vezes, a equipa do SDK altera o nome dos pacotes, pelo que substituir simplesmente a data de uma cadeia por uma data diferente pode não funcionar. Veja a tabela seguinte para associação de perfis e versões do Azure Stack.

Versão do Azure Stack Perfil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Para obter mais informações sobre o Azure Stack Hub e perfis de API, veja o Resumo dos perfis de API.

Veja Perfis do SDK python.

Subscrição

Se ainda não tiver uma subscrição, crie uma subscrição e guarde o ID da subscrição para ser utilizado mais tarde. Para obter informações sobre como criar uma subscrição, veja este documento.

Service principal (Principal de serviço)

Um principal de serviço e as respetivas informações de ambiente associadas devem ser criadas e guardadas algures. O principal de serviço com owner função é recomendado, mas dependendo do exemplo, uma contributor função pode ser suficiente. Veja o README no repositório de exemplo para obter os valores necessários. Pode ler estes valores em qualquer formato suportado pela linguagem SDK, como a partir de um ficheiro JSON (que os nossos exemplos utilizam). Consoante o exemplo que está a ser executado, nem todos estes valores podem ser utilizados. Veja o repositório de exemplo para obter código de exemplo atualizado ou mais informações.

ID do inquilino

Para localizar o diretório ou ID de inquilino do Azure Stack Hub, siga as instruções neste artigo.

Registar fornecedores de recursos

Registe os fornecedores de recursos necessários ao seguir este documento. Estes fornecedores de recursos serão necessários consoante os exemplos que pretende executar. Por exemplo, se quiser executar um exemplo de VM, é necessário o registo do Microsoft.Compute fornecedor de recursos.

Ponto final do Azure Stack Resource Manager

O Azure Resource Manager (ARM) é uma arquitetura de gestão que permite aos administradores implementar, gerir e monitorizar recursos do Azure. O Azure Resource Manager pode processar estas tarefas como um grupo, em vez de individualmente, numa única operação. Pode obter as informações de metadados do ponto final Resource Manager. O ponto final devolve um ficheiro JSON com as informações necessárias para executar o código.

  • O ResourceManagerEndpointUrl no Azure Stack Development Kit (ASDK) é: https://management.local.azurestack.external/.
  • O ResourceManagerEndpointUrl em sistemas integrados é: https://management.region.<fqdn>/, onde <fqdn> é o seu nome de domínio completamente qualificado.
  • Para obter os metadados necessários: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Para obter as versões de API disponíveis, veja Especificações da API rest do Azure. Por exemplo, na 2020-09-01 versão do perfil, pode alterar o api-version para para 2019-10-01 fornecedor microsoft.resourcesde recursos .

JSON de exemplo:

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

Confiar no certificado de raiz da AC do Azure Stack Hub

Se estiver a utilizar o ASDK, tem de confiar explicitamente no certificado de raiz da AC no seu computador remoto. Não precisa de confiar no certificado de raiz da AC com sistemas integrados do Azure Stack Hub.

Windows

  1. Localize a localização do arquivo de certificados python no seu computador. A localização pode variar consoante o local onde instalou o Python. Abra uma linha de comandos ou uma linha de comandos elevada do PowerShell e escreva o seguinte comando:

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

    Anote a localização do arquivo de certificados; por exemplo, ~/lib/python3.5/site-packages/certifi/cacert.pem. O seu caminho específico depende do seu sistema operativo e da versão do Python que instalou.

  2. Confie no certificado de raiz da AC do Azure Stack Hub ao anexá-lo ao certificado Python existente:

    $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 estiver a utilizar virtualenv para desenvolver com o SDK python, tem de adicionar o certificado anterior ao arquivo de certificados do ambiente virtual. O caminho pode ter um aspeto semelhante a: ..\mytestenv\Lib\site-packages\certifi\cacert.pem.

Amostras

Veja este repositório de exemplo para obter o código de exemplo de atualização até à data (faixa 2). Veja este repositório de exemplo para controlar 1 código de exemplo. A raiz README.md descreve os requisitos gerais e cada subdiretório contém uma amostra específica que README.md descreve como executar esse exemplo.

Veja aqui o exemplo aplicável para a versão 2008 ou perfil 2019-03-01 do Azure Stack e abaixo.

Passos seguintes