Partilhar via


Usar perfis de versão da 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 o mais rápido 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 não tiver uma, pode obter uma conta de avaliação gratuita.

Perfis de versão Python e API

O Python SDK suporta os seguintes perfis de API:

  • últimas notícias
    Este perfil destina-se às versões de API mais recentes para todos os fornecedores de serviços na plataforma Azure.

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

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

    Para saber mais sobre perfis de API e o Azure Stack Hub, veja Gerenciar perfis de versão da API no Azure Stack Hub.

Instalar o SDK do Azure Python

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

Perfis

Para perfis que contenham 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_01, e 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 01/09/2020
2301 01/09/2020
2206 01/09/2020
2108 01/09/2020
2102 01/09/2020
2008 01-03-2019

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

Consulte Perfis do SDK do 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 assinatura, consulte este documento.

Entidade de serviço

Uma entidade de serviço e as suas informações de ambiente correspondentes devem ser criadas e guardadas em algum lugar. A entidade de serviço com owner função é recomendada, mas, dependendo da amostra, uma contributor função pode ser suficiente. Consulte o LEIA-ME no repositório de exemplo para obter os valores necessários. Você pode ler esses valores em qualquer formato suportado pela linguagem SDK, como a partir de um arquivo JSON (que nossos exemplos usam). Dependendo da amostra que está a ser executada, nem todos estes valores podem ser utilizados. Consulte 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 a ID do locatário para seu 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 gerenciador de recursos do Azure Stack

O Azure Resource Manager (ARM) é 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 os metadados do ponto final do Gerenciador de Recursos. O ponto de extremidade retorna um arquivo JSON com as informações necessárias para executar seu 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 totalmente qualificado.
  • Para recuperar os metadados necessários: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Para obter as versões de API disponíveis, consulte Especificações da API restante do Azure. Por exemplo, na versão 2020-09-01 do perfil, pode alterar o api-version para 2019-10-01 no provedor de recursos microsoft.resources.

Exemplo de JSON:

{
   "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 CA do Azure Stack Hub

Se você estiver usando o ASDK, deverá confiar explicitamente no certificado raiz da CA em sua máquina remota. Você não precisa confiar no certificado raiz da CA com os sistemas integrados do Azure Stack Hub.

Mac OS

  1. Encontre o local do armazenamento de certificados Python em sua máquina. 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 armazenamento de certificados; por exemplo, ~/lib/python3.5/site-packages/certifi/cacert.pem. Seu caminho específico depende do seu sistema operacional e da versão do Python que você instalou.

  2. Confie no certificado raiz da CA do Azure Stack Hub anexando-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 Python SDK, você deve adicionar o certificado anterior ao seu armazenamento de certificados de 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 atualizado (track 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 o exemplo aplicável à versão 2008 ou perfil 2019-03-01 do Azure Stack e abaixo.

Próximos passos