API-versieprofielen gebruiken met Ruby in Azure Stack Hub
Ruby- en API-versieprofielen
De Ruby SDK voor de Azure Stack Hub Resource Manager biedt hulpprogramma's waarmee u uw infrastructuur kunt bouwen en beheren. Resourceproviders in de SDK omvatten Compute, Virtual Networks en Storage, met de Ruby-taal. API-profielen in de Ruby SDK maken hybride cloudontwikkeling mogelijk door u te helpen schakelen tussen globale Azure-resources en -resources in Azure Stack Hub.
Een API-profiel is een combinatie van resourceproviders en serviceversies. U kunt een API-profiel gebruiken om verschillende resourcetypen te combineren.
- Als u de nieuwste versies van alle services wilt gebruiken, gebruikt u het profiel Nieuwste van de Azure SDK rollup-gem.
- Profielen worden benoemd op datum in de notatie zoals
V2020_09_01_Hybrid
ofV2019_03_01_Hybrid
. - Als u de nieuwste API-versie van een service wilt gebruiken, gebruikt u het profiel Nieuwste van de specifieke gem. Als u bijvoorbeeld alleen de nieuwste API-versie van de compute-service wilt gebruiken, gebruikt u het profiel Nieuwste van de reken-gem .
- Als u een specifieke API-versie voor een service wilt gebruiken, gebruikt u de specifieke API-versies die in de gem zijn gedefinieerd.
De Azure Ruby SDK installeren
Installeer Git.
Installeer Ruby.
Kies ruby toevoegen aan path-variabele tijdens de installatie.
Wanneer u hierom wordt gevraagd tijdens de installatie van Ruby, installeert u de development kit.
Installeer vervolgens de bundler met behulp van de volgende opdracht:
Gem install bundler
Als dit niet beschikbaar is, maakt u een abonnement en slaat u de abonnements-id op die later moet worden gebruikt. Instructies voor het maken van een abonnement vindt u in het artikel Abonnementen maken op aanbiedingen in Azure Stack Hub .
Maak een service-principal en sla de id en het geheim op. Instructies voor het maken van een service-principal voor Azure Stack Hub staan in het artikel Een app-id gebruiken om toegang te krijgen tot resources .
Zorg ervoor dat aan uw service-principal de rol inzender/eigenaar is toegewezen aan uw abonnement. Instructies voor het toewijzen van een rol aan een service-principal staan in het artikel Een app-id gebruiken om toegang te krijgen tot resources .
De RubyGem-pakketten installeren
U kunt de Azure RubyGem-pakketten rechtstreeks installeren.
gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network
Of gebruik ze in uw Gemfile.
gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'
De Azure Resource Manager Ruby SDK is in preview en zal waarschijnlijk belangrijke wijzigingen in de interface hebben in toekomstige releases. Een verhoogd getal in de secundaire versie kan duiden op wijzigingen die fouten veroorzaken.
Het azure_sdk-juweeltje gebruiken
De azure_sdk gem is een samengeteld van alle ondersteunde edelstenen in de Ruby SDK.
U kunt de azure_sdk rollup-gem installeren met de volgende opdracht:
gem install 'azure_sdk'
Profielen
Als u een ander SDK-profiel of -versie wilt gebruiken voor profielen die datums bevatten, vervangt u de datum in V<date>_Hybrid
. Voor versie 2008 is het profiel bijvoorbeeld , en wordt 2019_03_01
de tekenreeks V2019_03_01_Hybrid
. Houd er rekening mee dat het SDK-team soms de naam van de pakketten wijzigt, dus het vervangen van de datum van een tekenreeks door een andere datum werkt mogelijk niet. Zie de volgende tabel voor het koppelen van profielen en Azure Stack-versies.
U kunt ook in plaats van de datum gebruiken latest
.
Azure Stack-versie | Profiel |
---|---|
2311 | 2020_09_01 |
2301 | 2020_09_01 |
2206 | 2020_09_01 |
2108 | 2020_09_01 |
2102 | 2020_09_01 |
2008 | 2019_03_01 |
Zie de Samenvatting van API-profielen voor meer informatie over Azure Stack Hub- en API-profielen.
Zie Ruby SDK-profielen.
Abonnement
Als u nog geen abonnement hebt, maakt u een abonnement en slaat u de abonnements-id op die u later wilt gebruiken. Zie dit document voor meer informatie over het maken van een abonnement.
Service-principal
Een service-principal en de bijbehorende omgevingsgegevens moeten ergens worden gemaakt en opgeslagen. Service-principal met owner
rol wordt aanbevolen, maar afhankelijk van het voorbeeld kan een contributor
rol voldoende zijn. Raadpleeg de onderstaande tabel voor de vereiste waarden.
Waarde | Omgevingsvariabelen | Description |
---|---|---|
Tenant-id | AZURE_TENANT_ID |
Uw Azure Stack Hub-tenant-id. |
Client-id | AZURE_CLIENT_ID |
De app-id van de service-principal die is opgeslagen bij het maken van de service-principal in de vorige sectie van dit artikel. |
Abonnements-id | AZURE_SUBSCRIPTION_ID |
U gebruikt de abonnements-id om toegang te krijgen tot aanbiedingen in Azure Stack Hub. |
Clientgeheim | AZURE_CLIENT_SECRET |
Het app-geheim van de service-principal dat is opgeslagen toen de service-principal werd gemaakt. |
Resource Manager-eindpunt | ARM_ENDPOINT |
Zie Het Azure Stack Hub Resource Manager-eindpunt. |
Tenant-id
Volg de instructies in dit artikel om de map of tenant-id voor uw Azure Stack Hub te vinden.
Resourceprovider registreren
Registreer vereiste resourceproviders door dit document te volgen. Deze resourceproviders zijn vereist, afhankelijk van de voorbeelden die u wilt uitvoeren. Als u bijvoorbeeld een VM-voorbeeld wilt uitvoeren, is de registratie van de Microsoft.Compute
resourceprovider vereist.
Azure Stack Resource Manager-eindpunt
Azure Resource Manager (ARM) is een beheerframework waarmee beheerders Azure-resources kunnen implementeren, beheren en bewaken. Azure Resource Manager kunnen deze taken als een groep in plaats van afzonderlijk in één bewerking verwerken. U kunt de metagegevensgegevens ophalen uit het Resource Manager-eindpunt. Het eindpunt retourneert een JSON-bestand met de informatie die nodig is om uw code uit te voeren.
- De ResourceManagerEndpointUrl in de Azure Stack Development Kit (ASDK) is:
https://management.local.azurestack.external/
. - De ResourceManagerEndpointUrl in geïntegreerde systemen is:
https://management.region.<fqdn>/
, waarbij<fqdn>
uw fully qualified domain name is. - Ga als volgende te werk om de vereiste metagegevens op te halen:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Zie Azure REST API-specificaties voor beschikbare API-versies. In profielversie kunt u bijvoorbeeld2020-09-01
deapi-version
wijzigen in2019-10-01
voor resourceprovidermicrosoft.resources
.
Voorbeeld van 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"]
}
}
Omgevingsvariabelen instellen
Microsoft Windows
Als u de omgevingsvariabelen wilt instellen, gebruikt u de volgende indeling in een Windows-opdrachtprompt:
set AZURE_TENANT_ID=<YOUR_TENANT_ID>
macOS-, Linux- en Unix-systemen
Gebruik in Unix-systemen de volgende opdracht:
export AZURE_TENANT_ID=<YOUR_TENANT_ID>
Zie de Samenvatting van API-profielen voor meer informatie over Azure Stack Hub- en API-profielen.
Azure Ruby SDK API-profielgebruik
Gebruik de volgende code om een profielclient te instantiëren. Deze parameter is alleen vereist voor Azure Stack Hub of andere privéclouds. Globale Azure heeft deze instellingen al standaard.
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)
De profielclient kan worden gebruikt voor toegang tot afzonderlijke resourceproviders, zoals Compute, Storage en Network:
# 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-omgevingsinstellingsfuncties definiëren
Als u de service-principal wilt verifiëren voor de Azure Stack Hub-omgeving, definieert u de eindpunten met behulp van get_active_directory_settings()
. Deze methode maakt gebruik van de ARM_Endpoint omgevingsvariabele die u eerder hebt ingesteld:
# 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
Voorbeelden
Gebruik de volgende voorbeelden op GitHub als referentie voor het maken van oplossingen met Ruby- en Azure Stack Hub-API-profielen:
- Beheer Azure-resources en -resourcegroepen met Ruby.
- Virtuele machines beheren met Ruby
- Implementeer een vm met SSH-functionaliteit met een sjabloon in Ruby.
Voorbeeld van Resource Manager en groepen
Als u het voorbeeld wilt uitvoeren, moet u ervoor zorgen dat u Ruby hebt geïnstalleerd. Als u Visual Studio Code gebruikt, downloadt u ook de Ruby SDK-extensie.
Notitie
De opslagplaats voor het voorbeeld is Hybrid-Resource-Manager-Ruby-Resources-And-Groups.
Kloon de opslagplaats:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Installeer de afhankelijkheden met behulp van bundel:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
Maak een Azure-service-principal met behulp van PowerShell en haal de benodigde waarden op.
Zie Use Azure PowerShell to create a service principal with a certificate (Gebruik Azure PowerShell om een service-principal met een certificaat te maken) voor instructies over het maken van een service-principal.
De benodigde waarden zijn:
- Tenant-id
- Client-id
- Clientgeheim
- Abonnements-id
- Resource Manager-eindpunt
Stel de volgende omgevingsvariabelen in met behulp van de informatie die is opgehaald uit de service-principal die u hebt gemaakt:
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}
Notitie
Gebruik
set
in Windows in plaats vanexport
.Zorg ervoor dat de locatievariabele is ingesteld op uw Azure Stack Hub-locatie; bijvoorbeeld
LOCAL="local"
.Als u de juiste Active Directory-eindpunten wilt gebruiken, voegt u de volgende regel code toe als u Azure Stack Hub of andere privéclouds gebruikt:
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
Voeg in de
options
variabele de Active Directory-instellingen en de basis-URL toe om te werken met Azure Stack Hub:options = { credentials: credentials, subscription_id: subscription_id, active_directory_settings: active_directory_settings, base_url: ENV['ARM_ENDPOINT'] }
Maak een profielclient die is gericht op het Azure Stack Hub-profiel:
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
Als u de service-principal wilt verifiëren met Azure Stack Hub, moeten de eindpunten worden gedefinieerd met behulp van get_active_directory_settings(). Deze methode maakt gebruik van de ARM_Endpoint omgevingsvariabele die u eerder hebt ingesteld:
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
Voet het voorbeeld uit.
bundle exec ruby example.rb
Volgende stappen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor