API-verzióprofilok használata a Rubyval az Azure Stack Hubban

Ruby- és API-verzióprofilok

Az Azure Stack Hubhoz készült Ruby SDK Resource Manager eszközöket biztosít az infrastruktúra létrehozásához és kezeléséhez. Az SDK erőforrás-szolgáltatói közé tartozik a Compute, a Virtual Networks és a Storage, a Ruby nyelvvel. A Ruby SDK API-profiljai lehetővé teszik a hibrid felhőfejlesztést azáltal, hogy lehetővé teszik a globális Azure-erőforrások és -erőforrások közötti váltást az Azure Stack Hubon.

Az API-profil az erőforrás-szolgáltatók és a szolgáltatásverziók kombinációja. Az API-profilokkal különböző erőforrástípusokat kombinálhat.

  • Az összes szolgáltatás legújabb verzióinak használatához használja az Azure SDK összesítő drágaköve legújabb profilját.
  • A profilok neve dátum szerint, például V2020_09_01_Hybrid vagy V2019_03_01_Hybridformátumban van megadva.
  • Egy szolgáltatás legújabb API-verziójának használatához használja az adott gem Legújabb profilját. Ha például csak a compute szolgáltatás legújabb API-verzióját szeretné használni, használja a Compute gem Legújabb profilját.
  • Ha egy adott API-verziót szeretne használni egy szolgáltatáshoz, használja a gemben meghatározott API-verziókat.

Az Azure Ruby SDK telepítése

  • Telepítse a Gitet.

  • Telepítse a Rubyt.

    • Telepítéskor válassza a Ruby hozzáadása PATH változóhoz lehetőséget.

    • Amikor a Ruby telepítésekor a rendszer kéri, telepítse a fejlesztői készletet.

    • Ezután telepítse a kötegelőt a következő paranccsal:

      Gem install bundler
      
  • Ha nem érhető el, hozzon létre egy előfizetést, és mentse a később használni kívánt előfizetés-azonosítót. Az előfizetések létrehozására vonatkozó utasításokat az Előfizetések létrehozása ajánlatokhoz az Azure Stack Hubban című cikkben találja.

  • Hozzon létre egy szolgáltatásnevet, és mentse annak azonosítóját és titkos kódját. Az Azure Stack Hub szolgáltatásnevének létrehozására vonatkozó utasításokat az Alkalmazásidentitás használata erőforrások eléréséhez című cikkben találja.

  • Győződjön meg arról, hogy a szolgáltatásnévhez hozzá van rendelve a közreműködői/tulajdonosi szerepkör az előfizetéshez. A szerepkörök szolgáltatásnévhez való hozzárendelésére vonatkozó utasításokat az Alkalmazásidentitás használata erőforrások eléréséhez című cikkben találja.

A RubyGem-csomagok telepítése

Az Azure RubyGem-csomagokat közvetlenül is telepítheti.

gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network

Vagy használja őket a Gemfile-ban.

gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'

Az Azure Resource Manager Ruby SDK előzetes verzióban érhető el, és valószínűleg kompatibilitástörő felületi változásokon fog átesni a következő kiadásokban. Az alverzióban megnövekedett szám kompatibilitástörő változásokat jelezhet.

A azure_sdk gem használata

A azure_sdk gem a Ruby SDK összes támogatott drágaköveinek összesítése.

Az azure_sdk összesítő drágakövet a következő paranccsal telepítheti:

gem install 'azure_sdk'

Profilok

Dátumokat tartalmazó profilok esetén, ha másik SDK-profilt vagy -verziót szeretne használni, helyettesítse be a dátumot a következőben: V<date>_Hybrid. A 2008-es verzió esetében például a profil , 2019_03_01a sztring pedig a lesz V2019_03_01_Hybrid. Vegye figyelembe, hogy előfordulhat, hogy az SDK-csapat megváltoztatja a csomagok nevét, ezért előfordulhat, hogy egy sztring dátumának egy másik dátumra való lecserélése nem fog működni. A profilok és az Azure Stack-verziók társítását az alábbi táblázatban találja.

A dátum helyett használhatja is latest .

Azure Stack-verzió 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

További információ az Azure Stack Hubról és az API-profilokról: Az API-profilok összegzése.

Lásd: Ruby SDK-profilok.

Előfizetés

Ha még nem rendelkezik előfizetéssel, hozzon létre egy előfizetést, és mentse a később használni kívánt előfizetés-azonosítót. Az előfizetések létrehozásával kapcsolatos további információkért tekintse meg ezt a dokumentumot.

Szolgáltatásnév

A szolgáltatásnevet és a hozzá tartozó környezeti információkat valahol létre kell hozni és menteni kell. A szerepkörrel rendelkező owner szolgáltatásnév használata ajánlott, de a mintától függően elegendő lehet egy contributor szerepkör. A szükséges értékekért tekintse meg az alábbi táblázatot.

Érték Környezeti változók Description
Bérlőazonosító AZURE_TENANT_ID Az Azure Stack Hub-bérlő azonosítója.
Ügyfél-azonosító AZURE_CLIENT_ID A szolgáltatásnév alkalmazásazonosítója a szolgáltatásnév létrehozásakor lett mentve a cikk előző szakaszában.
Előfizetés azonosítója AZURE_SUBSCRIPTION_ID Az előfizetés-azonosítóval férhet hozzá az Azure Stack Hubban elérhető ajánlatokhoz.
Titkos ügyfélkulcs AZURE_CLIENT_SECRET A szolgáltatásnév létrehozásakor mentett egyszerű alkalmazáskulcs.
Resource Manager végpont ARM_ENDPOINT Lásd: Az Azure Stack Hub Resource Manager végpontja.

