Поделиться через


Использование профилей версий API с Python в Azure Stack Hub

Это важно

Пакет SDK для Python обновлен с трека 1 до 2. Мы рекомендуем как можно скорее перейти на SDK track 2. Инструкции см. в этом руководстве по миграции.

Пакет SDK для Python поддерживает профили версий API для целевых облачных платформ, таких как Azure Stack Hub и глобальная среда Azure. Используйте профили API для создания решений для гибридного облака.

Инструкции в этой статье требуют подписки Microsoft Azure. Если у вас его нет, вы можете получить бесплатную пробную учетную запись.

Профили версий Python и API

Пакет SDK для Python поддерживает следующие профили API:

  • самый поздний
    Этот профиль предназначен для последних версий API для всех поставщиков служб на платформе Azure.

  • 2020_09_01_hybrid
    Этот профиль предназначен для новых версий API всех поставщиков ресурсов платформы Azure Stack Hub версии 2102 и выше.

  • 2019_03_01_hybrid
    Этот профиль нацелен на последние версии API для всех поставщиков ресурсов платформы Azure Stack Hub для версии 1904 и более поздних.

    Дополнительные сведения о профилях API и Azure Stack Hub см. в статье "Управление профилями версий API" в Azure Stack Hub.

Установка Python SDK для Azure

  1. Установите Git.
  2. Установите пакет SDK для Python.

Профили

Для профилей, содержащих даты, чтобы использовать другой профиль или версию пакета SDK, замените дату в v<date>_hybrid. Например, для версии 2008 профиль имеет 2019_03_01значение, а строка становится v2019_03_01_hybrid. Обратите внимание, что иногда команда SDK изменяет имя пакетов, поэтому просто замена даты строки другой датой может не работать. См. следующую таблицу для сопоставления профилей и версий Azure Stack.

Версия Azure Stack Профиль
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 01.03.2019

Дополнительные сведения о профилях Azure Stack Hub и API см. в сводке профилей API.

См. профили пакета SDK для Python.

Подписка

Если у вас еще нет подписки, создайте подписку и сохраните идентификатор подписки, который будет использоваться позже. Сведения о создании подписки см. в этом документе.

Принципал службы

Учётная запись службы и связанные с ней сведения о среде должны быть созданы и сохранены в определённом месте. Рекомендуется использовать субъект-службу с ролью owner, но в зависимости от примера может быть достаточно роли contributor. Смотрите README в образцовом репозитории для определения необходимых значений. Эти значения можно прочитать в любом формате, поддерживаемом языком SDK, например из JSON-файла (которые используются в наших примерах). В зависимости от выполняемого примера могут использоваться не все эти значения. См. пример репозитория для обновленного примера кода или дополнительных сведений.

Идентификатор арендатора

Чтобы найти каталог или идентификатор клиента для Azure Stack Hub, следуйте инструкциям в этой статье.

Регистрация поставщиков ресурсов

Зарегистрируйте необходимых поставщиков ресурсов, следуя этому документу. Эти поставщики ресурсов потребуются в зависимости от примеров, которые требуется запустить. Например, если вы хотите запустить виртуальную машину, требуется регистрация поставщика ресурсов Microsoft.Compute.

Конечная точка диспетчера ресурсов Azure Stack

Azure Resource Manager (ARM) — это платформа управления, которая позволяет администраторам развертывать, управлять и отслеживать ресурсы Azure. Azure Resource Manager может обрабатывать эти задачи как группу, а не отдельно в одной операции. Сведения о метаданных можно получить из узла Resource Manager. Конечная точка возвращает JSON-файл с информацией, необходимой для выполнения кода.

  • ResourceManagerEndpointUrl в пакете средств разработки Azure Stack (ASDK): https://management.local.azurestack.external/
  • ResourceManagerEndpointUrl в интегрированных системах: https://management.region.<fqdn>/, где <fqdn> — это ваше полностью квалифицированное доменное имя.
  • Чтобы получить необходимые метаданные: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Доступные версии API см. в спецификациях REST API Azure. Например, в версии профиля 2020-09-01 можно изменить api-version на 2019-10-01 для поставщика ресурсов microsoft.resources.

Пример 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"]
      }
}

Доверяйте корневому сертификату ЦС Azure Stack Hub

Если вы используете ASDK, необходимо явно доверять корневому сертификату ЦС на удаленном компьютере. Для интегрированных систем Azure Stack Hub не нужно доверять корневому сертификату ЦС.

Виндоус

  1. Найдите расположение хранилища сертификатов Python на компьютере. Расположение может отличаться в зависимости от того, где установлен Python. Откройте командную строку или строку PowerShell с повышенными привилегиями и введите следующую команду:

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

    Запишите расположение хранилища сертификатов; например , ~/lib/python3.5/site-packages/certifi/cacert.pem. Конкретный путь зависит от операционной системы и установленной версии Python.

  2. Доверяйте корневому сертификату ЦС Azure Stack Hub, добавив его к существующему сертификату Python:

    $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"
    

Замечание

Если вы используете virtualenv для разработки с помощью пакета SDK для Python, необходимо добавить предыдущий сертификат в хранилище сертификатов виртуальной среды. Путь может выглядеть примерно так: ..\mytestenv\Lib\site-packages\certifi\cacert.pem

Образцы

См. этот образец репозитория для актуального образца кода (трек 2). См. этот пример репозитория для образца кода трека 1. Корневой каталог README.md описывает общие требования, а каждый вложенный каталог содержит конкретный пример с собственными README.md сведениями о том, как запустить этот пример.

Ознакомьтесь здесь с примером, применимым к версии Azure Stack 2008 или профилю 2019-03-01, и ниже.

Дальнейшие шаги