AzAPI veri düzlemi çerçevesini anlama

çoğu Azure kaynağı, management.azure.com'da tek ve birleşik bir API yüzeyi olan Azure Resource Manager (ARM) kontrol düzlemi aracılığıyla yönetilir. , azapi_resourceve azapi_update_resource kaynak türlerinin azapi_resource_actiontümü bu denetim düzlemini hedefler.

Bazı Azure hizmetleri ayrı bir veri düzlemi API kullanıma sunar. Bu, ARM üzerinden değil doğrudan hizmetle etkileşimde bulunduğu hizmete özgü bir HTTPS uç noktasıdır. Örnekler arasında {vaultName}.vault.azure.net'daki Key Vault gizli dizileri API'si, {searchServiceName}.search.windows.net'daki Azure Yapay Zeka Arama dizin API'si ve {workspaceName}.dev.azuresynapse.net'daki Synapse çalışma alanı işlem hattı API'si yer alır.

azapi_data_plane_resource Terraform'un aynı AzAPI sağlayıcısı kimlik doğrulaması ve yaşam döngüsü modelini kullanarak bu veri düzlemi uç noktalarındaki kaynakları yönetmesini sağlayarak bu boşluğu kapatır.

Neden yalnızca seçilmiş bir kaynak türü kümesi destekleniyor?

Herhangi bir ARM kaynak türünü hedefleyebilen azapi_resource aksine, azapi_data_plane_resource yalnızca belirli bir kayıtlı kaynak türleri listesiyle çalışır.

