Share via


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 of V2019_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_01de 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 bijvoorbeeld 2020-09-01 de api-version wijzigen in 2019-10-01 voor resourceprovider microsoft.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:

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.

  1. Kloon de opslagplaats:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Installeer de afhankelijkheden met behulp van bundel:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. 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 van export.

  4. Zorg ervoor dat de locatievariabele is ingesteld op uw Azure Stack Hub-locatie; bijvoorbeeld LOCAL="local".

  5. 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'])
    
  6. 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']
    }
    
  7. Maak een profielclient die is gericht op het Azure Stack Hub-profiel:

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. 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
    
  9. Voet het voorbeeld uit.

    bundle exec ruby example.rb
    

Volgende stappen