Použití profilů verzí rozhraní API s Ruby ve službě Azure Stack Hub

Ruby a profily verzí 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. Mezi poskytovatele prostředků v sadě SDK patří Compute, Virtual Networks a Storage s jazykem Ruby. Profily rozhraní API v sadě Ruby SDK umožňují vývoj hybridního cloudu tím, že pomáhají 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žívat nejnovější verze všech služeb, použijte profil Nejnovější kumulativní sady Azure SDK.
  • Profily jsou pojmenované podle data ve formátu, jako V2020_09_01_Hybrid je nebo V2019_03_01_Hybrid.
  • Pokud chcete použít nejnovější verzi služby api , použijte profil Nejnovější konkrétního gemu. Pokud například chcete použít samotnou nejnovější verzi rozhraní API výpočetní služby, použijte profil Nejnovějšívýpočetního objektu.
  • Pokud chcete pro službu použít konkrétní verzi rozhraní API , použijte konkrétní verze rozhraní API definované v gemu.

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 sadu Development Kit.

    • 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, abyste ho mohli použít později. Pokyny k vytvoření předplatného najdete v článku Vytvář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ý kód. Pokyny k vytvoření instančního objektu pro Azure Stack Hub najdete v článku Použití identity aplikace pro přístup k prostředkům .

  • Ujistěte se, že váš instanční objekt má ve vašem předplatném přiřazenou roli přispěvatele nebo vlastníka. 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 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 v nadcházejících verzích bude pravděpodobně obsahovat zásadní změny rozhraní. Vyšší počet v podverzi může značit změny způsobující chybu.

Použití azure_sdk gemu

Azure_sdk gem je souhrnem všech podporovaných drahokamů v sadě Ruby SDK.

Kumulativní azure_sdk gem můžete nainstalovat pomocí následujícího příkazu:

gem install 'azure_sdk'

Profily

Pokud chcete použít jiný profil nebo verzi sady SDK, nahraďte u profilů obsahujících kalendářní data v V<date>_Hybridsouboru . Například pro verzi 2008 je 2019_03_01profil a řetězec se změní V2019_03_01_Hybridna . Všimněte si, že někdy tým SADY SDK změní název balíčků, takže pouhé nahrazení data řetězce jiným datem nemusí fungovat. V následující tabulce najdete informace o přidružení profilů a verzí služby Azure Stack.

Místo data můžete také použít latest .

Verze služby 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

Další informace o službě Azure Stack Hub a profilech rozhraní API najdete v tématu Souhrn profilů rozhraní API.

Viz Profily sady Ruby SDK.

Předplatné

Pokud ještě předplatné nemáte, vytvořte předplatné a uložte ID předplatného, abyste ho mohli použít později. Informace o tom, jak vytvořit předplatné, najdete v tomto dokumentu.

Instanční objekt

Instanční objekt a informace o jeho přidruženém prostředí by se měly někde vytvořit a uložit. Doporučuje se instanční objekt s owner rolí, 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 vašeho 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 Viz 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ů budou vyžadováni 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 rámci jedné operace. Informace o metadatech můžete získat z koncového bodu Resource Manager. 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 plně kvalifikovaný název domény.
  • Načtení požadovaných metadat: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Dostupné verze rozhraní API najdete v tématu Specifikace rozhraní Azure Rest API. Například ve 2020-09-01 verzi profilu můžete změnit api-version na 2019-10-01 pro poskytovatele microsoft.resourcesprostředků .

Ukázkový kód 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 na 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 službě Azure Stack Hub a profilech rozhraní API najdete v části Souhrn profilů rozhraní API.

Využití profilu rozhraní API sady Azure Ruby SDK

K vytvoření instance klienta profilu použijte následující kód. Tento parametr se vyžaduje jenom pro Azure Stack Hub nebo jiné privátní cloudy. Globální Azure už má tato nastavení ve výchozím nastavení.

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)

Klienta profilu je možné použít pro přístup k jednotlivým poskytovatelům prostředků, jako jsou výpočetní prostředky, úložiště 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

Následující ukázky na GitHubu použijte jako reference pro vytváření řešení s využitím profilů rozhraní API ruby a služby Azure Stack Hub:

Ukázkový resource manager 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ě pro ukázku je Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Naklonujte úložiště:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Nainstalujte závislosti pomocí sady:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Pomocí PowerShellu vytvořte instanční objekt Azure 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

    Pomocí informací získaných z vytvořeného instančního objektu nastavte následující proměnné prostředí:

    • 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

    Ve Windows použijte set místo .export

  4. Ujistěte se, že proměnná umístění je nastavená na umístění služby Azure Stack Hub. Například LOCAL="local".

  5. 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'])
    
  6. 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']
    }
    
  7. 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)
    
  8. K ověření instančního objektu ve službě Azure Stack Hub je potřeba 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
    
  9. Spusťte ukázku.

    bundle exec ruby example.rb
    

Další kroky