Gambaran umum penyedia Terraform AzAPI
Penyedia AzAPI adalah lapisan tipis di atas AZURE ARM REST API. Ini memungkinkan Anda mengelola jenis sumber daya Azure apa pun menggunakan versi API apa pun, memungkinkan Anda untuk menggunakan fungsionalitas terbaru dalam Azure. AzAPI adalah penyedia kelas satu yang dirancang untuk digunakan sendiri atau bersama dengan penyedia AzureRM.
Sumber
Untuk memungkinkan Anda mengelola semua sumber daya dan fitur Azure tanpa memerlukan pembaruan, penyedia AzAPI menyertakan sumber daya generik berikut:
Nama Sumber Daya | Deskripsi |
---|---|
azapi_resource | Digunakan untuk sepenuhnya mengelola sumber daya (API) Azure (sarana kontrol) dengan CRUD penuh. Contoh Kasus Penggunaan: Layanan pratinjau baru Fitur baru ditambahkan ke layanan yang sudah ada Fitur/layanan yang ada saat ini tidak tercakup |
azapi_update_resource | Digunakan untuk mengelola sumber daya atau bagian sumber daya yang tidak memiliki CRUD penuh Contoh Kasus Penggunaan: Memperbarui properti baru pada layanan yang sudah ada Perbarui sumber daya anak yang telah dibuat sebelumnya - seperti catatan DNS SOA. |
azapi_resource_action | Digunakan untuk melakukan satu operasi pada sumber daya tanpa mengelola siklus hidupnya Contoh Kasus Penggunaan: Mematikan Komputer Virtual Menambahkan rahasia ke Key Vault |
azapi_data_plane_resource | Digunakan untuk mengelola subset sumber daya sarana data Azure tertentu Contoh Kasus Penggunaan: Kontak Sertifikat KeyVault Pustaka Ruang Kerja Synapse |
Hierarki penggunaan
Secara keseluruhan, penggunaan harus mengikuti langkah-langkah berikut:
- Selalu disarankan untuk mulai dengan melakukan operasi sebanyak mungkin dalam
azapi_resource
. - Jika jenis sumber daya tidak ada di dalam
azapi_resource
tetapi berada di bawah salah satu jenis yang didukung olehazapi_data_plane_resource
, gunakan sebagai gantinya. - Jika sumber daya sudah ada di AzureRM atau memiliki properti yang tidak dapat diakses dalam
azapi_resource
, gunakanazapi_update_resource
untuk mengakses properti tertentu ini. Sumber daya yangazapi_resource
atauazapi_data_plane_resource
tidak mendukung tidak dapat diperbarui melalui sumber daya ini. - Jika Anda mencoba melakukan tindakan yang tidak didasarkan pada sumber daya ramah Azure CRUD,
azapi_resource_action
kurang mudah daripadaazapi_update_resource
tetapi lebih fleksibel.
Contoh konfigurasi sumber daya
Cuplikan kode berikut mengonfigurasi sumber daya yang saat ini tidak ada di penyedia AzureRM:
resource "azapi_resource" "publicip" {
type = "Microsoft.Network/Customipprefixes@2021-03-01"
name = "exfullrange"
parent_id = azurerm_resource_group.example.id
location = "westus2"
body = {
properties = {
cidr = "10.0.0.0/24"
signedMessage = "Sample Message for WAN"
}
}
}
Cuplikan kode berikut mengonfigurasi properti pratinjau untuk sumber daya yang ada dari AzureRM:
resource "azapi_update_resource" "test" {
type = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
resource_id = azurerm_container_registry.acr.id
body = {
properties = {
anonymousPullEnabled = var.bool_anonymous_pull
}
}
}
Cuplikan kode berikut mengonfigurasi tindakan sumber daya pada sumber daya AzureRM yang ada:
resource "azapi_resource_action" "vm_shutdown" {
type = "Microsoft.Compute/virtualMachines@2023-07-01"
resource_id = azurerm_linux_virtual_machine.example.id
action = "powerOff”
}
Cuplikan kode berikut mengonfigurasi sumber daya yang saat ini tidak ada di penyedia AzureRM karena disediakan di bidang data:
resource "azapi_data_plane_resource" "dataset" {
type = "Microsoft.Synapse/workspaces/datasets@2020-12-01"
parent_id = trimprefix(data.azurerm_synapse_workspace.example.connectivity_endpoints.dev, "https://")
name = "example-dataset"
body = {
properties = {
type = "AzureBlob",
typeProperties = {
folderPath = {
value = "@dataset().MyFolderPath"
type = "Expression"
}
fileName = {
value = "@dataset().MyFileName"
type = "Expression"
}
format = {
type = "TextFormat"
}
}
parameters = {
MyFolderPath = {
type = "String"
}
MyFileName = {
type = "String"
}
}
}
}
}
Autentikasi menggunakan penyedia AzAPI
Penyedia AzAPI memungkinkan metode autentikasi yang sama dengan penyedia AzureRM. Untuk informasi selengkapnya tentang opsi autentikasi, lihat Mengautentikasi Terraform ke Azure.
Manfaat menggunakan penyedia AzAPI
Penyedia AzAPI menampilkan manfaat berikut:
- Mendukung semua layanan sarana kontrol Azure:
- Pratinjau layanan dan fitur
- Semua versi API
- Keakuratan file status Terraform penuh
- Properti dan nilai disimpan ke status
- Tidak ada dependensi pada Swagger
- Autentikasi Azure umum dan konsisten
- Ekstensi Visual Studio Code yang Kuat
Pengalaman dan siklus hidup penyedia AzAPI
Bagian ini menjelaskan beberapa alat untuk membantu Anda menggunakan penyedia AzAPI.
Ekstensi Visual Studio Code dan Server Bahasa
Ekstensi AzAPI VS Code memberikan pengalaman penulisan yang kaya dengan manfaat berikut:
- Mencantumkan semua jenis sumber daya dan versi API yang tersedia.
- Penyelesaian otomatis properti dan nilai yang diizinkan untuk sumber daya apa pun.
- Perlihatkan petunjuk saat mengarahkan ku ke properti.
- Validasi sintaks
- Penyelesaian otomatis dengan sampel kode.
Alat migrasi AzAPI2AzureRM
Penyedia AzureRM memberikan pengalaman Terraform yang paling terintegrasi untuk mengelola sumber daya Azure. Oleh karena itu, penggunaan yang direkomendasikan dari penyedia AzAPI dan AzureRM adalah sebagai berikut:
- Saat layanan atau fitur dalam pratinjau, gunakan penyedia AzAPI.
- setelah layanan dirilis secara resmi, gunakan penyedia AzureRM.
Alat AzAPI2AzureRM dirancang untuk membantu bermigrasi dari penyedia AzAPI ke penyedia AzureRM.
AzAPI2AzureRM adalah alat sumber terbuka yang mengotomatiskan proses konversi sumber daya AzAPI ke sumber daya AzureRM.
AzAPI2AzureRM memiliki dua mode: merencanakan dan memigrasikan:
- Paket menampilkan sumber daya AzAPI yang dapat dimigrasikan.
- Migrasikan sumber daya AzAPI ke sumber daya AzureRM dalam file HCL dan status.
AzAPI2AzureRM memastikan setelah migrasi bahwa konfigurasi dan status Terraform Anda selaras dengan status Anda yang sebenarnya. Anda dapat memvalidasi pembaruan ke status dengan menjalankan terraform plan
setelah menyelesaikan migrasi untuk melihat bahwa tidak ada yang berubah.
Menggunakan penyedia AzAPI
Menginstal ekstensi Visual Studio Code
Tambahkan penyedia AzAPI ke konfigurasi Terraform Anda.
terraform { required_providers { azapi = { source = "Azure/azapi" } } } provider "azapi" { # More information on the authentication methods supported by # the AzureRM Provider can be found here: # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs # subscription_id = "..." # client_id = "..." # client_secret = "..." # tenant_id = "..." }
Deklarasikan satu atau beberapa sumber daya AzAPI seperti yang ditunjukkan dalam contoh kode berikut:
resource "azapi_resource" "example" { name = "example" parent_id = data.azurerm_machine_learning_workspace.existing.id type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01" location = "eastus" body = { properties = { computeType = "ComputeInstance" disableLocalAuth = true properties = { vmSize = "STANDARD_NC6" } } } }