Microsoft. DocumentDB mongoClusters 2026-06-01

Definición de recurso Bicep

El tipo de recurso mongoClusters se puede implementar con operaciones destinadas a:

  • Grupos de recursos - Véase grupos de recursos c1

Para obtener una lista de las propiedades modificadas en cada versión de API, consulte registro de cambios.

Ejemplos de uso

Módulos comprobados de Azure

Los siguientes módulos verificados Azure pueden usarse para desplegar este tipo de recurso.

Módulo Descripción
cosmos DB para MongoDB (núcleo virtual) Módulo de recursos de AVM para Cosmos DB para MongoDB (núcleo virtual)

Formato de los recursos

Para crear un recurso Microsoft.DocumentDB/mongoClusters, agregue el siguiente bicep a la plantilla.

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'
  }
}

Valores de propiedad

Microsoft. DocumentDB/mongoClusters

Nombre Descripción Value
identity Identidades de servicio administradas asignadas a este recurso. managedServiceIdentity
location Ubicación geográfica donde reside el recurso string (obligatorio)
nombre El nombre del recurso string

Restricciones:
Longitud mínima = 3
Longitud máxima = 40
Patrón = ^[a-z0-9]+(-[a-z0-9]+)* (obligatorio)
properties Propiedades específicas del recurso para este recurso. MongoClusterProperties
tags Etiquetas de recursos Diccionario de nombres y valores de etiqueta. Consulta c0 en las plantillas

AdministratorProperties (Propiedades del administrador)

Nombre Descripción Value
password Contraseña de administrador. string

Restricciones:
Valor confidencial. Pase como parámetro seguro.
userName Nombre de usuario del administrador. string

AuthConfigProperties

Nombre Descripción Value
allowedModes Modos de autenticación permitidos para el acceso a datos en el clúster. Matriz de cadenas que contiene cualquiera de:
'MicrosoftEntraID'
'Autün nativo'

BackupProperties (Propiedades de respaldo)

Nombre Descripción Value

ComputeProperties

Nombre Descripción Value
tier Nivel de proceso que se va a asignar al clúster, donde cada nivel se asigna a un tamaño de núcleo virtual y memoria. Valores de ejemplo: "M30", "M40". string

CustomerManagedKeyEncryptionProperties

Nombre Descripción Value
keyEncryptionKeyIdentity La identidad utilizada para acceder a la clave de cifrado de claves. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl URI de la clave del almacén de claves que se usa para el cifrado. string

DataApiProperties

Nombre Descripción Value
mode Modo que indica si la API de datos de Mongo está habilitada para un clúster. 'Disabled'
'Enabled'

Propiedades de Encriptación

Nombre Descripción Value
customerManagedKeyEncryption Configuración de cifrado de claves administradas por el cliente. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Nombre Descripción Value
targetMode Modo de alta disponibilidad de destino solicitado para el clúster. 'Disabled'
'Misma zona'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Nombre Descripción Value
identityType Tipo de identidad. Solo se admite 'UserAssignedIdentity'. 'IdentidadAsignada por el usuario'
userAssignedIdentityResourceId El identificador de recurso de identidad asignado por el usuario. string

ManagedServiceIdentity