Veri düzlemi genişletilebilirliği, AzAPI sağlayıcısının veri düzlemi çerçevesinde açık kayıt gerektirdiğinden bu kısıtlama mevcuttur. Çerçevenin aşağıdakileri bilmesi gerekir:

  • Bir hizmet için temel uç nokta deseni (örneğin, {vaultName}.vault.azure.net)
  • Desteklenen her kaynak türü için REST yolu (örneğin, /secrets/{secret-name})
  • Bu uç noktada nasıl kimlik doğrulaması yapılır (Bazı hizmetler için, varsayılan ARM hedef kitlesi yerine https://management.azure.com konumunda hizmete özgü belirteç kitleleri gerekir)

Her kayıtlı kaynak türü bu eşlemeyi çerçeveye ekler. Sağlayıcının doğru uç noktayı veya kimlik doğrulama kapsamını belirleme yolu olmadığından, kaydı olmayan kaynak türleri aracılığıyla azapi_data_plane_resource hedeflenemez.

Tip

İhtiyacınız olan bir veri düzlemi kaynak türü desteklenmiyorsa, terraform-provider-azapi GitHub deposunda bir sorun açabilir veya kayda katkıda bulunabilirsiniz.

Veri düzlemi kaynakları için nasıl parent_id çalışır?

Denetim düzlemi kaynakları için (azapi_resource), parent_id her zaman bir ARM kaynak kimliğidir ve biçimindeki /subscriptions/{sub}/resourceGroups/{rg}/providers/{namespace}/{type}/{name} bir yoldur.

Veri düzlemi kaynakları için, parent_idhizmetin veri düzlemi ana bilgisayar adıdır, şema ve sondaki eğik çizgi çıkarılarak belirlenir https://. Bu uç nokta genellikle oluşturma işleminden sonra ARM denetim düzlemi kaynağında kullanıma sunulan bir özelliktir.

Desen hizmete göre değişir:

Service ARM çıkış özelliği parent_id deseni
Anahtar Kasası (Key Vault) properties.vaultUri {vaultName}.vault.azure.net
Azure Uygulama Yapılandırması (Azure Uygulama Yapılandırması) properties.endpoint {storeName}.azconfig.io
Azure Yapay Zeka Arama (isimden türetilmiş) {searchServiceName}.search.windows.net
Synapse çalışma alanı connectivityEndpoints.dev {workspaceName}.dev.azuresynapse.net
IoT Central uygulaması properties.subdomain {appSubdomain}.azureiotcentral.com
Microsoft Purview isimden türetilmiş {accountName}.purview.azure.com

ARM çıkışından ayıklama parent_id

Veri düzlemi uç noktasını ayıklamak için üst ARM kaynağında response_export_values kullanın, ardından şemayı trimprefix veya replace ile çıkarın.

resource "azurerm_key_vault" "example" {
  # ... configuration
}

resource "azapi_data_plane_resource" "secret" {
  type      = "Microsoft.KeyVault/vaults/secrets@7.4"
  # Strip "https://" and the trailing "/" from the vault URI
  parent_id = trimsuffix(trimprefix(azurerm_key_vault.example.vault_uri, "https://"), "/")
  name      = "my-secret"
  body = {
    value      = var.secret_value
    attributes = { enabled = true }
  }
}

AzureRM yerine üst öğeyi oluşturmak için kullanırken azapi_resource , uç noktayı yakalamak için kullanın response_export_values :

resource "azapi_resource" "app_config" {
  type      = "Microsoft.AppConfiguration/configurationStores@2023-03-01"
  name      = "my-store"
  parent_id = azapi_resource.resource_group.id
  location  = "eastus"
  body      = { sku = { name = "standard" } }

  response_export_values = {
    endpoint = "properties.endpoint"
  }
}

resource "azapi_data_plane_resource" "key_value" {
  type      = "Microsoft.AppConfiguration/configurationStores/keyValues@1.0"
  parent_id = replace(azapi_resource.app_config.output.endpoint, "https://", "")
  name      = "mykey"
  body      = { value = "myvalue", content_type = "" }
}

Uç noktanın URI özelliği yerine kaynak adından türetildiği hizmetler için doğrudan oluşturun:

resource "azurerm_search_service" "example" {
  name                = "my-search"
  # ... configuration
}

resource "azapi_data_plane_resource" "index" {
  type      = "Microsoft.Search/searchServices/indexes@2024-07-01"
  parent_id = "${azurerm_search_service.example.name}.search.windows.net"
  name      = "my-index"
  body      = { fields = [ /* ... */ ] }
}

Veri düzlemi uç noktalarına kimlik doğrulaması

AzAPI sağlayıcısı kimlik doğrulamasını saydam bir şekilde işler. provider "azapi" bloğunda yapılandırdığınız aynı kimlik bilgilerini (Azure CLI, hizmet sorumlusu, yönetilen kimlik veya OpenID Connect (OIDC)) kullanır, ancak her hizmetin veri düzlemi kitlesine özgü belirteçleri, ARM kitlesi yerine otomatik olarak talep eder.

Örneğin Key Vault veri düzlemi işlemleri için https://vault.azure.net değil https://management.azure.com belirteç hedef kitlesi gerekir. AzAPI sağlayıcısı, her kaynak türü için kayıtlı uç noktayı temel alarak doğru hedef kitleyi seçer.

Bir uygulayıcı olarak, herhangi bir şeyi farklı yapılandırmanız gerekmez. Hizmet için standart rol tabanlı erişim denetimi (RBAC) izinleri geçerlidir; örneğin, Key Vault gizli dizilerini yönetmek için Key Vault Secrets Officer veya Uygulama Yapılandırması anahtar değerlerini yönetmek için App Configuration Data Owner.

Note

Bazı hizmetler (Azure Uygulama Yapılandırması ve Azure Yapay Zeka Arama gibi) için, çağıranın sadece denetim düzlemi sahibi rolüne sahip olması değil, aynı zamanda uygun veri düzlemi rol ataması yapması gerekir. Terraform'u çalıştıran kimliğin azapi_data_plane_resource kullanılarak yapılandırmalar uygulanmadan önce doğru veri uçağı rol tabanlı erişim kontrolü (RBAC) atamasına sahip olduğundan emin olun.

İçeri aktarma için kaynak ID biçimi

Veri düzlemi kaynak kimlikleri ARM kaynak kimliklerinden farklı bir biçim kullanır. Mevcut bir veri düzlemi kaynağını içeri aktarırken biçimini {parent_id}/{path}|{resource-type}@{api-version}kullanın:

import {
  to = azapi_data_plane_resource.example
  id = "exampleappconf.azconfig.io/kv/mykey|Microsoft.AppConfiguration/configurationStores/keyValues@1.0"
}

Veya terraform import ile:

terraform import azapi_data_plane_resource.example 'exampleappconf.azconfig.io/kv/mykey|Microsoft.AppConfiguration/configurationStores/keyValues@1.0'

Desteklenen veri düzlemi hizmetleri

AzAPI sağlayıcısı şu anda şu hizmetler genelindeki kaynak türlerini destekler azapi_data_plane_resource :

  • Azure Uygulama Yapılandırması—anahtar-değerler
  • Azure Yapay Zeka Atölyesi—aracılar
  • Azure Cihaz Güncelleştirmesi—gruplar, dağıtımlar
  • Azure Digital Twins—dijital ikizler, ilişkiler, etkinlik yolları, içeri aktarma görevleri
  • Azure IoT Central—kuruluşlar, kullanıcılar, zamanlanmış işler, API belirteçleri, panolar, cihaz grupları, cihaz şablonları, cihazlar, kayıt grupları, veri dışarı aktarmalar, dağıtım bildirimleri
  • Azure Key Vault—sertifika kişileri, sertifika verenler, anahtarlar, gizli diziler, depolama hesapları, SAS tanımları
  • Microsoft Purview—koleksiyonlar, kaynak kümesi kuralı yapılandırmaları, anahtar kasaları, sınıflandırma kuralları, kimlik bilgileri, veri kaynakları, taramalar, tarama tetikleyicileri, tümleştirme çalışma zamanları, yönetilen özel uç noktalar, iş akışları
  • Azure Yapay Zeka Arama—veri kaynakları, dizin oluşturucular, dizinler, beceri kümeleri, eş anlamlı haritalar
  • Azure Synapse Analytics—veritabanları, veri akışları, veri kümeleri, Kusto Sorgu Dili (KQL) betikleri, kitaplıklar, bağlantı bağlantıları, bağlı hizmetler, yönetilen özel uç noktalar, not defterleri, işlem hatları, rol atamaları, Spark iş tanımları, Spark yapılandırmaları, SQL betikleri, tetikleyiciler

API sürümleri ve uç nokta desenleri içeren tam listeyi görmek için Terraform Kayıt Defteri'ndeki mevcut kaynaklar referansı göz atın.

Sonraki Adımlar