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
oderV2019_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 Profilversion2020-09-01
für den Ressourcenanbietermicrosoft.resources
api-version
in2019-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:
- Verwalten von Azure-Ressourcen und -Ressourcengruppen mit Ruby.
- Manage virtual machines using Ruby (Verwalten von virtuellen Computern mit Ruby)
- Deploy an SSH Enabled VM with a Template in Ruby (Bereitstellen eines SSH-fähigen virtuellen Computers mit einer Vorlage in Ruby).
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.
Klonen Sie das Repository:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Installieren Sie die Abhängigkeiten per Bundle:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
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 vonexport
.Stellen Sie sicher, dass die Standortvariable auf Ihren Azure Stack Hub-Standort festgelegt ist, z. B.
LOCAL="local"
.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'])
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'] }
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)
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
Führen Sie das Beispiel aus.
bundle exec ruby example.rb
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für