Aracılığıyla paylaş


Microsoft.DocumentDB mongoKümeleri

Bicep kaynak tanımı

mongoClusters kaynak türü, aşağıdakileri hedefleyen işlemlerle dağıtılabilir:

Her API sürümünde değiştirilen özelliklerin listesi için bkz. değişiklik günlüğü.

Kaynak biçimi

Microsoft.DocumentDB/mongoClusters kaynağı oluşturmak için şablonunuza aşağıdaki Bicep'i ekleyin.

resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2025-09-01' = {
  scope: resourceSymbolicName or scope
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {}
    }
  }
  location: 'string'
  name: 'string'
  properties: {
    administrator: {
      password: 'string'
      userName: 'string'
    }
    authConfig: {
      allowedModes: [
        'string'
      ]
    }
    backup: {}
    compute: {
      tier: 'string'
    }
    createMode: 'string'
    dataApi: {
      mode: 'string'
    }
    encryption: {
      customerManagedKeyEncryption: {
        keyEncryptionKeyIdentity: {
          identityType: 'string'
          userAssignedIdentityResourceId: 'string'
        }
        keyEncryptionKeyUrl: 'string'
      }
    }
    highAvailability: {
      targetMode: 'string'
    }
    previewFeatures: [
      'string'
    ]
    publicNetworkAccess: 'string'
    replicaParameters: {
      sourceLocation: 'string'
      sourceResourceId: 'string'
    }
    restoreParameters: {
      pointInTimeUTC: 'string'
      sourceResourceId: 'string'
    }
    serverVersion: 'string'
    sharding: {
      shardCount: int
    }
    storage: {
      sizeGb: int
      type: 'string'
    }
  }
  tags: {
    {customized property}: 'string'
  }
}

Özellik Değerleri

Microsoft.DocumentDB/mongoClusters

Ad Açıklama Değer
kimlik Bu kaynağa atanan yönetilen hizmet kimlikleri. ManagedServiceIdentity
yer Kaynağın bulunduğu coğrafi konum dize (gerekli)
ad Kaynak adı dizgi

Kısıtlama -ları:
En az uzunluk = 3
Maksimum uzunluk = 40
Desen = ^[a-z0-9]+(-[a-z0-9]+)* (gerekli)
Özellikler Bu kaynağın kaynağa özgü özellikleri. MongoClusterProperties
kapsam Dağıtım kapsamından farklı bir kapsamda kaynak oluştururken kullanın. Uzantı kaynağını uygulamak için bu özelliği kaynağın sembolik adı olarak ayarlayın.
Etiketler Kaynak etiketleri Etiket adları ve değerleri sözlüğü. Bkz. şablonlardaki Etiketleri

Yönetici Özellikleri

Ad Açıklama Değer
parola Yönetici parolası. dizgi

Kısıtlama -ları:
Hassas değer. Güvenli parametre olarak geçirin.
kullanıcı adı Yönetici kullanıcı adı. dizgi

AuthConfigProperties

Ad Açıklama Değer
izin verilen Modlar Kümedeki veri erişimi için izin verilen kimlik doğrulama modları. Herhangi birini içeren dize dizisi:
'MicrosoftEntraID' (Microsoft EntraID)
'Yerel Kimlik Doğrulaması'

Yedekleme Özellikleri

Ad Açıklama Değer

ComputeProperties (İşlem Özellikleri)

Ad Açıklama Değer
Katmanı Her katmanın bir sanal çekirdek ve bellek boyutuyla eşlendiği kümeye atanacak işlem katmanı. Örnek değerler: 'M30', 'M40'. dizgi

CustomerManagedKeyEncryptionProperties

Ad Açıklama Değer
keyEncryptionKeyIdentity Anahtar şifreleme anahtarına erişmek için kullanılan kimlik. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl Şifreleme için kullanılan anahtar kasası anahtarının URI'si. dizgi

DataApiProperties

Ad Açıklama Değer
mod Mongo Veri API'sinin bir küme için etkinleştirilip etkinleştirilmediğini gösteren mod. 'Devre Dışı'
'Etkin'

EncryptionProperties

Ad Açıklama Değer
customerManagedKeyEncryption Müşteri tarafından yönetilen anahtar şifreleme ayarları. customerManagedKeyEncryptionProperties

