Menggunakan profil versi API dengan Ruby di Azure Stack Hub

Profil versi Ruby dan API

SDK Ruby untuk Azure Stack Hub Resource Manager menyediakan alat untuk membantu Anda membangun dan mengelola infrastruktur Anda. Penyedia sumber daya di SDK termasuk Compute, Virtual Networks, dan Storage, dengan bahasa Ruby. Profil API di SDK Ruby memungkinkan pengembangan cloud hibrida dengan membantu Anda beralih antara sumber daya Azure global dan sumber daya di Azure Stack Hub.

Profil API adalah kombinasi dari penyedia sumber daya dan versi layanan. Anda dapat menggunakan profil API untuk menggabungkan berbagai jenis sumber daya.

  • Untuk menggunakan versi terbaru dari semua layanan, gunakan profil Terbaru dari gem rollup SDK Azure.
  • Profil diberi nama berdasarkan tanggal dalam format seperti V2020_09_01_Hybrid atau V2019_03_01_Hybrid.
  • Untuk menggunakan versi api layanan terbaru, gunakan profil Terbaru gem tertentu. Misalnya, untuk menggunakan layanan komputasi versi api terbaru saja, gunakan profil Terbaru gem Komputasi.
  • Untuk menggunakan versi api tertentu untuk layanan, gunakan versi API spesifik yang ditentukan di dalam gem.

Menginstal SDK Ruby Azure

Menginstal paket RubyGem

Anda dapat menginstal paket Azure RubyGem secara langsung.

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

Atau, menggunakannya di Gemfile Anda.

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

SDK Ruby Azure Resource Manager sedang dalam pratinjau dan kemungkinan akan mengalami perubahan antarmuka yang melanggar dalam rilis mendatang. Peningkatan jumlah dalam versi minor dapat menunjukkan perubahan yang melanggar.

Menggunakan gem azure_sdk

Gem azure_sdk adalah gabungan dari semua gem yang didukung di SDK Ruby.

Anda dapat menginstal gem rollup Azure_sdk dengan perintah berikut:

gem install 'azure_sdk'

Profil

Untuk profil yang berisi tanggal, untuk menggunakan profil atau versi SDK yang berbeda, ganti tanggal di V<date>_Hybrid. Misalnya, untuk versi 2008, profilnya adalah 2019_03_01, dan string menjadi V2019_03_01_Hybrid. Perhatikan bahwa terkadang tim SDK mengubah nama paket, jadi hanya mengganti tanggal string dengan tanggal yang berbeda mungkin tidak berhasil. Lihat tabel berikut untuk asosiasi profil dan versi Azure Stack.

Anda juga dapat menggunakan latest sebagai pengganti tanggal.

Versi 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

Untuk informasi selengkapnya tentang Azure Stack Hub serta profil API, lihat Ringkasan profil API.

Lihat profil Ruby SDK.

Langganan

Jika Anda belum memiliki langganan, buat langganan dan simpan ID langganan yang akan digunakan nanti. Untuk informasi tentang cara membuat langganan, lihat dokumen ini.

Perwakilan Layanan

Perwakilan layanan dan informasi lingkungan terkait harus dibuat dan disimpan di suatu tempat. Perwakilan layanan dengan peran owner direkomendasikan, tetapi tergantung sampel, peran contributor mungkin sudah cukup. Lihat nilai yang diperlukan pada tabel di bawah ini.

Nilai Variabel lingkungan Deskripsi
ID Penyewa AZURE_TENANT_ID ID penyewa Azure Stack Hub Anda.
ID Klien AZURE_CLIENT_ID ID aplikasi perwakilan layanan disimpan saat perwakilan layanan dibuat di bagian sebelumnya dari artikel ini.
ID Langganan AZURE_SUBSCRIPTION_ID Anda memakai ID langganan untuk mengakses penawaran di Azure Stack Hub.
Rahasia klien AZURE_CLIENT_SECRET Rahasia aplikasi perwakilan layanan disimpan saat perwakilan layanan dibuat.
Titik Akhir Resource Manager ARM_ENDPOINT Lihat Titik akhir Resource Manager Azure Stack Hub.

ID Penyewa

Ikuti petunjuk dalam artikel ini untuk menemukan direktori atau ID penyewa untuk Azure Stack Hub Anda.

Mendaftarkan penyedia sumber daya

Daftarkan penyedia sumber daya yang diperlukan dengan mengikuti dokumen ini. Penyedia sumber daya ini akan diperlukan, tergantung sampel yang ingin Anda jalankan. Misalnya, jika Anda ingin menjalankan sampel mesin virtual, pendaftaran penyedia sumber daya Microsoft.Compute diperlukan.

