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

O Python SDK suporta perfis de versão API para direcionar diferentes plataformas em nuvem, como o Azure Stack Hub e o Global Azure. Utilize perfis API na criação de soluções para uma nuvem híbrida.

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

Perfis de versão Python e API

O Python SDK suporta os seguintes perfis API:

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

  • 2020-09-01-híbrido
    Este perfil destina-se às versões API mais recentes para todos os fornecedores de recursos na plataforma Azure Stack Hub para as versões 2102 ou posteriores.

  • 2019-03-01-híbrido
    Este perfil destina-se às versões API mais recentes para todos os fornecedores de recursos na plataforma Azure Stack Hub para versões de 1904 ou posterior.

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

Instale o Azure Python SDK

  1. Instale git.
  2. Para obter instruções sobre como instalar o Python SDK, consulte Azure para desenvolvedores python.
  3. Se não estiver disponível, crie uma subscrição e guarde o ID de subscrição para utilizar mais tarde. Para obter instruções sobre a criação de uma subscrição, consulte Criar subscrições para ofertas no Azure Stack Hub.
  4. Crie um diretor de serviço e guarde a sua identificação e segredo. Para obter instruções sobre como criar um principal de serviço para o Azure Stack Hub, consulte fornecer às aplicações acesso ao Azure Stack Hub.
  5. Certifique-se de que o seu titular de serviço tem a função de contribuinte/proprietário na sua subscrição. Para obter instruções sobre como atribuir uma função ao seu principal de serviço, consulte Fornecer acesso às aplicações ao Azure Stack Hub.

Pré-requisitos

Para utilizar o Python Azure SDK com Azure Stack Hub, deve fornecer os seguintes valores e, em seguida, definir valores com variáveis ambientais. Para definir as variáveis ambientais, consulte as instruções após a tabela seguinte, para o seu sistema operativo específico.

Valor Variáveis de ambiente Descrição
ID do inquilino AZURE_TENANT_ID Sua identificaçãodo inquilino Azure Stack Hub.
ID de Cliente AZURE_CLIENT_ID O ID principal da aplicação de serviço salvou quando o diretor de serviço foi criado na secção anterior deste artigo.
ID da subscrição AZURE_SUBSCRIPTION_ID Utiliza o ID de subscrição para aceder a ofertas no Azure Stack Hub.
Segredo do cliente AZURE_CLIENT_SECRET O segredo da aplicação principal do serviço salvou-se quando o diretor do serviço foi criado.
Ponto final do Gestor de Recursos ARM_ENDPOINT Consulte o artigo de ponta final do Azure Stack Hub Manager.
Localização do recurso AZURE_RESOURCE_LOCATION A localização de recursos do seu ambiente Azure Stack Hub.

Confie no certificado raiz Azure Stack Hub CA

Se estiver a utilizar o ASDK, deve confiar explicitamente no certificado raiz ca na sua máquina remota. Não precisa confiar o certificado de raiz da AC com sistemas integrados Azure Stack Hub.

Windows

  1. Encontre a localização da loja de certificados Python na sua máquina. A localização pode variar, dependendo do local onde instalou Python. Abra uma solicitação de comando ou uma solicitação powerShell elevada e digite o seguinte comando:

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

    Tome nota da localização da loja de certificados; por exemplo, ~/lib/python3.5/site-packages/certifi/cacert.pem. O seu percurso em particular depende do seu sistema operativo e da versão do Python que instalou.

  2. Confie no certificado raiz Azure Stack Hub CA, 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"
    

Nota

Se estiver a utilizar virtualenv para desenvolver com Python SDK, como mencionado na seguinte secção de amostras De Python, deve adicionar o certificado anterior à sua loja de certificados de ambiente virtual. O caminho pode parecer-se com: ..\mytestenv\Lib\site-packages\certifi\cacert.pem .

Amostras de Python para Azure Stack Hub

Algumas das amostras de código disponíveis para O Azure Stack Hub utilizando o Python SDK são:

Azure-Samples/Hybrid-Python-Samples: Um exemplo que ilustra como usar python para gerir a conta de armazenamento em Nuvens Híbridas. Por ex. Pilha Azure (github.com)

Gerir amostra de máquina virtual

Utilize a seguinte amostra de código Python para executar tarefas de gestão comuns para máquinas virtuais (VMs) no seu Azure Stack Hub. A amostra de código mostra como:

  • Criar VMs:
    • Criar uma VM do Linux
    • Criar uma VM do Windows
  • Atualizar um VM:
    • Expandir uma unidade
    • Etiquetar uma VM
    • Anexar discos de dados
    • Desanexar discos de dados
  • Operar um VM:
    • Iniciar uma VM
    • Parar uma VM
    • Reiniciar uma VM
  • Listar VMs
  • Eliminar uma VM