HighAvailabilityProperties

Ad Açıklama Değer
hedef Modu Küme için istenen hedef yüksek kullanılabilirlik modu. 'Devre Dışı'
'Aynı Bölge'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Ad Açıklama Değer
kimlikTürü Kimlik türü. Yalnızca 'UserAssignedIdentity' desteklenir. 'UserAssignedIdentity'
userAssignedIdentityResourceId Kullanıcı tarafından atanan kimlik kaynağı kimliği. dizgi

ManagedServiceIdentity (Yönetilen Servis Kimliği)

Ad Açıklama Değer
tür Yönetilen hizmet kimliği türü (hem SystemAssigned hem de UserAssigned türlerine izin verilir). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (gerekli)
kullanıcı tarafından atanan kimlikler Kaynakla ilişkili kullanıcı tarafından atanan kimlik kümesi. userAssignedIdentities sözlük anahtarları şu formda ARM kaynak kimlikleri olacaktır: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Sözlük değerleri, isteklerdeki boş nesneler ({}) olabilir. UserAssignedIdentities

MongoClusterProperties

Ad Açıklama Değer
Yönetici Mongo kümesinin yerel yönetici özellikleri. Yönetici Özellikleri
authConfig (Kimlik Doğrulaması) Küme için kimlik doğrulama yapılandırması. AuthConfigProperties
yedek Mongo kümesinin yedekleme özellikleri. BackupProperties
hesaplamak Mongo kümesinin işlem özellikleri. computeProperties
createMode (Oluştur Modu Mongo kümesi oluşturma modu. 'Varsayılan'
'Coğrafi Çoğaltma'
'PointInTimeRestore'
'Çoğaltma'
veri API'si mongo kümesinin Veri API'sinin özellikleri. DataApiProperties
şifreleme Küme için şifreleme yapılandırması. Yapılandırılan kimliğe bağlıdır. Şifreleme Özellikleri
highAvailability (Yüksek Kullanılabilirlik) Mongo kümesinin yüksek kullanılabilirlik özellikleri. HighAvailabilityProperties
önizlemeÖzellikler Özel uç nokta bağlantılarının listesi. Herhangi birini içeren dize dizisi:
'Coğrafi Kopyalar'
publicNetworkAccess Bu mongo kümesi için genel uç nokta erişimine izin verilip verilmeyeceği. 'Devre Dışı'
'Etkin'
replicaParameters Çoğaltma mongo kümesi oluşturma parametreleri. MongoClusterReplicaParameters
restoreParameters Belirli bir noktaya geri yükleme mongo kümesi oluşturmaya yönelik parametreler. MongoClusterRestoreParameters
sunucuSürümü Mongo DB sunucu sürümü. Belirtilmezse varsayılan olarak en son kullanılabilir sürümü kullanır. dizgi
parçalama Mongo kümesinin parçalama özellikleri. ShardingProperties (Parçalama Özellikleri)
depolama Mongo kümesinin depolama özellikleri. Depolama Özellikleri

MongoClusterReplicaParameters

Ad Açıklama Değer
kaynakKonum Kaynak kümenin konumu dize (gerekli)
sourceResourceId Çoğaltma kaynak kümesinin kimliği. dize (gerekli)

MongoClusterRestoreParameters

Ad Açıklama Değer
pointInTimeUTC Mongo kümesini geri yüklemek için UTC noktası dizgi
sourceResourceId Geri yükleneceği kaynak kümeyi bulmak için kaynak kimliği dizgi

ShardingProperties (Parçalama Özellikleri)

Ad Açıklama Değer
shardCount Kümede sağlanacak parça sayısı. Int

Depolama Özellikleri

Ad Açıklama Değer
boyutGB Her sunucuya atanan veri diskinin boyutu. Int
tür Küme sunucularının sağlanacağı depolama alanı türü. 'PremiumSSD'
'PremiumSSDv2'

TrackedResourceTags

Ad Açıklama Değer

UserAssignedIdentities

Ad Açıklama Değer

Kullanıcı Atanmış Kimlik

Ad Açıklama Değer

Kullanım Örnekleri

Azure Doğrulanmış Modülleri

Aşağıdaki Azure Doğrulanmış Modüller bu kaynak türünü dağıtmak için kullanılabilir.

Modül Açıklama
MongoDB için Cosmos DB (sanal çekirdek) MongoDB için Cosmos DB IÇIN AVM Kaynak Modülü (sanal çekirdek)

ARM şablonu kaynak tanımı

mongoClusters kaynak türü, aşağıdakileri hedefleyen işlemlerle dağıtılabilir:

Her API sürümünde değiştirilen özelliklerin listesi için bkz. değişiklik günlüğü.

Kaynak biçimi

Microsoft.DocumentDB/mongoClusters kaynağı oluşturmak için şablonunuza aşağıdaki JSON dosyasını ekleyin.

{
  "type": "Microsoft.DocumentDB/mongoClusters",
  "apiVersion": "2025-09-01",
  "name": "string",
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {
      }
    }
  },
  "location": "string",
  "properties": {
    "administrator": {
      "password": "string",
      "userName": "string"
    },
    "authConfig": {
      "allowedModes": [ "string" ]
    },
    "backup": {
    },
    "compute": {
      "tier": "string"
    },
    "createMode": "string",
    "dataApi": {
      "mode": "string"
    },
    "encryption": {
      "customerManagedKeyEncryption": {
        "keyEncryptionKeyIdentity": {
          "identityType": "string",
          "userAssignedIdentityResourceId": "string"
        },
        "keyEncryptionKeyUrl": "string"
      }
    },
    "highAvailability": {
      "targetMode": "string"
    },
    "previewFeatures": [ "string" ],
    "publicNetworkAccess": "string",
    "replicaParameters": {
      "sourceLocation": "string",
      "sourceResourceId": "string"
    },
    "restoreParameters": {
      "pointInTimeUTC": "string",
      "sourceResourceId": "string"
    },
    "serverVersion": "string",
    "sharding": {
      "shardCount": "int"
    },
    "storage": {
      "sizeGb": "int",
      "type": "string"
    }
  },
  "tags": {
    "{customized property}": "string"
  }
}

