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 nebo V2019_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_01profil 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.

Viz profily sady Ruby SDK.

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 ve 2020-09-01 verzi profilu můžete změnit api-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:

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.

  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. 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ísto export.

  4. Ujistěte se, že je proměnná umístění 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. 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
    
  9. Spusťte ukázku.

    bundle exec ruby example.rb
    

Další kroky