Nombre Descripción Value
type Tipo de identidad de servicio administrada (donde se permiten los tipos SystemAssigned y UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (obligatorio)
userAssignedIdentities Conjunto de identidades asignadas por el usuario asociadas al recurso. Las claves del diccionario usuariAsignedIdentities serán los identificadores de recursos ARM en el formulario: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft. ManagedIdentity/userAssignedIdentities/{identityName}. Los valores del diccionario pueden ser objetos vacíos ({}) en las solicitudes. UserAssignedIdentities

MongoClusterProperties

Nombre Descripción Value
administrador Propiedades de administrador local para el clúster de mongo. AdministratorProperties
authConfig La configuración de autenticación para el clúster. AuthConfigProperties
copia de seguridad Propiedades de copia de seguridad del clúster de mongo. BackupProperties (Propiedades de respaldo)
compute Propiedades de proceso del clúster de mongo. ComputeProperties de
createMode Modo para crear un clúster de Mongo. 'Default'
'Réplica geográfica'
'PointInTimeRestore'
'Réplica'
dataApi Las propiedades de Data API del clúster de mongo. DataApiProperties
encryption La configuración de cifrado del clúster. Depende de la identidad que se esté configurando. EncryptionProperties
alta disponibilidad Propiedades de alta disponibilidad del clúster de mongo. HighAvailabilityProperties
networkBypassMode El modo de bypass de red para el clúster. Configurar en 'AzureCosmosDB' permite que el servicio de Azure Cosmos DB evite las restricciones de red. 'AzureCosmosDB'
'None'
previewFeatures Lista de conexiones de punto de conexión privado. Matriz de cadenas que contiene cualquiera de:
'Réplicas geográficas'
publicNetworkAccess Indica si se permite o no el acceso al punto de conexión público para este clúster de Mongo. 'Disabled'
'Enabled'
replicaParameters Parámetros para crear un clúster de mongo de réplica. MongoClusterReplicaParameters
restoreParameters Los parámetros para crear un clúster de mongo de restauración a un momento dado. MongoClusterRestoreParameters
serverVersion Versión del servidor de Mongo DB. El valor predeterminado es la versión más reciente disponible si no se especifica. string
particionamiento Propiedades de particionamiento del clúster de mongo. ShardingProperties
almacenamiento Propiedades de almacenamiento del clúster de mongo. StorageProperties (Propiedades de almacenamiento)

MongoClusterReplicaParameters

Nombre Descripción Value
ubicaciónFuente Ubicación del clúster de origen string (obligatorio)
sourceResourceId Identificador del clúster de origen de replicación. string (obligatorio)

MongoClusterRestoreParameters

Nombre Descripción Value
pointInTimeUTC Hora UTC a la que se va a restaurar un clúster de Mongo string
sourceResourceId Identificador de recurso para buscar el clúster de origen que se va a restaurar string

ShardingProperties

Nombre Descripción Value
shardCount Número de particiones que se van a aprovisionar en el clúster. int

StorageProperties (Propiedades de almacenamiento)

Nombre Descripción Value
tamañoGb Tamaño del disco de datos asignado a cada servidor. int
type El tipo de almacenamiento con el que se van a aprovisionar los servidores de clúster. 'SSD premium'
'PremiumSSDv2'

TrackedResourceTags

Nombre Descripción Value

UserAssignedIdentities

Nombre Descripción Value

UserAssignedIdentity

Nombre Descripción Value

Definición de recursos de plantilla de ARM

El tipo de recurso mongoClusters se puede implementar con operaciones destinadas a:

Ejemplos de uso

Formato de los recursos

Para crear un recurso Microsoft.DocumentDB/mongoClusters, agregue el siguiente JSON a la plantilla.

{
  "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"
  }
}

Valores de propiedad

Microsoft. DocumentDB/mongoClusters

Nombre Descripción Value
apiVersion La versión de api '2026-06-01'
identity Identidades de servicio administradas asignadas a este recurso. managedServiceIdentity
location Ubicación geográfica donde reside el recurso string (obligatorio)
nombre El nombre del recurso string

Restricciones:
Longitud mínima = 3
Longitud máxima = 40
Patrón = ^[a-z0-9]+(-[a-z0-9]+)* (obligatorio)
properties Propiedades específicas del recurso para este recurso. MongoClusterProperties
tags Etiquetas de recursos Diccionario de nombres y valores de etiqueta. Consulta c0 en las plantillas
type El tipo de recurso 'Microsoft.DocumentDB/mongoClusters'

AdministratorProperties (Propiedades del administrador)

Nombre Descripción Value
password Contraseña de administrador. string