Özellik Değerleri

Microsoft.DocumentDB/mongoClusters

Ad Açıklama Değer
apiVersiyonu API sürümü '2025-09-01'
kimlik Bu kaynağa atanan yönetilen hizmet kimlikleri. ManagedServiceIdentity
yer Kaynağın bulunduğu coğrafi konum dize (gerekli)
ad Kaynak adı dizgi

Kısıtlama -ları:
En az uzunluk = 3
Maksimum uzunluk = 40
Desen = ^[a-z0-9]+(-[a-z0-9]+)* (gerekli)
Özellikler Bu kaynağın kaynağa özgü özellikleri. MongoClusterProperties
Etiketler Kaynak etiketleri Etiket adları ve değerleri sözlüğü. Bkz. şablonlardaki Etiketleri
tür Kaynak türü 'Microsoft.DocumentDB/mongoClusters'

Yönetici Özellikleri

Ad Açıklama Değer
parola Yönetici parolası. dizgi

Kısıtlama -ları:
Hassas değer. Güvenli parametre olarak geçirin.
kullanıcı adı Yönetici kullanıcı adı. dizgi

AuthConfigProperties

Ad Açıklama Değer
izin verilen Modlar Kümedeki veri erişimi için izin verilen kimlik doğrulama modları. Herhangi birini içeren dize dizisi:
'MicrosoftEntraID' (Microsoft EntraID)
'Yerel Kimlik Doğrulaması'

Yedekleme Özellikleri

Ad Açıklama Değer

ComputeProperties (İşlem Özellikleri)

Ad Açıklama Değer
Katmanı Her katmanın bir sanal çekirdek ve bellek boyutuyla eşlendiği kümeye atanacak işlem katmanı. Örnek değerler: 'M30', 'M40'. dizgi

CustomerManagedKeyEncryptionProperties

Ad Açıklama Değer
keyEncryptionKeyIdentity Anahtar şifreleme anahtarına erişmek için kullanılan kimlik. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl Şifreleme için kullanılan anahtar kasası anahtarının URI'si. dizgi

DataApiProperties

Ad Açıklama Değer
mod Mongo Veri API'sinin bir küme için etkinleştirilip etkinleştirilmediğini gösteren mod. 'Devre Dışı'
'Etkin'

EncryptionProperties

