Использование профилей версий 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
Профили
Для профилей, содержащих даты, чтобы использовать другой профиль или версию пакета 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
Найдите расположение хранилища сертификатов Python на своем компьютере. Это расположение зависит от того, куда вы установили Python. Откройте командную строку или строку PowerShell с повышенными правами и введите следующую команду:
python -c "import certifi; print(certifi.where())"Запишите расположение хранилища сертификатов, например: ~/lib/python3.5/site-packages/certifi/cacert.pem. Конкретный путь зависит от операционной системы и установленной версии Python.
Чтобы настроить доверие для корневого сертификата ЦС 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, а также ниже.