Microsoft. DocumentDB mongoClusters

Определение ресурсов Bicep

Тип ресурса MongoClusters можно развернуть с помощью операций, предназначенных для следующих операций:

Список измененных свойств в каждой версии API см. в журнала изменений.

Примеры использования

Проверенные модули Azure

Следующие проверенные модули Azure можно использовать для развертывания этого типа ресурсов.

Модуль Описание
Cosmos DB для MongoDB (vCore) Модуль ресурсов AVM для Cosmos DB для MongoDB (vCore)

Формат ресурса

Чтобы создать ресурс Microsoft.DocumentDB/mongoClusters, добавьте следующий Bicep в шаблон.

resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2026-06-01' = {
  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'
    }
    networkBypassMode: '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'
  }
}

Значения свойств

Microsoft.DocumentDB/mongoClusters

Имя Описание Ценность
идентичность Удостоверения управляемой службы, назначенные этому ресурсу. ManagedServiceIdentity
местоположение Географическое расположение, в котором находится ресурс строка (обязательно)
имя Имя ресурса струна

Ограничения целостности:
Минимальная длина = 3
Максимальная длина = 40
Pattern = ^[a-z0-9]+(-[a-z0-9]+)* (обязательно)
свойства Свойства, относящиеся к ресурсу, для этого ресурса. Свойства MongoClusterProperties
Теги Теги ресурсов Словарь имен и значений тегов. См. теги в шаблонах

Свойства администратора

Имя Описание Ценность
пароль Пароль администратора. струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра.
userName Имя пользователя администратора. струна

Свойства AuthConfigProperties

Имя Описание Ценность
allowedModes Разрешены режимы аутентификации для доступа к данным в кластере. Массив строк, содержащий любой из:
'MicrosoftEntraID'
'NativeAuth'

Свойства резервной копии

Имя Описание Ценность

Вычислительные свойства

Имя Описание Ценность
ярус Уровень вычислений, назначаемый кластеру, где каждый уровень сопоставляется с размером виртуального ядра и памяти. Примеры значений: "M30", "M40". струна

CustomerManagedKeyEncryptionProperties

Имя Описание Ценность
keyEncryptionKeyIdentity Удостоверение, используемое для доступа к ключу шифрования ключа. KeyEncryptionKeyIdentity (Ключевая идентификация)
keyEncryptionKeyUrl URI ключа хранилища ключей, используемого для шифрования. струна

DataApiProperties (Свойства DataApi)

Имя Описание Ценность
режим Режим, указывающий, включен ли API данных Mongo для кластера. "Отключено"
"Включено"

EncryptionProperties

Имя Описание Ценность
customerManagedKeyEncryption Настройки шифрования ключа, управляемые клиентом. CustomerManagedKeyEncryptionProperties

Свойства HighAvailabilityProperties

Имя Описание Ценность
targetMode Целевой режим высокой доступности, запрошенный для кластера. "Отключено"
"SameZone"
ZoneRedundantPreferred

KeyEncryptionKeyIdentity

Имя Описание Ценность
тип идентификации Тип удостоверения. Поддерживается только 'UserAssignedIdentity'. UserAssignedIdentity
userAssignedIdentityResourceId Идентификатор ресурса удостоверения, назначенный пользователем. струна

Управляемая служебная идентичность