Bérlőazonosító

Az Azure Stack Hub címtár- vagy bérlőazonosítójának megkereséséhez kövesse az ebben a cikkben található utasításokat.

Erőforrás-szolgáltatók regisztrálása

Regisztrálja a szükséges erőforrás-szolgáltatókat a dokumentum követésével. Ezekre az erőforrás-szolgáltatókra a futtatni kívánt mintáktól függően lesz szükség. Ha például virtuálisgép-mintát szeretne futtatni, az Microsoft.Compute erőforrás-szolgáltató regisztrációjára van szükség.

Azure Stack Resource Manager-végpont

Az Azure Resource Manager (ARM) egy felügyeleti keretrendszer, amely lehetővé teszi a rendszergazdák számára az Azure-erőforrások üzembe helyezését, kezelését és monitorozását. Az Azure Resource Manager ezeket a feladatokat nem egyenként, hanem csoportként tudja kezelni egyetlen műveletben. A metaadat-adatokat a Resource Manager végpontról szerezheti be. A végpont egy JSON-fájlt ad vissza a kód futtatásához szükséges információkkal.

  • Az Azure Stack Development Kitben (ASDK) található ResourceManagerEndpointUrl a következő: https://management.local.azurestack.external/.
  • Az integrált rendszerekben a ResourceManagerEndpointUrl a következő: https://management.region.<fqdn>/, ahol <fqdn> a teljes tartománynév.
  • A szükséges metaadatok lekéréséhez: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Az elérhető API-verziókért lásd: Azure rest API-specifikációk. Például a profilverzióban 2020-09-01 módosíthatja a értéket az api-version2019-10-01 erőforrás-szolgáltató microsoft.resourcesesetében.

JSON-minta:

{
   "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"]
      }
}

Környezeti változók beállítása

Microsoft Windows

A környezeti változók beállításához használja a következő formátumot egy Windows-parancssorban:

set AZURE_TENANT_ID=<YOUR_TENANT_ID>

macOS-, Linux- és Unix-alapú rendszerek

Unix-alapú rendszerekben használja a következő parancsot:

export AZURE_TENANT_ID=<YOUR_TENANT_ID>

Az Azure Stack Hub- és API-profilokkal kapcsolatos további információkért lásd az API-profilok összegzését.

Azure Ruby SDK API-profilhasználat

A profilügyfél példányosításához használja az alábbi kódot. Ez a paraméter csak az Azure Stack Hubhoz vagy más magánfelhőkhöz szükséges. A globális Azure alapértelmezés szerint már rendelkezik ezekkel a beállításokkal.

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)

A profilügyfél az egyes erőforrás-szolgáltatókhoz, például a számításhoz, a tároláshoz és a hálózathoz való hozzáféréshez használható:

# 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

Azure Stack Hub környezeti beállítási függvények definiálása

A szolgáltatásnév Azure Stack Hub-környezetben való hitelesítéséhez definiálja a végpontokat a használatával get_active_directory_settings(). Ez a metódus a korábban beállított ARM_Endpoint környezeti változót használja:

# 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

Példák

A GitHubon az alábbi mintákat használhatja a Ruby- és Azure Stack Hub API-profilokkal rendelkező megoldások létrehozásához:

Mintaerőforrás-kezelő és -csoportok

A minta futtatásához győződjön meg arról, hogy telepítette a Rubyt. Ha Visual Studio Code-ot használ, töltse le a Ruby SDK-bővítményt is.

Megjegyzés

A minta adattára a Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Klónozza az adattárat:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Telepítse a függőségeket csomag használatával:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Hozzon létre egy Azure-szolgáltatásnevet a PowerShell használatával, és kérje le a szükséges értékeket.

    A szolgáltatásnév létrehozásával kapcsolatos útmutatásért lásd: Szolgáltatásnév létrehozása Azure PowerShell tanúsítvánnyal.

    A szükséges értékek a következők:

    • Bérlőazonosító
    • Ügyfél-azonosító
    • Titkos ügyfélkulcs
    • Előfizetés azonosítója
    • Resource Manager végpont

    Állítsa be a következő környezeti változókat a létrehozott szolgáltatásnévből lekért információk alapján:

    • 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}

    Megjegyzés

    Windows rendszeren a helyett használja a következőt setexport: .

  4. Győződjön meg arról, hogy a helyváltozó az Azure Stack Hub helyére van állítva; például: LOCAL="local".

  5. A megfelelő Active Directory-végpontok megcélzásához adja hozzá a következő kódsort, ha Azure Stack Hubot vagy más magánfelhőt használ:

    active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
    
  6. A változóban options adja hozzá az Active Directory beállításait és az alap URL-címet az Azure Stack Hub használatához:

    options = {
    credentials: credentials,
    subscription_id: subscription_id,
    active_directory_settings: active_directory_settings,
    base_url: ENV['ARM_ENDPOINT']
    }
    
  7. Hozzon létre egy olyan profilügyfélt, amely az Azure Stack Hub-profilt célozza meg:

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. A szolgáltatásnév Azure Stack Hubbal való hitelesítéséhez a végpontokat get_active_directory_settings() használatával kell definiálni. Ez a metódus a korábban beállított ARM_Endpoint környezeti változót használja:

    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. Futtassa a mintát.

    bundle exec ruby example.rb
    

Következő lépések