Freigeben über


Verwenden von API-Versionsprofilen mit Ruby in Azure Stack Hub

Ruby und API-Versionsprofile

Das Ruby-SDK für den Azure Stack Hub Resource Manager umfasst Tools zum Erstellen und Verwalten Ihrer Infrastruktur. Im SDK enthaltene Ressourcenanbieter sind beispielsweise Compute, Virtual Network und Storage mit der Sprache Ruby. API-Profile im Ruby-SDK ermöglichen die Entwicklung einer Hybrid Cloud, indem Ihnen ermöglicht wird, zwischen globalen Azure-Ressourcen und Ressourcen unter Azure Stack Hub zu wechseln.

Ein API-Profil ist eine Kombination aus Ressourcenanbietern und Dienstversionen. Sie können ein API-Profil verwenden, um unterschiedliche Ressourcentypen zu kombinieren.

  • Verwenden Sie das Profil Latest des Azure SDK-Rollup-Gem, um die aktuellen Versionen aller Dienste zu nutzen.
  • Profile werden nach dem Datum im Format wie V2020_09_01_Hybrid oder V2019_03_01_Hybrid benannt.
  • Verwenden Sie das Profil Latest des spezifischen Gem, um die aktuelle API-Version eines Diensts zu nutzen. Wenn Sie beispielsweise nur die aktuelle API-Version des Computediensts nutzen möchten, können Sie das Profil Latest des Gem Compute verwenden.
  • Verwenden Sie die im Gem definierten spezifischen API-Versionen, um eine bestimmte API-Version für einen Dienst zu nutzen.

Installieren des Azure Ruby-SDK

  • Installieren Sie Git.

  • Ruby installieren.

    • Wählen Sie bei der Installation die Option Ruby zur Variable „PATH“ hinzufügen aus.

    • Installieren Sie das Development Kit, wenn Sie während der Ruby-Installation dazu aufgefordert werden.

    • Installieren Sie als Nächstes den Bundler, indem Sie den folgenden Befehl verwenden:

      Gem install bundler
      
  • Erstellen Sie ein Abonnement, wenn keins verfügbar ist, und speichern Sie die Abonnement-ID zur späteren Verwendung. Eine Anleitung zum Erstellen eines Abonnements finden Sie im Artikel Erstellen von Abonnements für Angebote in Azure Stack Hub.

  • Erstellen Sie einen Dienstprinzipal, und speichern Sie die ID und das Geheimnis. Eine Anleitung zum Erstellen eines Dienstprinzipals für Azure Stack Hub finden Sie im Artikel Verwenden einer App-Identität für den Ressourcenzugriff.

  • Stellen Sie sicher, dass Ihrem Dienstprinzipal die Rolle „Mitwirkender“ bzw. „Besitzer“ für Ihr Abonnement zugewiesen ist. Eine Anleitung zum Zuweisen einer Rolle zu einem Dienstprinzipal finden Sie im Artikel Verwenden einer App-Identität für den Ressourcenzugriff.

Installieren der RubyGem-Pakete

Sie können die Azure-RubyGem-Pakete direkt installieren.

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

Oder verwenden Sie sie in Ihrer Gemfile-Datei.

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

Das Azure Resource Manager Ruby SDK befindet sich in der Vorschauphase und es kommt in den nächsten Releases voraussichtlich zu grundlegenden Änderungen der Oberfläche. Eine höhere Zahl, die für die Nebenversion angegeben ist, kann auf grundlegende Änderungen hinweisen.

Verwendung des Gem „azure_sdk“

Das Gem azure_sdk ist ein Rollup aller unterstützten Gems im Ruby SDK.

Sie können das Rollup-Gem „azure_sdk“ mit dem folgenden Befehl installieren:

gem install 'azure_sdk'

Profiles