Имя Описание Ценность
тип Тип управляемого удостоверения службы (где разрешены типы SystemAssigned и UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (обязательно)
ИдентичностиНазначенныеПользователем Набор назначенных пользователем удостоверений, связанных с ресурсом. Ключи словаря userAssignedIdentities будут идентификаторами ресурсов ARM в форме: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Значения словаря могут быть пустыми объектами ({}) в запросах. UserAssignedIdentities

Свойства MongoClusterProperties

Имя Описание Ценность
администратор Свойства локального администратора для кластера Mongo. Свойства администратора
authConfig Конфигурация проверки подлинности для кластера. Свойства AuthConfigProperties
резервная копия Свойства резервного копирования кластера Mongo. Свойства резервной копии
вычислять Свойства вычислений кластера Mongo. Вычислительные свойства
createMode Режим создания кластера mongo. По умолчанию
"GeoReplica"
"PointInTimeRestore"
"Реплика"
dataApi Свойства API данных кластера Mongo. DataApiProperties (Свойства DataApi)
шифрование Конфигурация шифрования для кластера. Зависит от настроенной идентификации. Свойства шифрования
высокая доступность Свойства высокого уровня доступности кластера Mongo. Свойства HighAvailabilityProperties
networkBypassMode Режим обхода сети для кластера. Установка на 'AzureCosmosDB' позволяет сервису Azure Cosmos DB обходить сетевые ограничения. 'AzureCosmosDB'
'None'
предварительный просмотрОсобенности Список подключений к частной конечной точке. Массив строк, содержащий любой из:
"GeoReplicas"
доступ к публичной сети Разрешен доступ к общедоступной конечной точке для этого кластера Mongo. "Отключено"
"Включено"
репликиParameters Параметры для создания кластера mongo реплики. Параметры MongoClusterReplicaParameters
restoreParameters Параметры для создания кластера mongo восстановления на определенный момент времени. MongoClusterRestoreParameters
версия сервера Версия сервера Mongo DB. По умолчанию используется последняя доступная версия, если она не указана. струна
Сегментирования Свойства сегментирования кластера Mongo. СегментированиеProperties
хранение Свойства хранилища кластера Mongo. StorageProperties (Свойства хранилища)

Параметры MongoClusterReplicaParameters

Имя Описание Ценность
sourceLocation Расположение исходного кластера строка (обязательно)
sourceResourceId Идентификатор исходного кластера репликации. строка (обязательно)

MongoClusterRestoreParameters

Имя Описание Ценность
pointInTimeUTC Время в формате UTC для восстановления кластера mongo струна
sourceResourceId Идентификатор ресурса для поиска исходного кластера для восстановления струна

СегментированиеProperties

Имя Описание Ценность
shardCount Количество сегментов для подготовки в кластере. инт

StorageProperties (Свойства хранилища)

Имя Описание Ценность
размерГб Размер диска данных, назначенного каждому серверу. инт
тип Тип хранилища, с помощью которого будут выделены серверы кластера. «ПремиумSSD»
«ПремиумSSDv2»

Отслеживаемые Ресурсные Теги

Имя Описание Ценность

UserAssignedIdentities

Имя Описание Ценность

Пользовательская назначенная идентичность

Имя Описание Ценность

Определение ресурса шаблона ARM

Тип ресурса MongoClusters можно развернуть с помощью операций, предназначенных для следующих операций:

Примеры использования

Формат ресурса

Чтобы создать ресурс Microsoft.DocumentDB/mongoClusters, добавьте следующий код JSON в шаблон.

{
  "type": "Microsoft.DocumentDB/mongoClusters",
  "apiVersion": "2026-06-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"
    },
    "networkBypassMode": "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"
  }
}

Значения свойств

Microsoft.DocumentDB/mongoClusters

Имя Описание Ценность
apiVersion Версия API '2026-06-01'
идентичность Удостоверения управляемой службы, назначенные этому ресурсу. ManagedServiceIdentity
местоположение Географическое расположение, в котором находится ресурс строка (обязательно)
имя Имя ресурса струна

Ограничения целостности:
Минимальная длина = 3
Максимальная длина = 40
Pattern = ^[a-z0-9]+(-[a-z0-9]+)* (обязательно)
свойства Свойства, относящиеся к ресурсу, для этого ресурса. Свойства MongoClusterProperties
Теги Теги ресурсов Словарь имен и значений тегов. См. теги в шаблонах
тип Тип ресурса "Microsoft.DocumentDB/mongoClusters"

Свойства администратора