Para rever o código que executa estas operações, consulte a função run_example naexample.py de script Python no GitHub repo Hybrid-Compute-Python-Manage-VM.

Cada operação é claramente rotulada com um comentário e uma função de impressão. Os exemplos não estão necessariamente na ordem mostrada nesta lista.

Executar a amostra python

  1. Instale python se ainda não estiver instalado. Esta amostra (e o SDK) é compatível com Python 2.7, 3.4, 3.5 e 3.6.

  2. Uma recomendação geral para o desenvolvimento de Python é usar um ambiente virtual. Para mais informações, consulte a documentação python.

  3. Instale e inicialize o ambiente virtual com o módulo venv no Python 3 (deve instalar virtualenv para Python 2.7):

    python -m venv mytestenv # Might be "python3" or "py -3.6" depending on your Python installation
    cd mytestenv
    source bin/activate      # Linux shell (Bash, ZSH, etc.) only
    ./scripts/activate       # PowerShell only
    ./scripts/activate.bat   # Windows CMD only
    
  4. Clone o repositório:

    git clone https://github.com/Azure-Samples/Hybrid-Compute-Python-Manage-VM.git
    
  5. Instale as dependências utilizando pip:

    cd Hybrid-Compute-Python-Manage-VM
    pip install -r requirements.txt
    
  6. Crie um diretor de serviço para trabalhar com o Azure Stack Hub. Certifique-se de que o seu titular de serviço tem a função de contribuinte/proprietário na sua subscrição.

  7. Descose as seguintes variáveis e exporte estas variáveis ambientais para a sua concha atual:

    export AZURE_TENANT_ID={your tenant id}
    export AZURE_CLIENT_ID={your client id}
    export AZURE_CLIENT_SECRET={your client secret}
    export AZURE_SUBSCRIPTION_ID={your subscription id}
    export ARM_ENDPOINT={your AzureStack Resource Manager Endpoint}
    export AZURE_RESOURCE_LOCATION={your AzureStack Resource location}
    
  8. Para executar esta amostra, as imagens Ubuntu 16.04-LTS e WindowsServer 2012-R2-DataCenter devem estar presentes no Azure Stack Hub Marketplace. Estas imagens podem ser descarregadas a partir do Azure,ou adicionadas ao repositóriode imagem da plataforma.

  9. Execute o exemplo:

    python example.py
    

O Python SDK suporta perfis de versão API para direcionar diferentes plataformas em nuvem, como o Azure Stack Hub e o Global Azure. Utilize perfis API na criação de soluções para uma nuvem híbrida.

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

Perfis de versão Python e API

O Python SDK suporta os seguintes perfis API:

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

  • 2019-03-01-híbrido
    Este perfil destina-se às versões API mais recentes para todos os fornecedores de recursos na plataforma Azure Stack Hub para versões de 1904 ou posterior.

  • 2018-03-01-híbrido
    Este perfil destina-se às versões API mais compatíveis para todos os fornecedores de recursos na plataforma Azure Stack Hub.

  • Perfil 2017-03-09
    Este perfil visa as versões API mais compatíveis dos fornecedores de recursos suportados pelo Azure Stack Hub.

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

Instale o Azure Python SDK

  1. Instale git.
  2. Para obter instruções sobre como instalar o Python SDK, consulte Azure para desenvolvedores python.
  3. Se não estiver disponível, crie uma subscrição e guarde o ID de subscrição para utilizar mais tarde. Para obter instruções sobre a criação de uma subscrição, consulte Criar subscrições para ofertas no Azure Stack Hub.
  4. Crie um diretor de serviço e guarde a sua identificação e segredo. Para obter instruções sobre como criar um principal de serviço para o Azure Stack Hub, consulte fornecer às aplicações acesso ao Azure Stack Hub.
  5. Certifique-se de que o seu titular de serviço tem a função de contribuinte/proprietário na sua subscrição. Para obter instruções sobre como atribuir uma função ao seu principal de serviço, consulte Fornecer acesso às aplicações ao Azure Stack Hub.

Pré-requisitos

Para utilizar o Python Azure SDK com Azure Stack Hub, deve fornecer os seguintes valores e, em seguida, definir valores com variáveis ambientais. Para definir as variáveis ambientais, consulte as instruções após a tabela seguinte, para o seu sistema operativo específico.

Valor Variáveis de ambiente Descrição
ID do inquilino AZURE_TENANT_ID Sua identificaçãodo inquilino Azure Stack Hub.
ID de Cliente AZURE_CLIENT_ID O ID principal da aplicação de serviço salvou quando o diretor de serviço foi criado na secção anterior deste artigo.
ID da subscrição AZURE_SUBSCRIPTION_ID Utiliza o ID de subscrição para aceder a ofertas no Azure Stack Hub.
Segredo do cliente AZURE_CLIENT_SECRET O segredo da aplicação principal do serviço salvou-se quando o diretor do serviço foi criado.
Ponto final do Gestor de Recursos ARM_ENDPOINT Consulte o artigo de ponta final do Azure Stack Hub Manager.
Localização do recurso AZURE_RESOURCE_LOCATION A localização de recursos do seu ambiente Azure Stack Hub.

