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

Importante

O SDK do Python foi atualizado da faixa 1 para a faixa 2. Recomendamos migrar para o SDK da faixa 2 assim que possível. Para obter instruções, consulte este guia de migração.

O SDK do Python dá suporte a perfis de versão de API para direcionar diferentes plataformas de nuvem, como o Azure Stack Hub e o Azure global. Use perfis de API na criação de soluções para uma nuvem híbrida.

As instruções neste artigo exigem uma assinatura do Microsoft Azure. Se você não tiver uma, poderá obter uma conta de avaliação gratuita.

Perfis de versão do Python e da API

O SDK do Python dá suporte aos seguintes perfis de API:

  • mais recente
    Esse perfil tem como destino as versões de API mais recentes para todos os provedores de serviços na plataforma do Azure.

  • 2020_09_01_hybrid
    Esse perfil tem como destino as versões mais recentes da API para todos os provedores de recursos na plataforma do Azure Stack Hub para versões 2102 ou posteriores.

  • 2019_03_01_hybrid
    Esse perfil tem como destino as versões mais recentes da API para todos os provedores de recursos na plataforma do Azure Stack Hub para versões 1904 ou posteriores.

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

Instalar o SDK do Python do Azure

  1. Instalar o Git.
  2. Instale o SDK do Python.

Perfis

Para perfis que contêm datas, para usar um perfil ou versão diferente do SDK, substitua a data em v<date>_hybrid. Por exemplo, para a versão 2008, o perfil é 2019_03_01e a cadeia de caracteres se torna v2019_03_01_hybrid. Observe que, às vezes, a equipe do SDK altera o nome dos pacotes, portanto, simplesmente substituir a data de uma cadeia de caracteres por uma data diferente pode não funcionar. Consulte a tabela a seguir 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, consulte o Resumo dos perfis de API.

Confira Perfis do SDK do Python.

Subscription

Se você ainda não tiver uma assinatura, crie uma assinatura e salve a ID da assinatura a ser usada posteriormente. Para obter informações sobre como criar uma assinatura, consulte este documento.

Entidade de serviço

Uma entidade de serviço e suas informações de ambiente associadas devem ser criadas e salvas em algum lugar. A entidade de serviço com owner função é recomendada, mas dependendo do exemplo, uma contributor função pode ser suficiente. Consulte o LEIAME no repositório de exemplo para obter os valores necessários. Você pode ler esses valores em qualquer formato compatível com a linguagem SDK, como de um arquivo JSON (que nossos exemplos usam). Dependendo do exemplo que está sendo executado, nem todos esses valores podem ser usados. Consulte o repositório de exemplo para obter o código de exemplo atualizado ou mais informações.

ID do locatário

Para localizar a ID do diretório ou do locatário do Azure Stack Hub, siga as instruções neste artigo.

Registrar provedores de recursos

Registre os provedores de recursos necessários seguindo este documento. Esses provedores de recursos serão necessários dependendo dos exemplos que você deseja executar. Por exemplo, se você quiser executar um exemplo de VM, o registro do Microsoft.Compute provedor de recursos será necessário.

Ponto de extremidade do Azure Stack Resource Manager

O ARM (Azure Resource Manager) é uma estrutura de gerenciamento que permite aos administradores implantar, gerenciar e monitorar recursos do Azure. O Azure Resource Manager pode lidar com essas tarefas como um grupo, em vez de individualmente, em uma única operação. Você pode obter as informações de metadados do ponto de extremidade Resource Manager. O ponto de extremidade retorna um arquivo JSON com as informações necessárias para executar seu código.

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

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 raiz da AC do Azure Stack Hub

Se você estiver usando o ASDK, deverá confiar explicitamente no certificado raiz da AC em seu computador remoto. Você não precisa confiar no certificado raiz da AC com sistemas integrados do Azure Stack Hub.

Windows

  1. Localize o local do repositório de certificados python em seu computador. O local pode variar, dependendo de onde você instalou o Python. Abra um prompt de comando ou um prompt do PowerShell com privilégios elevados e digite o seguinte comando:

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

    Anote o local do repositório de certificados; por exemplo, ~/lib/python3.5/site-packages/certifi/cacert.pem. Seu caminho específico depende do sistema operacional e da versão do Python que você instalou.

  2. Confie no certificado raiz da AC do Azure Stack Hub acrescentando-o 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"
    

Observação

Se você estiver usando virtualenv para desenvolver com o SDK do Python, deverá adicionar o certificado anterior ao repositório de certificados do ambiente virtual. O caminho pode ser semelhante a: ..\mytestenv\Lib\site-packages\certifi\cacert.pem.

Exemplos

Consulte este repositório de exemplo para obter o código de exemplo de atualização até a data (faixa 2). Consulte este repositório de exemplo para obter o código de exemplo da faixa 1. A raiz README.md descreve os requisitos gerais e cada subdiretório contém um exemplo específico com seu próprio README.md que descreve como executar esse exemplo.

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

Próximas etapas