Ersetzen Sie bei Profilen, die Datumsangaben enthalten, das Datum in V<date>_Hybrid, um ein anderes SDK-Profil oder eine andere SDK-Version zu verwenden. Für die Version 2008 lautet das Profil beispielsweise 2019_03_01, und die Zeichenfolge wird zu V2019_03_01_Hybrid. Beachten Sie, dass das SDK-Team manchmal den Namen der Pakete ändert, sodass das einfache Ersetzen des Datums einer Zeichenfolge durch ein anderes Datum möglicherweise nicht funktioniert. Informationen zur Zuordnung zwischen Profilen und Azure Stack-Versionen finden Sie in der folgenden Tabelle.

Sie können auch latest anstelle des Datums verwenden.

Azure Stack-Version 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

Weitere Informationen zu Azure Stack Hub und API-Profilen finden Sie in der Zusammenfassung zu API-Profilen.

Weitere Informationen finden Sie unter Ruby SDK-Profile.

Subscription

Wenn Sie noch nicht über ein Abonnement verfügen, erstellen Sie ein Abonnement, und speichern Sie die Abonnement-ID zur späteren Verwendung. Weitere Informationen zum Erstellen eines Abonnements finden Sie in diesem Dokument.

Dienstprinzipal

Ein Dienstprinzipal und seine zugehörigen Umgebungsinformationen sollten erstellt und an einem Ort gespeichert werden. Ein Dienstprinzipal mit der Rolle owner wird empfohlen, aber je nach Beispiel kann eine contributor-Rolle ausreichen. Die erforderlichen Werte finden Sie in der folgenden Tabelle.

Wert Umgebungsvariablen BESCHREIBUNG
Mandanten-ID AZURE_TENANT_ID Ihre Mandanten-ID für Azure Stack Hub.
Client-ID AZURE_CLIENT_ID Die Anwendungs-ID des Dienstprinzipals, die beim Erstellen des Dienstprinzipals im vorherigen Abschnitt dieses Artikels gespeichert wurde.
Abonnement-ID AZURE_SUBSCRIPTION_ID Sie verwenden die Abonnement-ID, um in Azure Stack Hub auf Angebote zuzugreifen.
Geheimer Clientschlüssel AZURE_CLIENT_SECRET Das App-Geheimnis des Dienstprinzipals, das bei der Erstellung des Dienstprinzipals gespeichert wurde.
Resource Manager-Endpunkt ARM_ENDPOINT Siehe Der Resource Manager-Endpunkt von Azure Stack Hub.

Mandanten-ID

Folgen Sie den Anweisungen in diesem Artikel, um das Verzeichnis oder die Mandanten-ID für Ihre Azure Stack Hub-Instanz zu suchen.

Registrieren von Ressourcenanbietern

Registrieren Sie die erforderlichen Ressourcenanbieter, indem Sie dieses Dokument befolgen. Diese Ressourcenanbieter sind abhängig von den Beispielen, die Sie ausführen möchten, erforderlich. Wenn Sie beispielsweise ein VM-Beispiel ausführen möchten, ist die Registrierung des Ressourcenanbieters Microsoft.Compute erforderlich.

Azure Stack Resource Manager-Endpunkt

Azure Resource Manager (ARM) ist ein Verwaltungsframework, mit dem Administratoren Azure-Ressourcen bereitstellen, verwalten und überwachen können. Azure Resource Manager kann diese Aufgaben als Gruppe – anstatt einzeln – in einem gemeinsamen Vorgang verarbeiten. Sie können die Metadateninformationen vom Resource Manager-Endpunkt abrufen. Der Endpunkt gibt eine JSON-Datei mit den zum Ausführen des Codes erforderlichen Informationen zurück.

  • Der ResourceManagerEndpointUrl-Wert im Azure Stack Development Kit (ASDK) lautet: https://management.local.azurestack.external/.
  • Die ResourceManagerUrl in integrierten Systemen lautet https://management.region.<fqdn>/, wobei <fqdn> Ihr vollqualifizierter Domänenname ist.
  • Zum Abrufen der erforderlichen Metadaten: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Verfügbare API-Versionen finden Sie unter Azure REST-API-Spezifikationen. Beispielsweise können Sie in der Profilversion 2020-09-01 für den Ressourcenanbieter microsoft.resourcesapi-version in 2019-10-01 ändern.

JSON-Beispielcode:

