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 te schakelen tussen wereldwijde 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 nieuwste profiel van het rollup-juweeltje van de Azure SDK.
- Profielen worden benoemd op datum in notatie, zoals
V2020_09_01_HybridofV2019_03_01_Hybrid. - Als u de nieuwste API-versie van een service wilt gebruiken, gebruikt u het meest recente profiel van het specifieke juweeltje. Als u bijvoorbeeld alleen de nieuwste API-versie van de rekenservice wilt gebruiken, gebruikt u het meest recente profiel van het rekengesteente .
- 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 bij de installatie.
Wanneer u hierom wordt gevraagd tijdens de installatie van Ruby, installeert u de development kit.
Installeer vervolgens de bundelaar 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 u later wilt gebruiken. Instructies voor het maken van een abonnement bevinden zich in het artikel Abonnementen maken voor 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 bevinden zich in het artikel Een app-identiteit gebruiken voor toegang tot resources .
Zorg ervoor dat aan uw service-principal de rol inzender/eigenaar is toegewezen voor uw abonnement. Instructies voor het toewijzen van een rol aan een service-principal bevinden zich in het artikel Een app-identiteit gebruiken voor toegang 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 heeft waarschijnlijk belangrijke interfacewijzigingen in toekomstige releases. Een verhoogd aantal in de secundaire versie kan duiden op wijzigingen die fouten veroorzaken.
De azure_sdk gem gebruiken
Het azure_sdk juweeltje is een samengevouwen 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 profielen met datums wilt gebruiken, vervangt u de datum in V<date>_Hybrideen ander SDK-profiel of een andere versie. Voor de versie 2008 is 2019_03_01het profiel bijvoorbeeld en wordt V2019_03_01_Hybridde tekenreeks. Houd er rekening mee dat het SDK-team soms de naam van de pakketten wijzigt, dus het vervangen van de datum van een tekenreeks met een andere datum werkt mogelijk niet. Zie de volgende tabel voor het koppelen van profielen en Azure Stack-versies.
U kunt ook gebruiken latest in plaats van de datum.
| Azure Stack-versie | Profiel |
|---|---|
| 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 toen de service-principal in de vorige sectie van dit artikel werd gemaakt. |
| Abonnements-id | AZURE_SUBSCRIPTION_ID |
U gebruikt de abonnements-id voor toegang tot aanbiedingen in Azure Stack Hub. |
| Clientgeheim | AZURE_CLIENT_SECRET |
Het geheim van de service-principal-app die is opgeslagen toen de service-principal werd gemaakt. |
| Resource Manager-eindpunt | ARM_ENDPOINT |
Zie het Azure Stack Hub-eindpunt Resource Manager. |
Tenant-id
Volg de instructies in dit artikel om de map- of tenant-id voor uw Azure Stack Hub te vinden.
Resourceprovider registreren
Registreer de 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 kan deze taken verwerken als een groep in plaats van afzonderlijk, in één bewerking. 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.
- 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>/, waar<fqdn>is uw volledig gekwalificeerde domeinnaam. - De vereiste metagegevens ophalen:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Zie Azure REST API-specificaties voor beschikbare API-versies. In profielversie kunt u bijvoorbeeld2020-09-01deapi-versionnaam2019-10-01wijzigen van de resourceprovidermicrosoft.resources.
Voorbeeld-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.
Gebruik van Azure Ruby SDK-API-profiel
Gebruik de volgende code om een profielclient te instantiëren. Deze parameter is alleen vereist voor Azure Stack Hub of andere privéclouds. Global 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 Netwerk:
# 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 bij 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 verwijzingen voor het maken van oplossingen met Ruby- en Azure Stack Hub-API-profielen:
- Azure-resources en -resourcegroepen beheren 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.gitInstalleer de afhankelijkheden met behulp van bundel:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle installMaak een Azure-service-principal met behulp van PowerShell en haal de benodigde waarden op.
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 u hebt 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
setin 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 instellen, voegt u de volgende coderegel toe als u Azure Stack Hub of andere privéclouds gebruikt:
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])Voeg in de
optionsvariabele 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 endVoet het voorbeeld uit.
bundle exec ruby example.rb