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

Пакет 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 Профиль
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

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

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

Подписка

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

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

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

Tenant ID

Чтобы найти каталог или идентификатор клиента для 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-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.

примеры

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

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

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