Restricciones:
Valor confidencial. Pase como parámetro seguro.
userName Nombre de usuario del administrador. string

AuthConfigProperties

Nombre Descripción Value
allowedModes Modos de autenticación permitidos para el acceso a datos en el clúster. Matriz de cadenas que contiene cualquiera de:
'MicrosoftEntraID'
'Autün nativo'

BackupProperties (Propiedades de respaldo)

Nombre Descripción Value

ComputeProperties

Nombre Descripción Value
tier Nivel de proceso que se va a asignar al clúster, donde cada nivel se asigna a un tamaño de núcleo virtual y memoria. Valores de ejemplo: "M30", "M40". string

CustomerManagedKeyEncryptionProperties

Nombre Descripción Value
keyEncryptionKeyIdentity La identidad utilizada para acceder a la clave de cifrado de claves. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl URI de la clave del almacén de claves que se usa para el cifrado. string

DataApiProperties

Nombre Descripción Value
mode Modo que indica si la API de datos de Mongo está habilitada para un clúster. 'Disabled'
'Enabled'

Propiedades de Encriptación

Nombre Descripción Value
customerManagedKeyEncryption Configuración de cifrado de claves administradas por el cliente. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Nombre Descripción Value
targetMode Modo de alta disponibilidad de destino solicitado para el clúster. 'Disabled'
'Misma zona'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Nombre Descripción Value
identityType Tipo de identidad. Solo se admite 'UserAssignedIdentity'. 'IdentidadAsignada por el usuario'
userAssignedIdentityResourceId El identificador de recurso de identidad asignado por el usuario. string

ManagedServiceIdentity

Nombre Descripción Value
type Tipo de identidad de servicio administrada (donde se permiten los tipos SystemAssigned y UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (obligatorio)
userAssignedIdentities Conjunto de identidades asignadas por el usuario asociadas al recurso. Las claves del diccionario usuariAsignedIdentities serán los identificadores de recursos ARM en el formulario: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft. ManagedIdentity/userAssignedIdentities/{identityName}. Los valores del diccionario pueden ser objetos vacíos ({}) en las solicitudes. UserAssignedIdentities

MongoClusterProperties

Nombre Descripción Value
administrador Propiedades de administrador local para el clúster de mongo. AdministratorProperties
authConfig La configuración de autenticación para el clúster. AuthConfigProperties
copia de seguridad Propiedades de copia de seguridad del clúster de mongo. BackupProperties (Propiedades de respaldo)
compute Propiedades de proceso del clúster de mongo. ComputeProperties de
createMode Modo para crear un clúster de Mongo. 'Default'
'Réplica geográfica'
'PointInTimeRestore'
'Réplica'
dataApi Las propiedades de Data API del clúster de mongo. DataApiProperties
encryption La configuración de cifrado del clúster. Depende de la identidad que se esté configurando. EncryptionProperties
alta disponibilidad Propiedades de alta disponibilidad del clúster de mongo. HighAvailabilityProperties
networkBypassMode El modo de bypass de red para el clúster. Configurar en 'AzureCosmosDB' permite que el servicio de Azure Cosmos DB evite las restricciones de red. 'AzureCosmosDB'
'None'
previewFeatures Lista de conexiones de punto de conexión privado. Matriz de cadenas que contiene cualquiera de:
'Réplicas geográficas'
publicNetworkAccess Indica si se permite o no el acceso al punto de conexión público para este clúster de Mongo. 'Disabled'
'Enabled'
replicaParameters Parámetros para crear un clúster de mongo de réplica. MongoClusterReplicaParameters
restoreParameters Los parámetros para crear un clúster de mongo de restauración a un momento dado. MongoClusterRestoreParameters
serverVersion Versión del servidor de Mongo DB. El valor predeterminado es la versión más reciente disponible si no se especifica. string
particionamiento Propiedades de particionamiento del clúster de mongo. ShardingProperties
almacenamiento Propiedades de almacenamiento del clúster de mongo. StorageProperties (Propiedades de almacenamiento)

MongoClusterReplicaParameters

Nombre Descripción Value
ubicaciónFuente Ubicación del clúster de origen string (obligatorio)
sourceResourceId Identificador del clúster de origen de replicación. string (obligatorio)

MongoClusterRestoreParameters

Nombre Descripción Value
pointInTimeUTC Hora UTC a la que se va a restaurar un clúster de Mongo string
sourceResourceId Identificador de recurso para buscar el clúster de origen que se va a restaurar string

ShardingProperties

Nombre Descripción Value
shardCount Número de particiones que se van a aprovisionar en el clúster. int

StorageProperties (Propiedades de almacenamiento)

Nombre Descripción Value
tamañoGb Tamaño del disco de datos asignado a cada servidor. int
type El tipo de almacenamiento con el que se van a aprovisionar los servidores de clúster. 'SSD premium'
'PremiumSSDv2'

TrackedResourceTags

Nombre Descripción Value

UserAssignedIdentities

Nombre Descripción Value

UserAssignedIdentity

Nombre Descripción Value

Definición de recursos de Terraform (proveedor AzAPI)

El tipo de recurso mongoClusters se puede implementar con operaciones destinadas a:

  • Grupos de recursos Para una lista de propiedades modificadas en cada versión de la API, consulte registro de cambios.

Ejemplos de uso

Ejemplos de Terraform

Un ejemplo básico de despliegue de Azure Cosmos DB para 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    = ["*"]
}