Ad Açıklama Değer
customerManagedKeyEncryption Müşteri tarafından yönetilen anahtar şifreleme ayarları. customerManagedKeyEncryptionProperties

HighAvailabilityProperties

Ad Açıklama Değer
hedef Modu Küme için istenen hedef yüksek kullanılabilirlik modu. 'Devre Dışı'
'Aynı Bölge'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Ad Açıklama Değer
kimlikTürü Kimlik türü. Yalnızca 'UserAssignedIdentity' desteklenir. 'UserAssignedIdentity'
userAssignedIdentityResourceId Kullanıcı tarafından atanan kimlik kaynağı kimliği. dizgi

ManagedServiceIdentity (Yönetilen Servis Kimliği)

Ad Açıklama Değer
tür Yönetilen hizmet kimliği türü (hem SystemAssigned hem de UserAssigned türlerine izin verilir). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (gerekli)
kullanıcı tarafından atanan kimlikler Kaynakla ilişkili kullanıcı tarafından atanan kimlik kümesi. userAssignedIdentities sözlük anahtarları şu formda ARM kaynak kimlikleri olacaktır: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Sözlük değerleri, isteklerdeki boş nesneler ({}) olabilir. UserAssignedIdentities

MongoClusterProperties

Ad Açıklama Değer
Yönetici Mongo kümesinin yerel yönetici özellikleri. Yönetici Özellikleri
authConfig (Kimlik Doğrulaması) Küme için kimlik doğrulama yapılandırması. AuthConfigProperties
yedek Mongo kümesinin yedekleme özellikleri. BackupProperties
hesaplamak Mongo kümesinin işlem özellikleri. computeProperties
createMode (Oluştur Modu Mongo kümesi oluşturma modu. 'Varsayılan'
'Coğrafi Çoğaltma'
'PointInTimeRestore'
'Çoğaltma'
veri API'si mongo kümesinin Veri API'sinin özellikleri. DataApiProperties
şifreleme Küme için şifreleme yapılandırması. Yapılandırılan kimliğe bağlıdır. Şifreleme Özellikleri
highAvailability (Yüksek Kullanılabilirlik) Mongo kümesinin yüksek kullanılabilirlik özellikleri. HighAvailabilityProperties
önizlemeÖzellikler Özel uç nokta bağlantılarının listesi. Herhangi birini içeren dize dizisi:
'Coğrafi Kopyalar'
publicNetworkAccess Bu mongo kümesi için genel uç nokta erişimine izin verilip verilmeyeceği. 'Devre Dışı'
'Etkin'
replicaParameters Çoğaltma mongo kümesi oluşturma parametreleri. MongoClusterReplicaParameters
restoreParameters Belirli bir noktaya geri yükleme mongo kümesi oluşturmaya yönelik parametreler. MongoClusterRestoreParameters
sunucuSürümü Mongo DB sunucu sürümü. Belirtilmezse varsayılan olarak en son kullanılabilir sürümü kullanır. dizgi
parçalama Mongo kümesinin parçalama özellikleri. ShardingProperties (Parçalama Özellikleri)
depolama Mongo kümesinin depolama özellikleri. Depolama Özellikleri

MongoClusterReplicaParameters

Ad Açıklama Değer
kaynakKonum Kaynak kümenin konumu dize (gerekli)
sourceResourceId Çoğaltma kaynak kümesinin kimliği. dize (gerekli)

MongoClusterRestoreParameters

Ad Açıklama Değer
pointInTimeUTC Mongo kümesini geri yüklemek için UTC noktası dizgi
sourceResourceId Geri yükleneceği kaynak kümeyi bulmak için kaynak kimliği dizgi

ShardingProperties (Parçalama Özellikleri)

Ad Açıklama Değer
shardCount Kümede sağlanacak parça sayısı. Int

Depolama Özellikleri

Ad Açıklama Değer
boyutGB Her sunucuya atanan veri diskinin boyutu. Int
tür Küme sunucularının sağlanacağı depolama alanı türü. 'PremiumSSD'
'PremiumSSDv2'

TrackedResourceTags

Ad Açıklama Değer

UserAssignedIdentities

Ad Açıklama Değer

Kullanıcı Atanmış Kimlik

Ad Açıklama Değer

Kullanım Örnekleri

Terraform (AzAPI sağlayıcısı) kaynak tanımı

mongoClusters kaynak türü, aşağıdakileri hedefleyen işlemlerle dağıtılabilir:

Her API sürümünde değiştirilen özelliklerin listesi için bkz. değişiklik günlüğü.

Kaynak biçimi

Microsoft.DocumentDB/mongoClusters kaynağı oluşturmak için şablonunuza aşağıdaki Terraform'u ekleyin.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  name = "string"
  parent_id = "string"
  identity {
    type = "string"
    identity_ids = [
      "string"
    ]
  }
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = {
    properties = {
      administrator = {
        password = "string"
        userName = "string"
      }
      authConfig = {
        allowedModes = [
          "string"
        ]
      }
      backup = {
      }
      compute = {
        tier = "string"
      }
      createMode = "string"
      dataApi = {
        mode = "string"
      }
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType = "string"
            userAssignedIdentityResourceId = "string"
          }
          keyEncryptionKeyUrl = "string"
        }
      }
      highAvailability = {
        targetMode = "string"
      }
      previewFeatures = [
        "string"
      ]
      publicNetworkAccess = "string"
      replicaParameters = {
        sourceLocation = "string"
        sourceResourceId = "string"
      }
      restoreParameters = {
        pointInTimeUTC = "string"
        sourceResourceId = "string"
      }
      serverVersion = "string"
      sharding = {
        shardCount = int
      }
      storage = {
        sizeGb = int
        type = "string"
      }
    }
  }
}

