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
atauV2019_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
Instal Ruby.
Saat menginstal, pilih Tambahkan Ruby ke variabel PATH.
Saat diminta selama penginstalan Ruby, instal kit pengembangan.
Selanjutnya, instal bundler menggunakan perintah berikut:
Gem install bundler
Jika tidak tersedia, buat langganan dan simpan ID langganan untuk digunakan nanti. Petunjuk untuk membuat langganan ada di artikel Buat langganan ke penawaran di Azure Stack Hub.
Buat perwakilan layanan dan simpan ID dan rahasianya. Petunjuk untuk membuat perwakilan layanan untuk Azure Stack Hub ada di artikel Gunakan identitas aplikasi untuk mengakses sumber daya.
Pastikan perwakilan layanan Anda memiliki peran kontributor/pemilik yang ditetapkan pada langganan Anda. Petunjuk tentang cara menetapkan peran ke perwakilan layanan ada di artikel Gunakan identitas aplikasi untuk mengakses sumber daya.
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 profil2020-09-01
, Anda dapat mengubahapi-version
ke2019-10-01
untuk penyedia sumber dayamicrosoft.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:
- Mengelola sumber daya Azure dan grup sumber daya dengan Ruby.
- Mengelola mesin virtual menggunakan Ruby
- Menyebarkan VM yang Diaktifkan SSH dengan Templat di Ruby.
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.
Mengklon repositori:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Instal dependensi menggunakan bundel:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
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
bukanexport
.Pastikan variabel lokasi diatur ke lokasi Azure Stack Hub Anda; misalnya,
LOCAL="local"
.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'])
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'] }
Buat klien profil yang menargetkan profil Azure Stack Hub:
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
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
Jalankan sampel.
bundle exec ruby example.rb