Použití profilů verzí rozhraní API s Ruby ve službě Azure Stack Hub
Profily verzí ruby a rozhraní API
Sada Ruby SDK pro službu Azure Stack Hub Resource Manager poskytuje nástroje, které vám pomůžou sestavovat a spravovat infrastrukturu. Poskytovatelé prostředků v sadě SDK zahrnují výpočetní prostředky, virtuální sítě a Storage s jazykem Ruby. Profily rozhraní API v sadě Ruby SDK umožňují vývoj hybridního cloudu tím, že pomáhá přepínat mezi globálními prostředky Azure a prostředky ve službě Azure Stack Hub.
Profil rozhraní API je kombinací poskytovatelů prostředků a verzí služeb. Profil rozhraní API můžete použít ke kombinování různých typů prostředků.
- Pokud chcete použít nejnovější verze všech služeb, použijte nejnovější profil kumulativního gemu sady Azure SDK.
- Profily jsou pojmenované podle data ve formátu, například
V2020_09_01_Hybrid
neboV2019_03_01_Hybrid
. - Pokud chcete použít nejnovější verzi rozhraní API služby, použijte nejnovější profil konkrétního klenotu. Pokud chcete například použít nejnovější verzi výpočetní služby api-version , použijte nejnovější profil výpočetního gemu.
- Pokud chcete pro službu použít konkrétní verzi rozhraní API , použijte konkrétní verze rozhraní API definované uvnitř klenotu.
Instalace sady Azure Ruby SDK
Nainstalujte Git.
Nainstalujte Ruby.
Při instalaci zvolte Přidat Ruby do proměnné PATH.
Po zobrazení výzvy během instalace Ruby nainstalujte vývojovou sadu.
Dále nainstalujte bundler pomocí následujícího příkazu:
Gem install bundler
Pokud není k dispozici, vytvořte předplatné a uložte ID předplatného, které se použije později. Pokyny k vytvoření předplatného najdete v článku Vytvoření předplatných pro nabídky ve službě Azure Stack Hub .
Vytvořte instanční objekt a uložte jeho ID a tajný klíč. Pokyny k vytvoření instančního objektu pro službu Azure Stack Hub najdete v článku Použití identity aplikace pro přístup k prostředkům .
Ujistěte se, že má váš instanční objekt přiřazenou roli přispěvatele nebo vlastníka vašeho předplatného. Pokyny k přiřazení role instančnímu objektu najdete v článku Použití identity aplikace pro přístup k prostředkům .
Instalace balíčků RubyGem
Balíčky Azure RubyGem můžete nainstalovat přímo.
gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network
Nebo je použijte ve svém souboru Gemfile.
gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'
Sada Azure Resource Manager Ruby SDK je ve verzi Preview a pravděpodobně bude mít zásadní změny rozhraní v nadcházejících verzích. Zvýšené číslo v podverzi může znamenat zásadní změny.
Použití klenotu azure_sdk
Azure_sdk gem je souhrn všech podporovaných drahokamů v sadě Ruby SDK.
Kumulativní gem azure_sdk můžete nainstalovat pomocí následujícího příkazu:
gem install 'azure_sdk'
Profily
Pro profily obsahující kalendářní data použijte jiný profil nebo verzi sady SDK, nahraďte datum v V<date>_Hybrid
. Například pro verzi 2008 je 2019_03_01
profil a řetězec se stane V2019_03_01_Hybrid
. Všimněte si, že někdy tým sady SDK změní název balíčků, takže jednoduše nahrazení data řetězce jiným datem nemusí fungovat. V následující tabulce najdete přidružení profilů a verzí služby Azure Stack.
Místo data můžete použít latest
také.
Verze služby Azure Stack | Profil |
---|---|
2108 | 2020_09_01 |
2102 | 2020_09_01 |
2008 | 2019_03_01 |
Další informace o profilech služby Azure Stack Hub a rozhraní API najdete v části Souhrn profilů rozhraní API.
Předplatné
Pokud ještě nemáte předplatné, vytvořte předplatné a uložte ID předplatného, které se použije později. Informace o tom, jak vytvořit předplatné, najdete v tomto dokumentu.
Instanční objekt
Instanční objekt a související informace o prostředí by se měly vytvořit a uložit někam. Instanční objekt s owner
rolí se doporučuje, ale v závislosti na ukázce contributor
může stačit role. Požadované hodnoty najdete v následující tabulce.
Hodnota | Proměnné prostředí | Description |
---|---|---|
ID tenanta | AZURE_TENANT_ID |
ID tenanta služby Azure Stack Hub |
ID klienta | AZURE_CLIENT_ID |
ID aplikace instančního objektu uložené při vytvoření instančního objektu v předchozí části tohoto článku. |
ID předplatného | AZURE_SUBSCRIPTION_ID |
ID předplatného použijete pro přístup k nabídkám ve službě Azure Stack Hub. |
Tajný klíč klienta | AZURE_CLIENT_SECRET |
Tajný kód aplikace instančního objektu uložený při vytvoření instančního objektu |
koncový bod Resource Manager | ARM_ENDPOINT |
Podívejte se na koncový bod služby Azure Stack Hub Resource Manager. |
ID tenanta
Pokud chcete najít ID adresáře nebo tenanta pro službu Azure Stack Hub, postupujte podle pokynů v tomto článku.
Registrace poskytovatelů prostředků
Podle tohoto dokumentu zaregistrujte požadované poskytovatele prostředků. Tito poskytovatelé prostředků se budou vyžadovat v závislosti na ukázkách, které chcete spustit. Pokud například chcete spustit ukázku virtuálního počítače, Microsoft.Compute
vyžaduje se registrace poskytovatele prostředků.
Koncový bod Azure Stack Resource Manageru
Azure Resource Manager (ARM) je architektura pro správu, která správcům umožňuje nasazovat, spravovat a monitorovat prostředky Azure. Azure Resource Manager může tyto úlohy zpracovávat jako skupinu, nikoli jednotlivě, v jedné operaci. Informace o metadatech můžete získat z Resource Manager koncového bodu. Koncový bod vrátí soubor JSON s informacemi potřebnými ke spuštění kódu.
- ResourceManagerEndpointUrl v sadě Azure Stack Development Kit (ASDK) je:
https://management.local.azurestack.external/
. - ResourceManagerEndpointUrl v integrovaných systémech je:
https://management.region.<fqdn>/
, kde<fqdn>
je váš plně kvalifikovaný název domény. - Chcete-li načíst požadovaná metadata:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Dostupné verze rozhraní API najdete ve specifikacích rozhraní AZURE REST API. Například ve2020-09-01
verzi profilu můžete změnitapi-version
nastavení2019-10-01
poskytovatele prostředkůmicrosoft.resources
.
Ukázkový 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"]
}
}
Nastavení proměnných prostředí
Microsoft Windows
Pokud chcete nastavit proměnné prostředí, použijte v příkazovém řádku Windows následující formát:
set AZURE_TENANT_ID=<YOUR_TENANT_ID>
systémy macOS, Linux a Unix
V systémech Unix použijte následující příkaz:
export AZURE_TENANT_ID=<YOUR_TENANT_ID>
Další informace o profilech služby Azure Stack Hub a rozhraní API najdete v souhrnu profilů rozhraní API.
Využití profilu rozhraní API sady Azure Ruby SDK
Pomocí následujícího kódu vytvořte instanci klienta profilu. Tento parametr se vyžaduje jenom pro Službu Azure Stack Hub nebo jiné privátní cloudy. Globální Azure tato nastavení už ve výchozím nastavení má.
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 se dá použít pro přístup k jednotlivým poskytovatelům prostředků, jako jsou výpočty, Storage a síť:
# 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
Definování funkcí nastavení prostředí služby Azure Stack Hub
Pokud chcete ověřit instanční objekt v prostředí služby Azure Stack Hub, definujte koncové body pomocí get_active_directory_settings()
. Tato metoda používá proměnnou prostředí ARM_Endpoint , kterou jste nastavili dříve:
# 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
ukázky
V GitHub použijte následující ukázky jako reference pro vytváření řešení pomocí profilů rozhraní API Ruby a Azure Stack Hub:
- Správa prostředků a skupin prostředků Azure pomocí Ruby
- Správa virtuálních počítačů pomocí Ruby
- Nasaďte virtuální počítač s podporou SSH pomocí šablony v Ruby.
Ukázkový správce prostředků a skupiny
Pokud chcete ukázku spustit, ujistěte se, že jste nainstalovali Ruby. Pokud používáte Visual Studio Code, stáhněte si také rozšíření Ruby SDK.
Poznámka
Úložiště ukázky je Hybrid-Resource-Manager-Ruby-Resources-And-Groups.
Naklonujte úložiště:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Nainstalujte závislosti pomocí sady:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
Vytvořte instanční objekt Azure pomocí PowerShellu a načtěte potřebné hodnoty.
Pokyny k vytvoření instančního objektu najdete v tématu Použití Azure PowerShell k vytvoření instančního objektu s certifikátem.
Potřebné hodnoty jsou:
- ID tenanta
- ID klienta
- Tajný klíč klienta
- ID předplatného
- koncový bod Resource Manager
Nastavte následující proměnné prostředí pomocí informací načtených z instančního objektu, který jste vytvořili:
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}
Poznámka
Na Windows použijte
set
místoexport
.Ujistěte se, že je proměnná umístění nastavená na umístění služby Azure Stack Hub; například
LOCAL="local"
.Pokud chcete cílit na správné koncové body služby Active Directory, přidejte následující řádek kódu, pokud používáte Službu Azure Stack Hub nebo jiné privátní cloudy:
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
options
Do proměnné přidejte nastavení služby Active Directory a základní adresu URL pro práci se službou Azure Stack Hub:options = { credentials: credentials, subscription_id: subscription_id, active_directory_settings: active_directory_settings, base_url: ENV['ARM_ENDPOINT'] }
Vytvořte klienta profilu, který cílí na profil služby Azure Stack Hub:
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
Pokud chcete ověřit instanční objekt ve službě Azure Stack Hub, měly by se koncové body definovat pomocí get_active_directory_settings(). Tato metoda používá proměnnou prostředí ARM_Endpoint , kterou jste nastavili dříve:
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
Spusťte ukázku.
bundle exec ruby example.rb