{
   "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"]
      }
}

Festlegen von Umgebungsvariablen

Microsoft Windows

Verwenden Sie das folgende Format, um die Umgebungsvariablen in der Windows-Eingabeaufforderung festzulegen:

set AZURE_TENANT_ID=<YOUR_TENANT_ID>

macOS-, Linux- und Unix-basierte Systeme

In Unix-basierten Systemen verwenden Sie den folgenden Befehl:

export AZURE_TENANT_ID=<YOUR_TENANT_ID>

Weitere Informationen zu Azure Stack Hub und API-Profilen finden Sie in der Zusammenfassung zu API-Profilen.

Verwendung des API-Profils aus dem Azure Ruby-SDK

Verwenden Sie den folgenden Code, um einen Profilclient zu instanziieren. Dieser Parameter ist nur für Azure Stack Hub oder andere private Clouds erforderlich. Für Azure sind diese Einstellungen standardmäßig global vorhanden.

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)

Der Profilclient kann verwendet werden, um auf einzelne Ressourcenanbieter zuzugreifen, z. B. Compute, Storage und Networking:

# 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

Definieren von Einstellungsfunktionen für die Azure Stack Hub-Umgebung

Definieren Sie die Endpunkte mit get_active_directory_settings(), um den Dienstprinzipal für die Azure Stack Hub-Umgebung zu authentifizieren. Bei dieser Methode wird die Umgebungsvariable ARM_Endpoint genutzt, die Sie zuvor festgelegt haben:

# 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

Beispiele

Verwenden Sie die folgenden Beispiele auf GitHub als Referenz für die Erstellung von Lösungen mit Ruby und Azure Stack Hub-API-Profilen:

Beispiel für Resource Manager und Gruppen

Vergewissern Sie sich, dass Sie Ruby installiert haben, um das Beispiel auszuführen. Wenn Sie Visual Studio Code verwenden, laden Sie zusätzlich das Ruby SDK als Erweiterung herunter.

Hinweis

Das Repository für das Beispiel ist Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Klonen Sie das Repository:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Installieren Sie die Abhängigkeiten per Bundle:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Erstellen Sie über PowerShell einen Azure-Dienstprinzipal, und rufen Sie die benötigten Werte ab.

    Eine Anleitung zur Erstellung eines Dienstprinzipals finden Sie unter Bereitstellen des Anwendungszugriffs auf Azure Stack.

    Benötigte Werte:

    • Mandanten-ID
    • Client-ID
    • Geheimer Clientschlüssel
    • Abonnement-ID
    • Resource Manager-Endpunkt

    Legen Sie die folgenden Umgebungsvariablen fest, indem Sie die Informationen verwenden, die Sie aus dem erstellten Dienstprinzipal abgerufen haben:

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

    Hinweis

    Verwenden Sie unter Windows set anstelle von export.

  4. Stellen Sie sicher, dass die Standortvariable auf Ihren Azure Stack Hub-Standort festgelegt ist, z. B. LOCAL="local".

  5. Fügen Sie die folgende Codezeile hinzu, wenn Sie Azure Stack Hub oder andere private Clouds nutzen, um auf die richtigen Active Directory-Endpunkte abzuzielen:

    active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
    
  6. Fügen Sie in der Variablen options die Active Directory-Einstellungen und die Basis-URL hinzu, um Azure Stack Hub zu verwenden:

    options = {
    credentials: credentials,
    subscription_id: subscription_id,
    active_directory_settings: active_directory_settings,
    base_url: ENV['ARM_ENDPOINT']
    }
    
  7. Erstellen Sie einen Profilclient, der auf das Azure Stack Hub-Profil ausgerichtet ist:

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. Für die Authentifizierung des Dienstprinzipals mit Azure Stack Hub sollten die Endpunkte mit get_active_directory_settings() definiert werden. Bei dieser Methode wird die Umgebungsvariable ARM_Endpoint genutzt, die Sie zuvor festgelegt haben:

    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. Führen Sie das Beispiel aus.

    bundle exec ruby example.rb
    

Nächste Schritte