Módulos comprobados de Azure

Los siguientes módulos verificados Azure pueden usarse para desplegar este tipo de recurso.

Módulo Descripción
cosmos DB para MongoDB (núcleo virtual) Módulo de recursos de AVM para Cosmos DB para MongoDB (núcleo virtual)

Formato de los recursos

Para crear un recurso Microsoft.DocumentDB/mongoClusters, agregue el siguiente Terraform a la plantilla.

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"
      }
    }
  }
}

Valores de propiedad

Microsoft. DocumentDB/mongoClusters

Nombre Descripción Value
identity Identidades de servicio administradas asignadas a este recurso. managedServiceIdentity
location Ubicación geográfica donde reside el recurso string (obligatorio)
nombre El nombre del recurso string

Restricciones:
Longitud mínima = 3
Longitud máxima = 40
Patrón = ^[a-z0-9]+(-[a-z0-9]+)* (obligatorio)
properties Propiedades específicas del recurso para este recurso. MongoClusterProperties
tags Etiquetas de recursos Diccionario de nombres y valores de etiqueta.
type El tipo de recurso "Microsoft. DocumentDB/mongoClusters@2026-06-01"

AdministratorProperties (Propiedades del administrador)

Nombre Descripción Value
password Contraseña de administrador. string

Restricciones:
Valor confidencial. Pase como parámetro seguro.
userName Nombre de usuario del administrador. string

AuthConfigProperties

Nombre Descripción Value
allowedModes Modos de autenticación permitidos para el acceso a datos en el clúster. Matriz de cadenas que contiene cualquiera de:
'MicrosoftEntraID'
'Autün nativo'

BackupProperties (Propiedades de respaldo)

Nombre Descripción Value

ComputeProperties

Nombre Descripción Value
tier Nivel de proceso que se va a asignar al clúster, donde cada nivel se asigna a un tamaño de núcleo virtual y memoria. Valores de ejemplo: "M30", "M40". string

CustomerManagedKeyEncryptionProperties

Nombre Descripción Value
keyEncryptionKeyIdentity La identidad utilizada para acceder a la clave de cifrado de claves. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl URI de la clave del almacén de claves que se usa para el cifrado. string

DataApiProperties

Nombre Descripción Value
mode Modo que indica si la API de datos de Mongo está habilitada para un clúster. 'Disabled'
'Enabled'

Propiedades de Encriptación