Titik akhir Azure Stack resource manager

Azure Resource Manager (ARM) adalah kerangka kerja manajemen yang memungkinkan administrator untuk menyebarkan, mengelola, dan memantau sumber daya Azure. Azure Resource Manager dapat menangani tugas-tugas ini sebagai grup, bukan secara individu, dalam satu operasi. Anda bisa mendapatkan info metadata dari titik akhir Resource Manager. Titik akhir mengembalikan file JSON dengan info yang dibutuhkan untuk menjalankan kode Anda.

  • ResourceManagerEndpointUrl di Azure Stack Development Kit (ASDK) adalah: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl dalam sistem terintegrasi adalah: https://management.region.<fqdn>/, dengan <fqdn> adalah nama domain Anda yang sepenuhnya memenuhi syarat.
  • Untuk mengambil metadata yang dibutuhkan: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Untuk versi API yang tersedia, lihat Spesifikasi rest API Azure. Misalnya, dalam versi profil 2020-09-01, Anda dapat mengubah api-version ke 2019-10-01 untuk penyedia sumber daya microsoft.resources.

JSON Sampel:

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

Atur variabel lingkungan

Microsoft Windows

Untuk mengatur variabel lingkungan, gunakan format berikut di perintah Windows:

set AZURE_TENANT_ID=<YOUR_TENANT_ID>

Sistem berbasis macOS, Linux, dan Unix

Dalam sistem berbasis Unix, gunakan perintah berikut:

export AZURE_TENANT_ID=<YOUR_TENANT_ID>

Untuk info selengkapnya tentang Azure Stack Hub dan profil API, lihat Ringkasan profil API.

Penggunaan profil Azure API SDK Ruby

Gunakan kode berikut untuk membuat instans klien profil. Parameter ini hanya diperlukan untuk Azure Stack Hub atau cloud privat lainnya. Azure Global sudah memiliki pengaturan ini secara default.

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)

Klien profil dapat digunakan untuk mengakses penyedia sumber daya individu, seperti Compute, Storage, dan 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

Menentukan fungsi pengaturan lingkungan Azure Stack Hub

Untuk mengautentikasi perwakilan layanan ke lingkungan Azure Stack Hub, tentukan titik akhir menggunakan get_active_directory_settings(). Metode ini menggunakan variabel lingkungan ARM_Endpoint yang Anda tetapkan sebelumnya:

# 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

Sampel

Gunakan sampel berikut di GitHub sebagai referensi untuk membuat solusi dengan profil API Ruby dan Azure Stack Hub:

Sampel resource manager dan grup

Untuk menjalankan sampel, pastikan Anda telah menginstal Ruby. Jika Anda menggunakan Visual Studio Code, unduh juga ekstensi SDK Ruby.

Catatan

Repositori untuk sampel adalah Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Mengklon repositori:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Instal dependensi menggunakan bundel:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Buat perwakilan layanan Azure menggunakan PowerShell dan ambil nilai yang diperlukan.

    Untuk petunjuk tentang membuat perwakilan layanan, lihat Menggunakan Azure PowerShell untuk membuat perwakilan layanan dengan sertifikat.

    Nilai yang dibutuhkan adalah:

    • ID Penyewa
    • ID Klien
    • Rahasia klien
    • ID Langganan
    • Titik akhir Resource Manager

    Atur variabel lingkungan berikut menggunakan informasi yang diambil dari perwakilan layanan yang Anda buat:

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

    Catatan

    Di Windows, gunakan set bukan export.

  4. Pastikan variabel lokasi diatur ke lokasi Azure Stack Hub Anda; misalnya, LOCAL="local".

  5. Untuk menargetkan titik akhir direktori aktif yang benar, tambahkan baris kode berikut jika Anda menggunakan Azure Stack Hub atau cloud privat lainnya:

    active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
    
  6. Di variabel options, tambahkan pengaturan Active Directory dan URL dasar agar berfungsi dengan Azure Stack Hub:

    options = {
    credentials: credentials,
    subscription_id: subscription_id,
    active_directory_settings: active_directory_settings,
    base_url: ENV['ARM_ENDPOINT']
    }
    
  7. Buat klien profil yang menargetkan profil Azure Stack Hub:

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. Untuk mengautentikasi perwakilan layanan dengan Azure Stack Hub, titik akhir harus ditentukan menggunakan get_active_directory_settings(). Metode ini menggunakan variabel lingkungan ARM_Endpoint yang Anda tetapkan sebelumnya:

    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. Jalankan sampel.

    bundle exec ruby example.rb
    

Langkah berikutnya