Używanie profilów wersji interfejsu API z językiem Ruby w usłudze Azure Stack Hub

Profile wersji języka Ruby i interfejsu API

Zestaw SDK języka Ruby dla usługi Azure Stack Hub Resource Manager udostępnia narzędzia ułatwiające tworzenie infrastruktury i zarządzanie nią. Dostawcy zasobów w zestawie SDK obejmują usługi Compute, Virtual Networks i Storage z językiem Ruby. Profile interfejsów API w zestawie SDK języka Ruby umożliwiają opracowywanie chmury hybrydowej, pomagając przełączać się między globalnymi zasobami i zasobami platformy Azure w usłudze Azure Stack Hub.

Profil interfejsu API to kombinacja dostawców zasobów i wersji usług. Profil interfejsu API umożliwia łączenie różnych typów zasobów.

  • Aby użyć najnowszych wersji wszystkich usług, użyj najnowszego profilu pakietu zbiorczego zestawu SDK platformy Azure.
  • Profile są nazwane według daty w formacie, takim jak V2020_09_01_Hybrid lub V2019_03_01_Hybrid.
  • Aby użyć najnowszej wersji interfejsu API usługi, użyj najnowszego profilu określonego klejnotu. Aby na przykład użyć najnowszej wersji usługi obliczeniowej interfejsu API , użyj najnowszego profilu klejnotu obliczeniowego .
  • Aby użyć określonej wersji interfejsu API dla usługi, użyj określonych wersji interfejsu API zdefiniowanych wewnątrz rozwiązania Gem.

Instalowanie zestawu Azure Ruby SDK

  • Zainstaluj usługę Git.

  • Zainstaluj język Ruby.

    • Podczas instalowania wybierz pozycję Dodaj zmienną Ruby do zmiennej PATH.

    • Po wyświetleniu monitu podczas instalacji języka Ruby zainstaluj zestaw deweloperów.

    • Następnie zainstaluj pakiet przy użyciu następującego polecenia:

      Gem install bundler
      
  • Jeśli nie jest dostępna, utwórz subskrypcję i zapisz identyfikator subskrypcji, który będzie używany później. Instrukcje dotyczące tworzenia subskrypcji znajdują się w artykule Tworzenie subskrypcji ofert w usłudze Azure Stack Hub .

  • Utwórz jednostkę usługi i zapisz jej identyfikator i wpis tajny. Instrukcje dotyczące tworzenia jednostki usługi dla usługi Azure Stack Hub znajdują się w artykule Używanie tożsamości aplikacji do uzyskiwania dostępu do zasobów .

  • Upewnij się, że jednostka usługi ma przypisaną rolę współautora/właściciela subskrypcji. Instrukcje dotyczące przypisywania roli do jednostki usługi znajdują się w artykule Używanie tożsamości aplikacji do uzyskiwania dostępu do zasobów .

Instalowanie pakietów RubyGem

Pakiety Języka RubyGem platformy Azure można zainstalować bezpośrednio.

gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network

Możesz też użyć ich w pliku Gemfile.

gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'

Zestaw Azure Resource Manager Ruby SDK jest w wersji zapoznawczej i prawdopodobnie będzie miał zmiany powodujące niezgodność interfejsu w nadchodzących wersjach. Zwiększona liczba w wersji pomocniczej może wskazywać na zmiany powodujące niezgodność.

Korzystanie z klejnotu azure_sdk

Azure_sdk gem to pakiet zbiorczy wszystkich obsługiwanych klejnotów w zestawie SDK języka Ruby.

Możesz zainstalować zestaw zbiorczy azure_sdk za pomocą następującego polecenia:

gem install 'azure_sdk'

Profile

