Использование профилей версий API с помощью Ruby в Azure Stack Hub
Использование профилей версии API с помощью Ruby
Пакет SDK Ruby для Resource Manager Azure Stack Hub предоставляет средства для создания и администрирования инфраструктуры. Поставщики ресурсов в пакете SDK включают в себя вычисления, виртуальные сети и хранилища на языке Ruby. Профили API в пакете SDK Ruby позволяют выполнять разработку гибридных облаков приложений, помогая переключаться между глобальными ресурсами Azure и ресурсами в Azure Stack Hub.
Профиль API состоит из поставщиков ресурсов и версий службы. Профиль API можно использовать для объединения разных типов ресурсов.
- Чтобы получить последние версии всех служб, используйте последний профиль накопительного пакета Azure SDK.
- Профили именуются по дате в формате или
V2020_09_01_Hybrid
V2019_03_01_Hybrid
. - Чтобы использовать последнюю версию API службы, используйте последний профиль определенного пакета. Например, чтобы использовать только последнюю версию API службы вычислений, используйте профиль Latest пакета Compute.
- Чтобы использовать определенную версию API для службы, используйте нужные версии API, определенные в пакете.
Установка пакета Azure SDK
Установите Git.
Установите Ruby.
При установке выберите Добавить Ruby в переменную PATH.
В ходе установки Ruby установите комплект разработки, когда появится соответствующий запрос.
Затем установите средство увязки, выполнив следующую команду.
Gem install bundler
Создайте подписку, если ее еще нет, и сохраните ее идентификатор для дальнейшего использования. Инструкции по созданию подписки см. в статье Создание подписок для предложений в Azure Stack Hub.
Создайте субъект-службу и сохраните его идентификатор и секрет. Инструкции по созданию субъекта-службы для Azure Stack Hub см. в статье Использование удостоверения приложения для доступа к ресурсам Azure Stack Hub.
Убедитесь, что субъекту-службе назначена роль участника или владельца в вашей подписке. Инструкции по назначению роли субъекту-службе см. в этой статье.
Установка пакетов RubyGem
Можно установить пакеты Azure RubyGem напрямую.
gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network
Или укажите их в Gemfile.
gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'
Пакет SDK Ruby для Azure Resource Manager доступен в режиме предварительной версии, следовательно, в будущих выпусках ожидаются критические важные изменения интерфейса. Большое число в дополнительном номере версии может указывать на критически важные изменения.
Использование пакета azure_sdk
Пакет azure_sdk — это коллекция всех поддерживаемых пакетов в составе SDK для Ruby.
Чтобы установить накопительный пакет azure_sdk, выполните следующую команду:
gem install 'azure_sdk'
Профили
Для профилей, содержащих даты, чтобы использовать другой профиль или версию пакета SDK, замените дату на V<date>_Hybrid
. Например, для версии 2008 профиль имеет значение 2019_03_01
, а строка становится V2019_03_01_Hybrid
. Обратите внимание, что иногда команда sdk изменяет имя пакетов, поэтому просто заменить дату строки другой датой может не работать. Сопоставление профилей и версий Azure Stack см. в следующей таблице.
Вы также можете использовать latest
вместо даты.
Версия 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 для Ruby.
Подписка
Если у вас еще нет подписки, создайте подписку и сохраните ее идентификатор для последующего использования. Сведения о создании подписки см. в этом документе.
Субъект-служба
Субъект-служба и связанные с ним сведения о среде должны быть созданы и сохранены. Рекомендуется субъект-служба с owner
ролью, но в зависимости от примера может быть достаточно роли contributor
. Требуемые значения см. в таблице ниже.
Значение | Переменные среды | Описание |
---|---|---|
Tenant ID | AZURE_TENANT_ID |
Идентификатор клиента Azure Stack Hub. |
Идентификатор клиента | AZURE_CLIENT_ID |
Идентификатор приложения субъекта-службы, сохраненный во время создания субъекта-службы в предыдущем разделе этой статьи. |
Идентификатор подписки | AZURE_SUBSCRIPTION_ID |
Идентификатор подписки используется для доступа к предложениям в Azure Stack Hub. |
Секрет клиента | AZURE_CLIENT_SECRET |
Секрет приложения субъекта-службы, сохраненный во время создания субъекта-службы. |
Конечная точка Resource Manager | ARM_ENDPOINT |
Дополнительные сведения см. в разделе Конечная точка Resource Manager для Azure Stack Hub. |
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-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"]
}
}
Настройка переменных среды
Microsoft Windows
Используйте приведенный ниже формат, чтобы настроить переменные среды в командной строке Windows.
set AZURE_TENANT_ID=<YOUR_TENANT_ID>
MacOS, Linux и системы на основе Unix
В системах на основе Unix используйте такую команду:
export AZURE_TENANT_ID=<YOUR_TENANT_ID>
Получите дополнительные сведения о профилях API и Azure Stack Hub, ознакомившись с разделом Сводка по профилям API.
Использование профиля API пакета SDK Azure для Ruby
Чтобы создать экземпляр профиля клиента, используйте следующий код. Этот параметр требуется только для Azure Stack Hub и других частных облаков. В глобальной среде Azure эти параметры используются по умолчанию.
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
provider = MsRestAzure::ApplicationTokenProvider.new(
ENV['AZURE_TENANT_ID'],
ENV['AZURE_CLIENT_ID'],
ENV['AZURE_CLIENT_SECRET'],
active_directory_settings
)
credentials = MsRest::TokenCredentials.new(provider)
options = {
credentials: credentials,
subscription_id: subscription_id,
active_directory_settings: active_directory_settings,
base_url: ENV['ARM_ENDPOINT']
}
# Target profile built for Azure Stack Hub
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
Профиль клиента можно использовать для доступа к отдельным поставщикам ресурсов, включая вычисления, хранилище и сеть.
# To access the operations associated with Compute
profile_client.compute.virtual_machines.get 'RESOURCE_GROUP_NAME', 'VIRTUAL_MACHINE_NAME'
# Option 1: To access the models associated with Compute
purchase_plan_obj = profile_client.compute.model_classes.purchase_plan.new
# Option 2: To access the models associated with Compute
# Notice Namespace: Azure::Profiles::<Profile Name>::<Service Name>::Mgmt::Models::<Model Name>
purchase_plan_obj = Azure::Profiles::V2019_03_01_Hybrid::Compute::Mgmt::Models::PurchasePlan.new
Определение функций параметров среды Azure Stack Hub
Для проверки подлинности субъекта-службы в среде Azure Stack Hub определите конечные точки с помощью get_active_directory_settings()
. Этот метод использует переменную среды ARM_Endpoint, которую вы задали ранее.
# Get Authentication endpoints using Arm Metadata Endpoints
def get_active_directory_settings(armEndpoint)
settings = MsRestAzure::ActiveDirectoryServiceSettings.new
response = Net::HTTP.get_response(URI("#{armEndpoint}/metadata/endpoints?api-version=1.0"))
status_code = response.code
response_content = response.body
unless status_code == "200"
error_model = JSON.load(response_content)
fail MsRestAzure::AzureOperationError.new("Getting Azure Stack Hub Metadata Endpoints", response, error_model)
end
result = JSON.load(response_content)
settings.authentication_endpoint = result['authentication']['loginEndpoint'] unless result['authentication']['loginEndpoint'].nil?
settings.token_audience = result['authentication']['audiences'][0] unless result['authentication']['audiences'][0].nil?
settings
end
Примеры
Вы можете использовать следующие примеры из репозитория GitHub в качестве рекомендаций при создании решений с профилями API Azure Stack Hub и Ruby.
- Управление ресурсами и группами ресурсов Azure на Ruby.
- Управление виртуальными машинами с помощью Ruby
- Развертывание виртуальной машины с включенным протоколом SSH на основе шаблона на Ruby.
Пример диспетчера ресурсов и групп
Для запуска примера необходимо установить Ruby. При использовании Visual Studio Code также скачайте пакет SDK для Ruby в качестве расширения.
Примечание
Этот пример размещен в репозитории Hybrid-Resource-Manager-Ruby-Resources-And-Groups.
Клонируйте репозиторий.
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Установите зависимости с помощью пакета.
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
Создайте субъект-службу Azure с помощью PowerShell и получите необходимые значения.
См. дополнительные сведения о создании субъекта-службы с сертификатом с помощью Azure PowerShell.
Требуемые значения:
- Tenant ID
- Идентификатор клиента
- Секрет клиента
- Идентификатор подписки
- Конечная точка Resource Manager
Настройте следующие переменные среды, используя информацию, полученную от созданного субъекта-службы.
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 Azure Stack Hub Resource Manager URL}
Примечание
В ОС Windows используйте
set
вместоexport
.Убедитесь, что в качестве переменной расположения задано расположение Azure Stack Hub, например
LOCAL="local"
.Чтобы использовать правильные активные конечные точки при работе с Azure Stack Hub или другими частными облаками, добавьте следующую строку кода.
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
В переменную
options
добавьте параметры Active Directory и базовый URL-адрес для работы с Azure Stack Hub.options = { credentials: credentials, subscription_id: subscription_id, active_directory_settings: active_directory_settings, base_url: ENV['ARM_ENDPOINT'] }
Создайте профиль клиента, который предназначен для профиля Azure Stack Hub.
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
Для проверки подлинности субъекта-службы в среде Azure Stack Hub определите конечные точки с помощью get_active_directory_settings() . Этот метод использует переменную среды ARM_Endpoint, которую вы задали ранее.
def get_active_directory_settings(armEndpoint) settings = MsRestAzure::ActiveDirectoryServiceSettings.new response = Net::HTTP.get_response(URI("#{armEndpoint}/metadata/endpoints?api-version=1.0")) status_code = response.code response_content = response.body unless status_code == "200" error_model = JSON.load(response_content) fail MsRestAzure::AzureOperationError.new("Getting Azure Stack Hub Metadata Endpoints", response, error_model) end result = JSON.load(response_content) settings.authentication_endpoint = result['authentication']['loginEndpoint'] unless result['authentication']['loginEndpoint'].nil? settings.token_audience = result['authentication']['audiences'][0] unless result['authentication']['audiences'][0].nil? settings end
Запустите образец.
bundle exec ruby example.rb
Дальнейшие действия
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по