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
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, na2020-09-01
versão do perfil, pode alterar oapi-version
para para2019-10-01
fornecedormicrosoft.resources
de 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
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.
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.