Terraform AzAPI sağlayıcısına genel bakış
AzAPI sağlayıcısı, Azure ARM REST API'lerinin üzerinde ince bir katmandır. Herhangi bir API sürümünü kullanarak herhangi bir Azure kaynak türünü yönetmenize olanak tanıyarak Azure'da en son işlevleri kullanmanıza olanak tanır. AzAPI, kendi başına veya AzureRM sağlayıcısıyla birlikte kullanılmak üzere tasarlanmış birinci sınıf bir sağlayıcıdır.
Kaynaklar
Güncelleştirme gerektirmeden tüm Azure kaynaklarını ve özelliklerini yönetmenize olanak sağlamak için AzAPI sağlayıcısı aşağıdaki genel kaynakları içerir:
Kaynak Adı | Açıklama |
---|---|
azapi_resource | Tüm Azure (denetim düzlemi) kaynaklarını (API) tam CRUD ile tam olarak yönetmek için kullanılır. Örnek Kullanım Örnekleri: Yeni önizleme hizmeti Mevcut hizmete yeni özellik eklendi Mevcut özellik / hizmet şu anda kapsanmayan |
azapi_update_resource | Tam CRUD'a sahip olmayan kaynakları veya kaynakların bölümlerini yönetmek için kullanılır Örnek Kullanım Örnekleri: Mevcut bir hizmette yeni özellikleri güncelleştirme DNS SOA kaydı gibi önceden oluşturulmuş alt kaynağı güncelleştirin. |
azapi_resource_action | Bir kaynak üzerinde yaşam döngüsünü yönetmeden tek bir işlem gerçekleştirmek için kullanılır Örnek Kullanım Örnekleri: Sanal Makineyi Kapatma Key Vault'a gizli dizi ekleme |
azapi_data_plane_resource | Azure veri düzlemi kaynaklarının belirli bir alt kümesini yönetmek için kullanılır Örnek Kullanım Örnekleri: KeyVault Sertifika Kişileri Synapse Çalışma Alanı Kitaplıkları |
Kullanım hiyerarşisi
Genel olarak, kullanım şu adımları izlemelidir:
- her zaman içinde
azapi_resource
mümkün olduğunca çok işlem gerçekleştirerek başlamanız önerilir. - Kaynak türü içinde
azapi_resource
yoksa ancak tarafındanazapi_data_plane_resource
desteklenen türlerden birinin altındaysa, bunun yerine bunu kullanın. - Kaynak AzureRM'de zaten varsa veya içinde
azapi_resource
erişilemedi bir özelliği varsa, bu özelliklere erişmek için kullanınazapi_update_resource
. Desteklemeyenazapi_resource
veyaazapi_data_plane_resource
desteklemeyen kaynaklar bu kaynak aracılığıyla güncelleştirilemez. - Azure CRUD kullanımı kolay bir kaynağı temel almayan bir eylem gerçekleştirmeye çalışıyorsanız,
azapi_resource_action
daha basitazapi_update_resource
ama daha esnektir.
Kaynak yapılandırma örnekleri
Aşağıdaki kod parçacığı şu anda AzureRM sağlayıcısında mevcut olmayan bir kaynağı yapılandırıyor:
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"
}
}
}
Aşağıdaki kod parçacığı, AzureRM'den var olan bir kaynak için önizleme özelliğini yapılandırmaktadır:
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
}
}
}
Aşağıdaki kod parçacığı, mevcut bir AzureRM kaynağında bir kaynak eylemi yapılandırıyor:
resource "azapi_resource_action" "vm_shutdown" {
type = "Microsoft.Compute/virtualMachines@2023-07-01"
resource_id = azurerm_linux_virtual_machine.example.id
action = "powerOff”
}
Aşağıdaki kod parçacığı, veri düzleminde sağlandığı için şu anda AzureRM sağlayıcısında mevcut olmayan bir kaynağı yapılandırıyor:
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"
}
}
}
}
}
AzAPI sağlayıcısını kullanarak kimlik doğrulaması
AzAPI sağlayıcısı, AzureRM sağlayıcısıyla aynı kimlik doğrulama yöntemlerini etkinleştirir. Kimlik doğrulama seçenekleri hakkında daha fazla bilgi için bkz . Terraform'un Azure'da kimliğini doğrulama.
AzAPI sağlayıcısını kullanmanın avantajları
AzAPI sağlayıcısı aşağıdaki avantajları sunar:
- Tüm Azure denetim düzlemi hizmetlerini destekler:
- Önizleme hizmetleri ve özellikleri
- Tüm API sürümleri
- Tam Terraform durum dosyası uygunluğu
- Özellikler ve değerler duruma kaydedilir
- Swagger bağımlılığı yok
- Yaygın ve tutarlı Azure kimlik doğrulaması
- Sağlam VS Code Uzantısı
AzAPI sağlayıcısının deneyimi ve yaşam döngüsü
Bu bölümde, AzAPI sağlayıcısını kullanmanıza yardımcı olacak bazı araçlar açıklanmaktadır.
VS Code uzantısı ve Dil Sunucusu
AzAPI VS Code uzantısı, aşağıdaki avantajlarla zengin bir yazma deneyimi sağlar:
- Kullanılabilir tüm kaynak türlerini ve API sürümlerini listeleyin.
- Herhangi bir kaynak için izin verilen özelliklerin ve değerlerin otomatik olarak tamamlanması.
- Bir özelliğin üzerine gelindiğinde ipuçlarını gösterin.
- Söz dizimi doğrulama
- Kod örnekleriyle otomatik tamamlama.
AzAPI2AzureRM geçiş aracı
AzureRM sağlayıcısı, Azure kaynaklarını yönetmek için en tümleşik Terraform deneyimini sağlar. Bu nedenle, AzAPI ve AzureRM sağlayıcılarının önerilen kullanımı aşağıdaki gibidir:
- Hizmet veya özellik önizleme aşamasındayken AzAPI sağlayıcısını kullanın.
- hizmet resmi olarak yayımlandıktan sonra AzureRM sağlayıcısını kullanın.
AzAPI2AzureRM aracı, AzAPI sağlayıcısından AzureRM sağlayıcısına geçişe yardımcı olmak için tasarlanmıştır.
AzAPI2AzureRM, AzAPI kaynaklarını AzureRM kaynaklarına dönüştürme işlemini otomatik hale getiren bir açık kaynak aracıdır.
AzAPI2AzureRM'nin iki modu vardır: planlama ve geçirme:
- Plan, geçirilebilen AzAPI kaynaklarını görüntüler.
- Geçişi, AzAPI kaynaklarını hem HCL dosyalarında hem de durumdaki AzureRM kaynaklarına geçirir.
AzAPI2AzureRM, geçiş sonrasında Terraform yapılandırmanızın ve durumunuzun gerçek durumunuzla uyumlu olmasını sağlar. Hiçbir şeyin değişmediğini görmek için geçişi tamamladıktan sonra çalıştırarak terraform plan
durum güncelleştirmesini doğrulayabilirsiniz.
AzAPI sağlayıcısını kullanma
AzAPI sağlayıcısını Terraform yapılandırmanıza ekleyin.
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 = "..." }
Aşağıdaki örnek kodda gösterildiği gibi bir veya daha fazla AzAPI kaynağı bildirin:
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" } } } }