Använda API-versionsprofiler med Ruby i Azure Stack Hub
Ruby- och API-versionsprofiler
Ruby SDK för Azure Stack Hub-Resource Manager innehåller verktyg som hjälper dig att skapa och hantera din infrastruktur. Resursprovidrar i SDK:et inkluderar Compute, Virtual Networks och Storage med Ruby-språket. API-profiler i Ruby SDK möjliggör hybridmolnutveckling genom att hjälpa dig att växla mellan globala Azure-resurser och resurser på Azure Stack Hub.
En API-profil är en kombination av resursprovidrar och tjänstversioner. Du kan använda en API-profil för att kombinera olika resurstyper.
- Om du vill använda de senaste versionerna av alla tjänster använder du den senaste profilen för Sammanslagningspärlan för Azure SDK.
- Profiler namnges efter datum i format som
V2020_09_01_Hybrid
ellerV2019_03_01_Hybrid
. - Om du vill använda den senaste API-versionen av en tjänst använder du den senaste profilen för den specifika gemen. Om du till exempel vill använda den senaste API-versionen av beräkningstjänsten ensam använder du den senaste profilen för beräkningspärlan .
- Om du vill använda en specifik API-version för en tjänst använder du de specifika API-versioner som definierats i gemen.
Installera Azure Ruby SDK
Installera Git.
Installera Ruby.
När du installerar väljer du Lägg till Ruby i PATH-variabeln.
När du uppmanas att göra det under Ruby-installationen installerar du utvecklingspaketet.
Installera sedan bundler med följande kommando:
Gem install bundler
Om det inte är tillgängligt skapar du en prenumeration och sparar prenumerations-ID:t som ska användas senare. Instruktioner för att skapa en prenumeration finns i artikeln Skapa prenumerationer för erbjudanden i Azure Stack Hub .
Skapa ett huvudnamn för tjänsten och spara dess ID och hemlighet. Instruktioner för att skapa ett tjänsthuvudnamn för Azure Stack Hub finns i artikeln Använda en appidentitet för att komma åt resurser .
Kontrollera att tjänstens huvudnamn har rollen deltagare/ägare tilldelad i din prenumeration. Instruktioner för hur du tilldelar en roll till ett huvudnamn för tjänsten finns i artikeln Använda en appidentitet för att komma åt resurser .
Installera RubyGem-paketen
Du kan installera Azure RubyGem-paketen direkt.
gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network
Eller använd dem i din Gemfile.
gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'
Azure Resource Manager Ruby SDK är i förhandsversion och kommer sannolikt att ha icke-bakåtkompatibla gränssnittsändringar i kommande versioner. Ett ökat tal i delversionen kan tyda på icke-bakåtkompatibla ändringar.
Använd azure_sdk gem
Azure_sdk gem är en sammanslagning av alla gems som stöds i Ruby SDK.
Du kan installera azure_sdk sammanslagningspärla med följande kommando:
gem install 'azure_sdk'
Profiler
För profiler som innehåller datum ersätter du datumet i V<date>_Hybrid
om du vill använda en annan SDK-profil eller -version. För 2008-versionen är 2019_03_01
till exempel profilen och strängen blir V2019_03_01_Hybrid
. Observera att SDK-teamet ibland ändrar namnet på paketen, så att helt enkelt ersätta datumet för en sträng med ett annat datum kanske inte fungerar. Se följande tabell för association av profiler och Azure Stack-versioner.
Du kan också använda latest
i stället för datumet.
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 |
Mer information om Azure Stack Hub- och API-profiler finns i Sammanfattning av API-profiler.
Prenumeration
Om du inte redan har en prenumeration skapar du en prenumeration och sparar prenumerations-ID:t som ska användas senare. Information om hur du skapar en prenumeration finns i det här dokumentet.
Tjänstens huvudnamn
Ett huvudnamn för tjänsten och dess associerade miljöinformation bör skapas och sparas någonstans. Tjänstens huvudnamn med owner
roll rekommenderas, men beroende på exemplet kan det räcka med en contributor
roll. Se tabellen nedan för de värden som krävs.
Värde | Miljövariabler | Description |
---|---|---|
Klientorganisations-ID | AZURE_TENANT_ID |
Ditt Klient-ID för Azure Stack Hub. |
Klient-ID | AZURE_CLIENT_ID |
App-ID:t för tjänstens huvudnamn sparades när tjänstens huvudnamn skapades i föregående avsnitt i den här artikeln. |
Prenumerations-ID:t | AZURE_SUBSCRIPTION_ID |
Du använder prenumerations-ID:t för att komma åt erbjudanden i Azure Stack Hub. |
Client Secret (Klienthemlighet) | AZURE_CLIENT_SECRET |
Apphemligheten för tjänstens huvudnamn sparades när tjänstens huvudnamn skapades. |
Resource Manager slutpunkt | ARM_ENDPOINT |
Se Azure Stack Hub-Resource Manager slutpunkt. |
Klientorganisations-ID
Följ anvisningarna i den här artikeln för att hitta katalogen eller klientorganisations-ID:t för din Azure Stack Hub.
Registrera resursprovidrar
Registrera nödvändiga resursprovidrar genom att följa det här dokumentet. Dessa resursprovidrar krävs beroende på vilka exempel du vill köra. Om du till exempel vill köra ett virtuellt datorexempel krävs registrering av Microsoft.Compute
resursprovidern.
Azure Stack Resource Manager-slutpunkt
Azure Resource Manager (ARM) är ett hanteringsramverk som gör det möjligt för administratörer att distribuera, hantera och övervaka Azure-resurser. Azure Resource Manager kan hantera dessa uppgifter som en grupp, snarare än individuellt, i en enda åtgärd. Du kan hämta metadatainformationen från Resource Manager slutpunkten. Slutpunkten returnerar en JSON-fil med den information som krävs för att köra koden.
- ResourceManagerEndpointUrl i Azure Stack Development Kit (ASDK) är:
https://management.local.azurestack.external/
. - ResourceManagerEndpointUrl i integrerade system är:
https://management.region.<fqdn>/
, där<fqdn>
är ditt fullständigt kvalificerade domännamn. - Så här hämtar du de metadata som krävs:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Tillgängliga API-versioner finns i Specifikationer för Rest API i Azure. I profilversion kan du t.ex2020-09-01
. ändraapi-version
till2019-10-01
för resursprovidernmicrosoft.resources
.
Exempel på 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"]
}
}
Ange miljövariabler
Microsoft Windows
Om du vill ange miljövariablerna använder du följande format i en Windows-kommandotolk:
set AZURE_TENANT_ID=<YOUR_TENANT_ID>
macOS-, Linux- och Unix-baserade system
Använd följande kommando i Unix-baserade system:
export AZURE_TENANT_ID=<YOUR_TENANT_ID>
Mer information om Azure Stack Hub- och API-profiler finns i Sammanfattning av API-profiler.
Azure Ruby SDK API-profilanvändning
Använd följande kod för att instansiera en profilklient. Den här parametern krävs endast för Azure Stack Hub eller andra privata moln. Global Azure har redan de här inställningarna som standard.
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)
Profilklienten kan användas för att komma åt enskilda resursprovidrar, till exempel Compute, Storage och 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
Definiera miljöinställningsfunktioner för Azure Stack Hub
Om du vill autentisera tjänstens huvudnamn till Azure Stack Hub-miljön definierar du slutpunkterna med .get_active_directory_settings()
Den här metoden använder ARM_Endpoint miljövariabeln som du angav tidigare:
# 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
Exempel
Använd följande exempel på GitHub som referenser för att skapa lösningar med Ruby- och Azure Stack Hub API-profiler:
- Hantera Azure-resurser och resursgrupper med Ruby.
- Hantera virtuella datorer med Ruby
- Distribuera en SSH-aktiverad virtuell dator med en mall i Ruby.
Exempel på resurshanterare och grupper
Kontrollera att du har installerat Ruby för att köra exemplet. Om du använder Visual Studio Code laddar du även ned Ruby SDK-tillägget.
Anteckning
Lagringsplatsen för exemplet är Hybrid-Resource-Manager-Ruby-Resources-And-Groups.
Klona lagringsplatsen:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Installera beroendena med hjälp av paketet:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
Skapa ett Huvudnamn för Azure-tjänsten med PowerShell och hämta de värden som behövs.
Anvisningar om hur du skapar ett huvudnamn för tjänsten finns i Använda Azure PowerShell för att skapa ett huvudnamn för tjänsten med ett certifikat.
Värden som behövs är:
- Klientorganisations-ID
- Klient-ID
- Klienthemlighet
- Prenumerations-ID:t
- Resource Manager slutpunkt
Ange följande miljövariabler med hjälp av informationen som hämtats från tjänstens huvudnamn som du skapade:
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}
Anteckning
I Windows använder du
set
i stället förexport
.Kontrollera att platsvariabeln är inställd på din Azure Stack Hub-plats. till exempel
LOCAL="local"
.Om du vill rikta in dig på rätt active directory-slutpunkter lägger du till följande kodrad om du använder Azure Stack Hub eller andra privata moln:
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
I variabeln
options
lägger du till Active Directory-inställningarna och bas-URL:en för att arbeta med Azure Stack Hub:options = { credentials: credentials, subscription_id: subscription_id, active_directory_settings: active_directory_settings, base_url: ENV['ARM_ENDPOINT'] }
Skapa en profilklient som riktar sig till Azure Stack Hub-profilen:
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
För att autentisera tjänstens huvudnamn med Azure Stack Hub ska slutpunkterna definieras med hjälp av get_active_directory_settings(). Den här metoden använder ARM_Endpoint miljövariabeln som du angav tidigare:
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
Kör exemplet.
bundle exec ruby example.rb
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för