Имя Описание Ценность
пароль Пароль администратора. струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра.
userName Имя пользователя администратора. струна

Свойства AuthConfigProperties

Имя Описание Ценность
allowedModes Разрешены режимы аутентификации для доступа к данным в кластере. Массив строк, содержащий любой из:
'MicrosoftEntraID'
'NativeAuth'

Свойства резервной копии

Имя Описание Ценность

Вычислительные свойства

Имя Описание Ценность
ярус Уровень вычислений, назначаемый кластеру, где каждый уровень сопоставляется с размером виртуального ядра и памяти. Примеры значений: "M30", "M40". струна

CustomerManagedKeyEncryptionProperties

Имя Описание Ценность
keyEncryptionKeyIdentity Удостоверение, используемое для доступа к ключу шифрования ключа. KeyEncryptionKeyIdentity (Ключевая идентификация)
keyEncryptionKeyUrl URI ключа хранилища ключей, используемого для шифрования. струна

DataApiProperties (Свойства DataApi)

Имя Описание Ценность
режим Режим, указывающий, включен ли API данных Mongo для кластера. "Отключено"
"Включено"

EncryptionProperties

Имя Описание Ценность
customerManagedKeyEncryption Настройки шифрования ключа, управляемые клиентом. CustomerManagedKeyEncryptionProperties

Свойства HighAvailabilityProperties

Имя Описание Ценность
targetMode Целевой режим высокой доступности, запрошенный для кластера. "Отключено"
"SameZone"
ZoneRedundantPreferred

KeyEncryptionKeyIdentity

Имя Описание Ценность
тип идентификации Тип удостоверения. Поддерживается только 'UserAssignedIdentity'. UserAssignedIdentity
userAssignedIdentityResourceId Идентификатор ресурса удостоверения, назначенный пользователем. струна

Управляемая служебная идентичность

Имя Описание Ценность
тип Тип управляемого удостоверения службы (где разрешены типы SystemAssigned и UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (обязательно)
ИдентичностиНазначенныеПользователем Набор назначенных пользователем удостоверений, связанных с ресурсом. Ключи словаря userAssignedIdentities будут идентификаторами ресурсов ARM в форме: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Значения словаря могут быть пустыми объектами ({}) в запросах. UserAssignedIdentities

Свойства MongoClusterProperties

Имя Описание Ценность
администратор Свойства локального администратора для кластера Mongo. Свойства администратора
authConfig Конфигурация проверки подлинности для кластера. Свойства AuthConfigProperties
резервная копия Свойства резервного копирования кластера Mongo. Свойства резервной копии
вычислять Свойства вычислений кластера Mongo. Вычислительные свойства
createMode Режим создания кластера mongo. По умолчанию
"GeoReplica"
"PointInTimeRestore"
"Реплика"
dataApi Свойства API данных кластера Mongo. DataApiProperties (Свойства DataApi)
шифрование Конфигурация шифрования для кластера. Зависит от настроенной идентификации. Свойства шифрования
высокая доступность Свойства высокого уровня доступности кластера Mongo. Свойства HighAvailabilityProperties
networkBypassMode Режим обхода сети для кластера. Установка на 'AzureCosmosDB' позволяет сервису Azure Cosmos DB обходить сетевые ограничения. 'AzureCosmosDB'
'None'
предварительный просмотрОсобенности Список подключений к частной конечной точке. Массив строк, содержащий любой из:
"GeoReplicas"
доступ к публичной сети Разрешен доступ к общедоступной конечной точке для этого кластера Mongo. "Отключено"
"Включено"
репликиParameters Параметры для создания кластера mongo реплики. Параметры MongoClusterReplicaParameters
restoreParameters Параметры для создания кластера mongo восстановления на определенный момент времени. MongoClusterRestoreParameters
версия сервера Версия сервера Mongo DB. По умолчанию используется последняя доступная версия, если она не указана. струна
Сегментирования Свойства сегментирования кластера Mongo. СегментированиеProperties
хранение Свойства хранилища кластера Mongo. StorageProperties (Свойства хранилища)

Параметры MongoClusterReplicaParameters

Имя Описание Ценность
sourceLocation Расположение исходного кластера строка (обязательно)
sourceResourceId Идентификатор исходного кластера репликации. строка (обязательно)

MongoClusterRestoreParameters

Имя Описание Ценность
pointInTimeUTC Время в формате UTC для восстановления кластера mongo струна
sourceResourceId Идентификатор ресурса для поиска исходного кластера для восстановления струна

СегментированиеProperties

Имя Описание Ценность
shardCount Количество сегментов для подготовки в кластере. инт

StorageProperties (Свойства хранилища)

Имя Описание Ценность
размерГб Размер диска данных, назначенного каждому серверу. инт
тип Тип хранилища, с помощью которого будут выделены серверы кластера. «ПремиумSSD»
«ПремиумSSDv2»

Отслеживаемые Ресурсные Теги

Имя Описание Ценность

UserAssignedIdentities

Имя Описание Ценность

Пользовательская назначенная идентичность

Имя Описание Ценность

Определение ресурса Terraform (поставщик AzAPI)

Тип ресурса MongoClusters можно развернуть с помощью операций, предназначенных для следующих операций:

Примеры использования

Примеры Terraform

Базовый пример развертывания Azure Cosmos DB для MongoDB (vCore).

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    = ["*"]
}

