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

Важно!

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

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

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

Использование профилей версии API с помощью Python

Пакет 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 см. в этой статье.

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

  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 2019_03_01

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

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

Подписка

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

Субъект-служба

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

Tenant ID

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

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

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

Конечная точка Azure Stack Resource Manager

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 см. в разделе Спецификации Azure rest API. Например, в 2020-09-01 версии профиля можно изменить api-version2019-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 доверие корневому сертификату ЦС не требуется.

Windows

  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 , который описывает, как запустить этот пример.

См. пример , применимый к версии 2008 или профилю 2019-03-01 Azure Stack, и ниже.

Дальнейшие действия