Confie no certificado raiz Azure Stack Hub CA

Se estiver a utilizar o ASDK, deve confiar explicitamente no certificado raiz ca na sua máquina remota. Não precisa confiar o certificado de raiz da AC com sistemas integrados Azure Stack Hub.

Windows

  1. Encontre a localização da loja de certificados Python na sua máquina. A localização pode variar, dependendo do local onde instalou Python. Abra uma solicitação de comando ou uma solicitação powerShell elevada e digite o seguinte comando:

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

    Tome nota da localização da loja de certificados; por exemplo, ~/lib/python3.5/site-packages/certifi/cacert.pem. O seu percurso em particular depende do seu sistema operativo e da versão do Python que instalou.

  2. Confie no certificado raiz Azure Stack Hub CA, 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"
    

Nota

Se estiver a utilizar virtualenv para desenvolver com Python SDK, como mencionado na seguinte secção de amostras De Python, deve adicionar o certificado anterior à sua loja de certificados de ambiente virtual. O caminho pode parecer-se com: ..\mytestenv\Lib\site-packages\certifi\cacert.pem .

Amostras de Python para Azure Stack Hub

Algumas das amostras de código disponíveis para O Azure Stack Hub utilizando o Python SDK são:

Azure-Samples/Hybrid-Python-Samples: Um exemplo que ilustra como usar python para gerir a conta de armazenamento em Nuvens Híbridas. Por ex. Pilha Azure (github.com)

Gerir amostra de máquina virtual

Utilize a seguinte amostra de código Python para executar tarefas de gestão comuns para máquinas virtuais (VMs) no seu Azure Stack Hub. A amostra de código mostra como:

  • Criar VMs:
    • Criar uma VM do Linux
    • Criar uma VM do Windows
  • Atualizar um VM:
    • Expandir uma unidade
    • Etiquetar uma VM
    • Anexar discos de dados
    • Desanexar discos de dados
  • Operar um VM:
    • Iniciar uma VM
    • Parar uma VM
    • Reiniciar uma VM
  • Listar VMs
  • Eliminar uma VM

Para rever o código que executa estas operações, consulte a função run_example naexample.py de script Python no GitHub repo Hybrid-Compute-Python-Manage-VM.

Cada operação é claramente rotulada com um comentário e uma função de impressão. Os exemplos não estão necessariamente na ordem mostrada nesta lista.

Executar a amostra python

  1. Instale python se ainda não estiver instalado. Esta amostra (e o SDK) é compatível com Python 2.7, 3.4, 3.5 e 3.6.

  2. Uma recomendação geral para o desenvolvimento de Python é usar um ambiente virtual. Para mais informações, consulte a documentação python.

  3. Instale e inicialize o ambiente virtual com o módulo venv no Python 3 (deve instalar virtualenv para Python 2.7):

    python -m venv mytestenv # Might be "python3" or "py -3.6" depending on your Python installation
    cd mytestenv
    source bin/activate      # Linux shell (Bash, ZSH, etc.) only
    ./scripts/activate       # PowerShell only
    ./scripts/activate.bat   # Windows CMD only
    
  4. Clone o repositório:

    git clone --branch 2019_03_01_hybrid https://github.com/Azure-Samples/Hybrid-Compute-Python-Manage-VM.git
    
  5. Instale as dependências utilizando pip:

    cd Hybrid-Compute-Python-Manage-VM
    pip install -r requirements.txt
    
  6. Crie um diretor de serviço para trabalhar com o Azure Stack Hub. Certifique-se de que o seu titular de serviço tem a função de contribuinte/proprietário na sua subscrição.

  7. Descose as seguintes variáveis e exporte estas variáveis ambientais para a sua concha atual:

    export AZURE_TENANT_ID={your tenant id}
    export AZURE_CLIENT_ID={your client id}
    export AZURE_CLIENT_SECRET={your client secret}
    export AZURE_SUBSCRIPTION_ID={your subscription id}
    export ARM_ENDPOINT={your AzureStack Resource Manager Endpoint}
    export AZURE_RESOURCE_LOCATION={your AzureStack Resource location}
    
  8. Para executar esta amostra, as imagens Ubuntu 16.04-LTS e WindowsServer 2012-R2-DataCenter devem estar presentes no Azure Stack Hub Marketplace. Estas imagens podem ser descarregadas a partir do Azure,ou adicionadas ao repositóriode imagem da plataforma.

  9. Execute o exemplo:

    python example.py
    

Passos seguintes