Проверенные модули Azure

Следующие проверенные модули Azure можно использовать для развертывания этого типа ресурсов.

Модуль Описание
Cosmos DB для MongoDB (vCore) Модуль ресурсов AVM для Cosmos DB для MongoDB (vCore)

Формат ресурса

Чтобы создать ресурс Microsoft.DocumentDB/mongoClusters, добавьте следующий объект Terraform в шаблон.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DocumentDB/mongoClusters@2026-06-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"
      }
      networkBypassMode = "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"
      }
    }
  }
}

Значения свойств

Microsoft.DocumentDB/mongoClusters

Имя Описание Ценность
идентичность Удостоверения управляемой службы, назначенные этому ресурсу. ManagedServiceIdentity
местоположение Географическое расположение, в котором находится ресурс строка (обязательно)
имя Имя ресурса струна

Ограничения целостности:
Минимальная длина = 3
Максимальная длина = 40
Pattern = ^[a-z0-9]+(-[a-z0-9]+)* (обязательно)
свойства Свойства, относящиеся к ресурсу, для этого ресурса. Свойства MongoClusterProperties
Теги Теги ресурсов Словарь имен и значений тегов.
тип Тип ресурса «Microsoft. DocumentDB/mongoClusters@2026-06-01"

Свойства администратора

Имя Описание Ценность
пароль Пароль администратора. струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра.
userName Имя пользователя администратора. струна

Свойства AuthConfigProperties

Имя Описание Ценность
allowedModes Разрешены режимы аутентификации для доступа к данным в кластере. Массив строк, содержащий любой из:
'MicrosoftEntraID'
'NativeAuth'

Свойства резервной копии

Имя Описание Ценность

Вычислительные свойства

Имя Описание Ценность
ярус Уровень вычислений, назначаемый кластеру, где каждый уровень сопоставляется с размером виртуального ядра и памяти. Примеры значений: "M30", "M40". струна

CustomerManagedKeyEncryptionProperties

Имя Описание Ценность
keyEncryptionKeyIdentity Удостоверение, используемое для доступа к ключу шифрования ключа. KeyEncryptionKeyIdentity (Ключевая идентификация)
keyEncryptionKeyUrl URI ключа хранилища ключей, используемого для шифрования. струна

DataApiProperties (Свойства DataApi)

Имя Описание Ценность
режим Режим, указывающий, включен ли API данных Mongo для кластера. "Отключено"
"Включено"

EncryptionProperties