Özellik Değerleri

Microsoft.DocumentDB/mongoClusters

Ad Açıklama Değer
kimlik Bu kaynağa atanan yönetilen hizmet kimlikleri. ManagedServiceIdentity
yer Kaynağın bulunduğu coğrafi konum dize (gerekli)
ad Kaynak adı dizgi

Kısıtlama -ları:
En az uzunluk = 3
Maksimum uzunluk = 40
Desen = ^[a-z0-9]+(-[a-z0-9]+)* (gerekli)
parent_id Bu uzantı kaynağının uygulanacağı kaynağın kimliği. dize (gerekli)
Özellikler Bu kaynağın kaynağa özgü özellikleri. MongoClusterProperties
Etiketler Kaynak etiketleri Etiket adları ve değerleri sözlüğü.
tür Kaynak türü "Microsoft.DocumentDB/mongoClusters@2025-09-01"

Yönetici Özellikleri

Ad Açıklama Değer
parola Yönetici parolası. dizgi

Kısıtlama -ları:
Hassas değer. Güvenli parametre olarak geçirin.
kullanıcı adı Yönetici kullanıcı adı. dizgi

AuthConfigProperties

Ad Açıklama Değer
izin verilen Modlar Kümedeki veri erişimi için izin verilen kimlik doğrulama modları. Herhangi birini içeren dize dizisi:
'MicrosoftEntraID' (Microsoft EntraID)
'Yerel Kimlik Doğrulaması'

Yedekleme Özellikleri

Ad Açıklama Değer

ComputeProperties (İşlem Özellikleri)

Ad Açıklama Değer
Katmanı Her katmanın bir sanal çekirdek ve bellek boyutuyla eşlendiği kümeye atanacak işlem katmanı. Örnek değerler: 'M30', 'M40'. dizgi

CustomerManagedKeyEncryptionProperties

Ad Açıklama Değer
keyEncryptionKeyIdentity Anahtar şifreleme anahtarına erişmek için kullanılan kimlik. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl Şifreleme için kullanılan anahtar kasası anahtarının URI'si. dizgi

DataApiProperties

Ad Açıklama Değer
mod Mongo Veri API'sinin bir küme için etkinleştirilip etkinleştirilmediğini gösteren mod. 'Devre Dışı'
'Etkin'

EncryptionProperties

Ad Açıklama Değer
customerManagedKeyEncryption Müşteri tarafından yönetilen anahtar şifreleme ayarları. customerManagedKeyEncryptionProperties

HighAvailabilityProperties

Ad Açıklama Değer
hedef Modu Küme için istenen hedef yüksek kullanılabilirlik modu. 'Devre Dışı'
'Aynı Bölge'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Ad Açıklama Değer
kimlikTürü Kimlik türü. Yalnızca 'UserAssignedIdentity' desteklenir. 'UserAssignedIdentity'
userAssignedIdentityResourceId Kullanıcı tarafından atanan kimlik kaynağı kimliği. dizgi