Nombre Descripción Value
customerManagedKeyEncryption Configuración de cifrado de claves administradas por el cliente. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Nombre Descripción Value
targetMode Modo de alta disponibilidad de destino solicitado para el clúster. 'Disabled'
'Misma zona'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Nombre Descripción Value
identityType Tipo de identidad. Solo se admite 'UserAssignedIdentity'. 'IdentidadAsignada por el usuario'
userAssignedIdentityResourceId El identificador de recurso de identidad asignado por el usuario. string

ManagedServiceIdentity

Nombre Descripción Value
type Tipo de identidad de servicio administrada (donde se permiten los tipos SystemAssigned y UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (obligatorio)
userAssignedIdentities Conjunto de identidades asignadas por el usuario asociadas al recurso. Las claves del diccionario usuariAsignedIdentities serán los identificadores de recursos ARM en el formulario: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft. ManagedIdentity/userAssignedIdentities/{identityName}. Los valores del diccionario pueden ser objetos vacíos ({}) en las solicitudes. UserAssignedIdentities

MongoClusterProperties

Nombre Descripción Value
administrador Propiedades de administrador local para el clúster de mongo. AdministratorProperties
authConfig La configuración de autenticación para el clúster. AuthConfigProperties
copia de seguridad Propiedades de copia de seguridad del clúster de mongo. BackupProperties (Propiedades de respaldo)
compute Propiedades de proceso del clúster de mongo. ComputeProperties de
createMode Modo para crear un clúster de Mongo. 'Default'
'Réplica geográfica'
'PointInTimeRestore'
'Réplica'
dataApi Las propiedades de Data API del clúster de mongo. DataApiProperties
encryption La configuración de cifrado del clúster. Depende de la identidad que se esté configurando. EncryptionProperties
alta disponibilidad Propiedades de alta disponibilidad del clúster de mongo. HighAvailabilityProperties
networkBypassMode El modo de bypass de red para el clúster. Configurar en 'AzureCosmosDB' permite que el servicio de Azure Cosmos DB evite las restricciones de red. 'AzureCosmosDB'
'None'
previewFeatures Lista de conexiones de punto de conexión privado. Matriz de cadenas que contiene cualquiera de:
'Réplicas geográficas'
publicNetworkAccess Indica si se permite o no el acceso al punto de conexión público para este clúster de Mongo. 'Disabled'
'Enabled'
replicaParameters Parámetros para crear un clúster de mongo de réplica. MongoClusterReplicaParameters
restoreParameters Los parámetros para crear un clúster de mongo de restauración a un momento dado. MongoClusterRestoreParameters
serverVersion Versión del servidor de Mongo DB. El valor predeterminado es la versión más reciente disponible si no se especifica. string
particionamiento Propiedades de particionamiento del clúster de mongo. ShardingProperties
almacenamiento Propiedades de almacenamiento del clúster de mongo. StorageProperties (Propiedades de almacenamiento)

MongoClusterReplicaParameters

Nombre Descripción Value
ubicaciónFuente Ubicación del clúster de origen string (obligatorio)
sourceResourceId Identificador del clúster de origen de replicación. string (obligatorio)

MongoClusterRestoreParameters

Nombre Descripción Value
pointInTimeUTC Hora UTC a la que se va a restaurar un clúster de Mongo string
sourceResourceId Identificador de recurso para buscar el clúster de origen que se va a restaurar string

ShardingProperties

Nombre Descripción Value
shardCount Número de particiones que se van a aprovisionar en el clúster. int

StorageProperties (Propiedades de almacenamiento)

Nombre Descripción Value
tamañoGb Tamaño del disco de datos asignado a cada servidor. int
type El tipo de almacenamiento con el que se van a aprovisionar los servidores de clúster. 'SSD premium'
'PremiumSSDv2'

TrackedResourceTags

Nombre Descripción Value

UserAssignedIdentities

Nombre Descripción Value

UserAssignedIdentity

Nombre Descripción Value