Имя Описание Ценность
customerManagedKeyEncryption Настройки шифрования ключа, управляемые клиентом. CustomerManagedKeyEncryptionProperties

Свойства HighAvailabilityProperties

Имя Описание Ценность
targetMode Целевой режим высокой доступности, запрошенный для кластера. "Отключено"
"SameZone"
ZoneRedundantPreferred

KeyEncryptionKeyIdentity

Имя Описание Ценность
тип идентификации Тип удостоверения. Поддерживается только 'UserAssignedIdentity'. UserAssignedIdentity
userAssignedIdentityResourceId Идентификатор ресурса удостоверения, назначенный пользователем. струна

Управляемая служебная идентичность

Имя Описание Ценность
тип Тип управляемого удостоверения службы (где разрешены типы SystemAssigned и UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (обязательно)
ИдентичностиНазначенныеПользователем Набор назначенных пользователем удостоверений, связанных с ресурсом. Ключи словаря userAssignedIdentities будут идентификаторами ресурсов ARM в форме: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Значения словаря могут быть пустыми объектами ({}) в запросах. UserAssignedIdentities

Свойства MongoClusterProperties

Имя Описание Ценность
администратор Свойства локального администратора для кластера Mongo. Свойства администратора
authConfig Конфигурация проверки подлинности для кластера. Свойства AuthConfigProperties
резервная копия Свойства резервного копирования кластера Mongo. Свойства резервной копии
вычислять Свойства вычислений кластера Mongo. Вычислительные свойства
createMode Режим создания кластера mongo. По умолчанию
"GeoReplica"
"PointInTimeRestore"
"Реплика"
dataApi Свойства API данных кластера Mongo. DataApiProperties (Свойства DataApi)
шифрование Конфигурация шифрования для кластера. Зависит от настроенной идентификации. Свойства шифрования
высокая доступность Свойства высокого уровня доступности кластера Mongo. Свойства HighAvailabilityProperties
networkBypassMode Режим обхода сети для кластера. Установка на 'AzureCosmosDB' позволяет сервису Azure Cosmos DB обходить сетевые ограничения. 'AzureCosmosDB'
'None'
предварительный просмотрОсобенности Список подключений к частной конечной точке. Массив строк, содержащий любой из:
"GeoReplicas"
доступ к публичной сети Разрешен доступ к общедоступной конечной точке для этого кластера Mongo. "Отключено"
"Включено"
репликиParameters Параметры для создания кластера mongo реплики. Параметры MongoClusterReplicaParameters
restoreParameters Параметры для создания кластера mongo восстановления на определенный момент времени. MongoClusterRestoreParameters
версия сервера Версия сервера Mongo DB. По умолчанию используется последняя доступная версия, если она не указана. струна
Сегментирования Свойства сегментирования кластера Mongo. СегментированиеProperties
хранение Свойства хранилища кластера Mongo. StorageProperties (Свойства хранилища)

Параметры MongoClusterReplicaParameters

Имя Описание Ценность
sourceLocation Расположение исходного кластера строка (обязательно)
sourceResourceId Идентификатор исходного кластера репликации. строка (обязательно)

MongoClusterRestoreParameters

Имя Описание Ценность
pointInTimeUTC Время в формате UTC для восстановления кластера mongo струна
sourceResourceId Идентификатор ресурса для поиска исходного кластера для восстановления струна

СегментированиеProperties

Имя Описание Ценность
shardCount Количество сегментов для подготовки в кластере. инт

StorageProperties (Свойства хранилища)

Имя Описание Ценность
размерГб Размер диска данных, назначенного каждому серверу. инт
тип Тип хранилища, с помощью которого будут выделены серверы кластера. «ПремиумSSD»
«ПремиумSSDv2»

Отслеживаемые Ресурсные Теги

Имя Описание Ценность

UserAssignedIdentities

Имя Описание Ценность

Пользовательская назначенная идентичность

Имя Описание Ценность