ManagedServiceIdentity (Yönetilen Servis Kimliği)

Ad Açıklama Değer
tür Yönetilen hizmet kimliği türü (hem SystemAssigned hem de UserAssigned türlerine izin verilir). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (gerekli)
kullanıcı tarafından atanan kimlikler Kaynakla ilişkili kullanıcı tarafından atanan kimlik kümesi. userAssignedIdentities sözlük anahtarları şu formda ARM kaynak kimlikleri olacaktır: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Sözlük değerleri, isteklerdeki boş nesneler ({}) olabilir. UserAssignedIdentities

MongoClusterProperties

Ad Açıklama Değer
Yönetici Mongo kümesinin yerel yönetici özellikleri. Yönetici Özellikleri
authConfig (Kimlik Doğrulaması) Küme için kimlik doğrulama yapılandırması. AuthConfigProperties
yedek Mongo kümesinin yedekleme özellikleri. BackupProperties
hesaplamak Mongo kümesinin işlem özellikleri. computeProperties
createMode (Oluştur Modu Mongo kümesi oluşturma modu. 'Varsayılan'
'Coğrafi Çoğaltma'
'PointInTimeRestore'
'Çoğaltma'
veri API'si mongo kümesinin Veri API'sinin özellikleri. DataApiProperties
şifreleme Küme için şifreleme yapılandırması. Yapılandırılan kimliğe bağlıdır. Şifreleme Özellikleri
highAvailability (Yüksek Kullanılabilirlik) Mongo kümesinin yüksek kullanılabilirlik özellikleri. HighAvailabilityProperties
önizlemeÖzellikler Özel uç nokta bağlantılarının listesi. Herhangi birini içeren dize dizisi:
'Coğrafi Kopyalar'
publicNetworkAccess Bu mongo kümesi için genel uç nokta erişimine izin verilip verilmeyeceği. 'Devre Dışı'
'Etkin'
replicaParameters Çoğaltma mongo kümesi oluşturma parametreleri. MongoClusterReplicaParameters
restoreParameters Belirli bir noktaya geri yükleme mongo kümesi oluşturmaya yönelik parametreler. MongoClusterRestoreParameters
sunucuSürümü Mongo DB sunucu sürümü. Belirtilmezse varsayılan olarak en son kullanılabilir sürümü kullanır. dizgi
parçalama Mongo kümesinin parçalama özellikleri. ShardingProperties (Parçalama Özellikleri)
depolama Mongo kümesinin depolama özellikleri. Depolama Özellikleri

MongoClusterReplicaParameters

Ad Açıklama Değer
kaynakKonum Kaynak kümenin konumu dize (gerekli)
sourceResourceId Çoğaltma kaynak kümesinin kimliği. dize (gerekli)

MongoClusterRestoreParameters

Ad Açıklama Değer
pointInTimeUTC Mongo kümesini geri yüklemek için UTC noktası dizgi
sourceResourceId Geri yükleneceği kaynak kümeyi bulmak için kaynak kimliği dizgi

ShardingProperties (Parçalama Özellikleri)

Ad Açıklama Değer
shardCount Kümede sağlanacak parça sayısı. Int

Depolama Özellikleri

Ad Açıklama Değer
boyutGB Her sunucuya atanan veri diskinin boyutu. Int
tür Küme sunucularının sağlanacağı depolama alanı türü. 'PremiumSSD'
'PremiumSSDv2'

TrackedResourceTags

Ad Açıklama Değer

UserAssignedIdentities

Ad Açıklama Değer

Kullanıcı Atanmış Kimlik

Ad Açıklama Değer

Kullanım Örnekleri

Terraform Örnekleri

MongoDB (vCore) için Azure Cosmos DB dağıtımına temel bir örnek.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
    time = {
      source = "hashicorp/time"
    }
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westus3"
}

variable "replica_location" {
  type    = string
  default = "centralus"
}

variable "mongo_admin_username" {
  type    = string
  default = "mongoAdmin"
}

variable "mongo_admin_password" {
  type        = string
  description = "The administrator password for the MongoDB cluster"
  sensitive   = true
}