W przypadku profilów zawierających daty użyj innego profilu lub wersji zestawu SDK, zastąp datę w pliku V<date>_Hybrid. Na przykład w wersji 2008 profil to 2019_03_01, a ciąg staje się ciągiem V2019_03_01_Hybrid. Należy pamiętać, że czasami zespół zestawu SDK zmienia nazwę pakietów, więc po prostu zastąpienie daty ciągu inną datą może nie działać. Zapoznaj się z poniższą tabelą, aby zapoznać się z skojarzeniem profilów i wersji usługi Azure Stack.

Możesz również użyć latest zamiast daty.

Wersja usługi Azure Stack Profil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Aby uzyskać więcej informacji na temat profilów usługi Azure Stack Hub i interfejsu API, zobacz Podsumowanie profilów interfejsu API.

Zobacz Profile zestawu SDK języka Ruby.

Subskrypcja

Jeśli nie masz jeszcze subskrypcji, utwórz subskrypcję i zapisz identyfikator subskrypcji do późniejszego użycia. Aby uzyskać informacje na temat tworzenia subskrypcji, zobacz ten dokument.

Jednostka usługi

Jednostka usługi i skojarzone z nią informacje o środowisku powinny zostać utworzone i zapisane gdzieś. Zalecana jest jednostka usługi z rolą owner , ale w zależności od próbki contributor rola może wystarczyć. Zapoznaj się z poniższą tabelą, aby uzyskać wymagane wartości.

Wartość Zmienne środowiskowe Opis
Identyfikator dzierżawy AZURE_TENANT_ID Identyfikator dzierżawy usługi Azure Stack Hub.
Identyfikator klienta AZURE_CLIENT_ID Identyfikator aplikacji jednostki usługi zapisany podczas tworzenia jednostki usługi w poprzedniej sekcji tego artykułu.
Identyfikator subskrypcji AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji służy do uzyskiwania dostępu do ofert w usłudze Azure Stack Hub.
Klucz tajny klienta AZURE_CLIENT_SECRET Wpis tajny aplikacji jednostki usługi zapisany podczas tworzenia jednostki usługi.
punkt końcowy Resource Manager ARM_ENDPOINT Zobacz punkt końcowy usługi Azure Stack Hub Resource Manager.

Identyfikator dzierżawy

Aby znaleźć katalog lub identyfikator dzierżawy usługi Azure Stack Hub, postępuj zgodnie z instrukcjami w tym artykule.

Rejestrowanie dostawców zasobów

Zarejestruj wymaganych dostawców zasobów, postępując zgodnie z tym dokumentem. Ci dostawcy zasobów będą zobowiązani w zależności od przykładów, które chcesz uruchomić. Jeśli na przykład chcesz uruchomić przykładową maszynę wirtualną, Microsoft.Compute wymagana jest rejestracja dostawcy zasobów.

Punkt końcowy usługi Azure Stack Resource Manager

Azure Resource Manager (ARM) to struktura zarządzania, która umożliwia administratorom wdrażanie i monitorowanie zasobów platformy Azure oraz zarządzanie nimi. Usługa Azure Resource Manager może obsługiwać te zadania jako grupę, a nie pojedynczo w ramach jednej operacji. Informacje o metadanych można uzyskać z punktu końcowego Resource Manager. Punkt końcowy zwraca plik JSON z informacjami wymaganymi do uruchomienia kodu.

  • Element ResourceManagerEndpointUrl w zestawie Azure Stack Development Kit (ASDK) to: https://management.local.azurestack.external/.
  • Element ResourceManagerEndpointUrl w zintegrowanych systemach to: https://management.region.<fqdn>/, gdzie <fqdn> jest w pełni kwalifikowaną nazwą domeny.
  • Aby pobrać wymagane metadane: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Aby uzyskać informacje o dostępnych wersjach interfejsu API, zobacz Specyfikacje interfejsu API REST platformy Azure. Na przykład w 2020-09-01 wersji profilu można zmienić wartość na api-version2019-10-01 dla dostawcy microsoft.resourceszasobów .

Przykładowy kod 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"]
      }
}

Ustawianie zmiennych środowiskowych

Microsoft Windows

Aby ustawić zmienne środowiskowe, użyj następującego formatu w wierszu polecenia systemu Windows:

set AZURE_TENANT_ID=<YOUR_TENANT_ID>

systemy macOS, Linux i Unix

W systemach opartych na systemie Unix użyj następującego polecenia:

export AZURE_TENANT_ID=<YOUR_TENANT_ID>

Aby uzyskać więcej informacji na temat profilów usługi Azure Stack Hub i interfejsu API, zobacz Podsumowanie profilów interfejsu API.

Użycie profilu interfejsu API zestawu Azure Ruby SDK

Użyj następującego kodu, aby utworzyć wystąpienie klienta profilu. Ten parametr jest wymagany tylko w przypadku usługi Azure Stack Hub lub innych chmur prywatnych. Globalna platforma Azure ma już te ustawienia domyślnie.

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)

Klient profilu może służyć do uzyskiwania dostępu do poszczególnych dostawców zasobów, takich jak obliczenia, magazyn i sieć:

# 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

Definiowanie funkcji ustawień środowiska usługi Azure Stack Hub

Aby uwierzytelnić jednostkę usługi w środowisku usługi Azure Stack Hub, zdefiniuj punkty końcowe przy użyciu polecenia get_active_directory_settings(). Ta metoda używa wcześniej ustawionej zmiennej środowiskowej 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

Przykłady

Skorzystaj z poniższych przykładów w witrynie GitHub jako dokumentacji dotyczącej tworzenia rozwiązań przy użyciu profilów interfejsu API języka Ruby i usługi Azure Stack Hub:

Przykładowy menedżer zasobów i grupy

Aby uruchomić przykład, upewnij się, że zainstalowano język Ruby. Jeśli używasz Visual Studio Code, pobierz również rozszerzenie zestawu SDK języka Ruby.

Uwaga

Repozytorium przykładu to Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Sklonuj repozytorium:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Zainstaluj zależności przy użyciu pakietu:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Utwórz jednostkę usługi platformy Azure przy użyciu programu PowerShell i pobierz wymagane wartości.

    Aby uzyskać instrukcje dotyczące tworzenia jednostki usługi, zobacz Tworzenie jednostki usługi przy użyciu Azure PowerShell przy użyciu certyfikatu.

    Potrzebne są następujące wartości:

    • Identyfikator dzierżawy
    • Identyfikator klienta
    • Klucz tajny klienta
    • Identyfikator subskrypcji
    • punkt końcowy Resource Manager

    Ustaw następujące zmienne środowiskowe przy użyciu informacji pobranych z utworzonej jednostki usługi:

    • 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}

    Uwaga

    W systemie Windows użyj polecenia set zamiast export.

  4. Upewnij się, że zmienna lokalizacji jest ustawiona na lokalizację usługi Azure Stack Hub; na przykład LOCAL="local".

  5. Aby zastosować prawidłowe punkty końcowe usługi Active Directory, dodaj następujący wiersz kodu, jeśli używasz usługi Azure Stack Hub lub innych chmur prywatnych:

    active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
    
  6. W zmiennej options dodaj ustawienia usługi Active Directory i podstawowy adres URL, aby pracować z usługą Azure Stack Hub:

    options = {
    credentials: credentials,
    subscription_id: subscription_id,
    active_directory_settings: active_directory_settings,
    base_url: ENV['ARM_ENDPOINT']
    }
    
  7. Utwórz klienta profilu, który jest przeznaczony dla profilu usługi Azure Stack Hub:

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. Aby uwierzytelnić jednostkę usługi w usłudze Azure Stack Hub, należy zdefiniować punkty końcowe przy użyciu get_active_directory_settings(). Ta metoda używa wcześniej ustawionej zmiennej środowiskowej 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
    
  9. Uruchom przykład.

    bundle exec ruby example.rb
    

Następne kroki