variable "mongo_restore_admin_password" {
  type        = string
  description = "The administrator password for the restored MongoDB cluster"
  sensitive   = true
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "userAssignedIdentity" {
  type                      = "Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31"
  parent_id                 = azapi_resource.resourceGroup.id
  name                      = var.resource_name
  location                  = var.location
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

data "azapi_client_config" "current" {}

resource "azapi_resource" "vault" {
  type      = "Microsoft.KeyVault/vaults@2023-02-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-kv"
  location  = var.location
  body = {
    properties = {
      createMode                   = "default"
      enablePurgeProtection        = true
      enableSoftDelete             = true
      enableRbacAuthorization      = true
      enabledForDeployment         = true
      enabledForDiskEncryption     = true
      enabledForTemplateDeployment = true
      publicNetworkAccess          = "Enabled"
      accessPolicies               = []
      sku = {
        family = "A"
        name   = "standard"
      }
      tenantId = data.azapi_client_config.current.tenant_id
    }
  }
}

data "azapi_resource_list" "kvCertificatesOfficerRoleDefinition" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Officer'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentTf" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault.id
  name      = uuid()
  body = {
    properties = {
      principalId      = data.azapi_client_config.current.object_id
      roleDefinitionId = data.azapi_resource_list.kvCertificatesOfficerRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_list" "kvCertificatesUserRoleDefinition" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Service Encryption User'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentIdentity" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault.id
  name      = uuid()
  body = {
    properties = {
      principalId      = azapi_resource.userAssignedIdentity.output.properties.principalId
      roleDefinitionId = data.azapi_resource_list.kvCertificatesUserRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_id" "key" {
  type      = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  parent_id = azapi_resource.vault.id
  name      = var.resource_name
}

resource "azapi_resource_action" "key" {
  type        = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  resource_id = data.azapi_resource_id.key.id
  method      = "PUT"
  body = {
    properties = {
      keySize = 2048
      kty     = "RSA"
      keyOps  = ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"]
    }
  }
  response_export_values = ["*"]
  depends_on = [
    azapi_resource.kvRoleAssignmentTf,
    azapi_resource.kvRoleAssignmentIdentity,
  ]
}

# replica key vault

resource "azapi_resource" "vault_replica" {
  type      = "Microsoft.KeyVault/vaults@2023-02-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-kv-replica"
  location  = var.replica_location
  body = {
    properties = {
      createMode                   = "default"
      enablePurgeProtection        = true
      enableSoftDelete             = true
      enableRbacAuthorization      = true
      enabledForDeployment         = true
      enabledForDiskEncryption     = true
      enabledForTemplateDeployment = true
      publicNetworkAccess          = "Enabled"
      accessPolicies               = []
      sku = {
        family = "A"
        name   = "standard"
      }
      tenantId = data.azapi_client_config.current.tenant_id
    }
  }
}

data "azapi_resource_list" "kvCertificatesOfficerRoleDefinition_replica" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Officer'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentTf_replica" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  name      = uuid()
  body = {
    properties = {
      principalId      = data.azapi_client_config.current.object_id
      roleDefinitionId = data.azapi_resource_list.kvCertificatesOfficerRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_list" "kvCertificatesUserRoleDefinition_replica" {
  type      = "Microsoft.Authorization/roleDefinitions@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  response_export_values = {
    definition_id = "value[?properties.roleName == 'Key Vault Crypto Service Encryption User'].id | [0]"
  }
}

resource "azapi_resource" "kvRoleAssignmentIdentity_replica" {
  type      = "Microsoft.Authorization/roleAssignments@2022-04-01"
  parent_id = azapi_resource.vault_replica.id
  name      = uuid()
  body = {
    properties = {
      principalId      = azapi_resource.userAssignedIdentity.output.properties.principalId
      roleDefinitionId = data.azapi_resource_list.kvCertificatesUserRoleDefinition.output.definition_id
    }
  }
  lifecycle {
    ignore_changes = [name]
  }
}

data "azapi_resource_id" "key_replica" {
  type      = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  parent_id = azapi_resource.vault_replica.id
  name      = var.resource_name
}

resource "azapi_resource_action" "key_replica" {
  type        = "Microsoft.KeyVault/vaults/keys@2023-02-01"
  resource_id = data.azapi_resource_id.key_replica.id
  method      = "PUT"
  body = {
    properties = {
      keySize = 2048
      kty     = "RSA"
      keyOps  = ["encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey"]
    }
  }
  response_export_values = ["*"]
  depends_on = [
    azapi_resource.kvRoleAssignmentTf_replica,
    azapi_resource.kvRoleAssignmentIdentity_replica,
  ]
}

resource "azapi_resource" "mongoCluster" {
  type      = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  identity {
    type         = "UserAssigned"
    identity_ids = [azapi_resource.userAssignedIdentity.id]
  }
  body = {
    properties = {
      administrator = {
        userName = var.mongo_admin_username
      }
      authConfig = {
        allowedModes = ["MicrosoftEntraID", "NativeAuth"]
      }
      compute = {
        tier = "M30"
      }
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType                   = "UserAssignedIdentity"
            userAssignedIdentityResourceId = azapi_resource.userAssignedIdentity.id
          }
          keyEncryptionKeyUrl = azapi_resource_action.key.output.properties.keyUri
        }
      }
      highAvailability = {
        targetMode = "Disabled"
      }
      previewFeatures = [
        "ShardRebalancer"
      ]
      publicNetworkAccess = "Enabled"
      serverVersion       = "5.0"
      sharding = {
        shardCount = 1
      }
      storage = {
        sizeGb = 32
      }
    }
  }
  sensitive_body = {
    properties = {
      administrator = {
        password = var.mongo_admin_password
      }
    }
  }
  tags = {
    Environment = "Test"
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

# Wait for the MongoDB cluster to have backup capability available
resource "time_sleep" "wait_for_backup_ready" {
  depends_on = [azapi_resource.mongoCluster]

  # Wait 5 minutes for backup to be available - MongoDB clusters typically need time to enable backup
  create_duration = "300s"
}

# Data source to get the updated cluster info with backup details
data "azapi_resource" "mongoCluster_backup_check" {
  type        = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  resource_id = azapi_resource.mongoCluster.id

  response_export_values = ["properties.backup.earliestRestoreTime"]
  depends_on             = [time_sleep.wait_for_backup_ready]
}

resource "azapi_resource" "mongoCluster_PointInTimeRestore" {
  type      = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-restore"
  location  = var.location
  identity {
    type         = "UserAssigned"
    identity_ids = [azapi_resource.userAssignedIdentity.id]
  }
  body = {
    properties = {
      createMode = "PointInTimeRestore"
      administrator = {
        userName = var.mongo_admin_username
      }
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType                   = "UserAssignedIdentity"
            userAssignedIdentityResourceId = azapi_resource.userAssignedIdentity.id
          }
          keyEncryptionKeyUrl = azapi_resource_action.key.output.properties.keyUri
        }
      }
      restoreParameters = {
        pointInTimeUTC   = data.azapi_resource.mongoCluster_backup_check.output.properties.backup.earliestRestoreTime
        sourceResourceId = azapi_resource.mongoCluster.id
      }
    }
  }
  sensitive_body = {
    properties = {
      administrator = {
        password = var.mongo_restore_admin_password
      }
    }
  }
  schema_validation_enabled = false
  ignore_casing             = false
  ignore_missing_property   = false

  depends_on = [
    data.azapi_resource.mongoCluster_backup_check
  ]
}

resource "azapi_resource" "mongoCluster_GeoReplica" {
  type      = "Microsoft.DocumentDB/mongoClusters@2025-09-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-repl"
  location  = var.replica_location
  identity {
    type         = "UserAssigned"
    identity_ids = [azapi_resource.userAssignedIdentity.id]
  }
  body = {
    properties = {
      createMode = "GeoReplica"
      encryption = {
        customerManagedKeyEncryption = {
          keyEncryptionKeyIdentity = {
            identityType                   = "UserAssignedIdentity"
            userAssignedIdentityResourceId = azapi_resource.userAssignedIdentity.id
          }
          keyEncryptionKeyUrl = azapi_resource_action.key_replica.output.properties.keyUri
        }
      }
      replicaParameters = {
        sourceLocation   = var.location # Source location matches the primary cluster
        sourceResourceId = azapi_resource.mongoCluster.id
      }
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}