Microsoft. DocumentDB mongoClusters 2026-06-01

Definição de recursos do bíceps

O tipo de recurso mongoClusters pode ser implantado com operações que visam:

Para obter uma lista de propriedades alteradas em cada versão da API, consulte log de alterações.

Exemplos de uso

Módulos verificados do Azure

Os seguintes Azure Módulos Verificados podem ser usados para implementar este tipo de recurso.

Módulo Description
Cosmos DB para MongoDB (vCore) Módulo de recursos AVM para Cosmos DB para MongoDB (vCore)

Formato do recurso

Para criar um recurso Microsoft.DocumentDB/mongoClusters, adicione o seguinte Bicep ao seu modelo.

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 propriedade

Microsoft. DocumentDB/mongoClusters

Nome Description Value
identidade As identidades de serviço gerenciado atribuídas a este recurso. ManagedServiceIdentity
localização A geolocalização onde o recurso vive string (obrigatório)
Nome O nome do recurso string

Restrições:
Comprimento mínimo = 3
Comprimento máximo = 40
Padrão = ^[a-z0-9]+(-[a-z0-9]+)* (obrigatório)
properties As propriedades específicas do recurso para este recurso. MongoClusterProperties
tags Etiquetas de recursos Dicionário de nomes e valores de tags. Consulte Tags em modelos

AdministradorPropriedades

Nome Description Value
palavra-passe A senha de administrador. string

Restrições:
Valor sensível. Passe como um parâmetro seguro.
userName O nome de usuário do administrador. cadeia (de caracteres)

AuthConfigProperties

Nome Description Value
allowedModos Modos de autenticação permitidos para acesso a dados no cluster. Matriz de cadeia de caracteres contendo qualquer uma das:
'MicrosoftEntraID'
'NativeAuth'

BackupPropriedades

Nome Description Value

ComputeProperties

Nome Description Value
escalão A camada de computação a ser atribuída ao cluster, onde cada camada é mapeada para um núcleo virtual e tamanho de memória. Valores de exemplo: 'M30', 'M40'. cadeia (de caracteres)

CustomerManagedKeyEncryptionProperties

Nome Description Value
keyEncryptionKeyIdentity A identidade usada para acessar a chave de criptografia de chave. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl O URI da chave do cofre da chave usada para criptografia. cadeia (de caracteres)

DataApiProperties

Nome Description Value
mode O modo para indicar se a API de dados Mongo está habilitada para um cluster. 'Disabled'
'Enabled'

Propriedades de Encriptação

Nome Description Value
customerManagedKeyEncryption Configurações de criptografia de chave gerenciadas pelo cliente. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Nome Description Value
targetMode O modo de alta disponibilidade de destino solicitado para o cluster. 'Disabled'
'SameZone'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Nome Description Value
identityType O tipo de identidade. Apenas 'UserAssignedIdentity' é suportado. 'UserAssignedIdentity'
userAssignedIdentityResourceId A ID do recurso de identidade atribuída ao usuário. cadeia (de caracteres)

ManagedServiceIdentity

Nome Description Value
tipo Tipo de identidade de serviço gerenciado (onde os tipos SystemAssigned e UserAssigned são permitidos). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (obrigatório)
userAssignedIdentities O conjunto de identidades atribuídas pelo usuário associadas ao recurso. As chaves do dicionário userAssignedIdentities serão IDs de recursos ARM na forma: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft. ManagedIdentity/userAssignedIdentities/{identityName}. Os valores do dicionário podem ser objetos vazios ({}) em solicitações. UserAssignedIdentities

MongoClusterProperties

Nome Description Value
administrador As propriedades do administrador local para o cluster mongo. AdministradorPropriedades
authConfig A configuração de autenticação para o cluster. AuthConfigProperties
cópia de segurança As propriedades de backup do cluster mongo. BackupPropriedades
Calcular As propriedades de computação do cluster mongo. ComputeProperties
createMode O modo para criar um cluster mongo. 'Default'
'GeoRéplica'
'PointInTimeRestore'
'Réplica'
dataApi As propriedades da API de dados do cluster mongo. DataApiProperties
cifragem A configuração de criptografia para o cluster. Depende da identidade que está sendo configurada. EncryptionProperties
alta disponibilidade As propriedades de alta disponibilidade do cluster mongo. HighAvailabilityProperties
networkBypassMode O modo de bypass de rede para o cluster. Definir para 'AzureCosmosDB' permite que o serviço Azure Cosmos DB contorne restrições de rede. 'AzureCosmosDB'
'None'
pré-visualizaçãoFuncionalidades Lista de conexões de ponto de extremidade privadas. Matriz de cadeia de caracteres contendo qualquer uma das:
'GeoRéplicas'
publicNetworkAccess Se o acesso público ao endpoint é permitido ou não para este cluster mongo. 'Disabled'
'Enabled'
replicaParameters Os parâmetros para criar uma réplica mongo cluster. MongoClusterReplicaParameters
restoreParameters Os parâmetros para criar um cluster mongo de restauração point-in-time. MongoClusterRestoreParameters
serverVersion A versão do servidor Mongo DB. O padrão é a versão mais recente disponível, se não for especificado. cadeia (de caracteres)
fragmentação As propriedades de fragmentação do aglomerado mongo. ShardingProperties
armazenamento As propriedades de armazenamento do cluster mongo. Propriedades de armazenamento

MongoClusterReplicaParameters

Nome Description Value
localização da fonte O local do cluster de origem string (obrigatório)
sourceResourceId A id do cluster de origem de replicação. string (obrigatório)

MongoClusterRestoreParameters

Nome Description Value
pointInTimeUTC UTC ponto no tempo para restaurar um cluster mongo cadeia (de caracteres)
sourceResourceId ID do recurso para localizar o cluster de origem a ser restaurado cadeia (de caracteres)

ShardingProperties

Nome Description Value
Contagem de fragmentos Número de fragmentos a serem provisionados no cluster. int

Propriedades de armazenamento

Nome Description Value
tamanhoGb O tamanho do disco de dados atribuído a cada servidor. int
tipo O tipo de armazenamento com o qual provisionar os servidores de cluster. 'SSD premium'
'PremiumSSDv2'

TrackedResourceTags

Nome Description Value

UserAssignedIdentities

Nome Description Value

UserAssignedIdentity

Nome Description Value

Definição de recurso de modelo ARM

O tipo de recurso mongoClusters pode ser implantado com operações que visam:

Exemplos de uso

Formato do recurso

Para criar um recurso Microsoft.DocumentDB/mongoClusters, adicione o seguinte JSON ao seu modelo.

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

Microsoft. DocumentDB/mongoClusters

Nome Description Value
apiVersion A versão api '2026-06-01'
identidade As identidades de serviço gerenciado atribuídas a este recurso. ManagedServiceIdentity
localização A geolocalização onde o recurso vive string (obrigatório)
Nome O nome do recurso string

Restrições:
Comprimento mínimo = 3
Comprimento máximo = 40
Padrão = ^[a-z0-9]+(-[a-z0-9]+)* (obrigatório)
properties As propriedades específicas do recurso para este recurso. MongoClusterProperties
tags Etiquetas de recursos Dicionário de nomes e valores de tags. Consulte Tags em modelos
tipo O tipo de recurso 'Microsoft.DocumentDB/mongoClusters'

AdministradorPropriedades

Nome Description Value
palavra-passe A senha de administrador. string

Restrições:
Valor sensível. Passe como um parâmetro seguro.
userName O nome de usuário do administrador. cadeia (de caracteres)

AuthConfigProperties

Nome Description Value
allowedModos Modos de autenticação permitidos para acesso a dados no cluster. Matriz de cadeia de caracteres contendo qualquer uma das:
'MicrosoftEntraID'
'NativeAuth'

BackupPropriedades

Nome Description Value

ComputeProperties

Nome Description Value
escalão A camada de computação a ser atribuída ao cluster, onde cada camada é mapeada para um núcleo virtual e tamanho de memória. Valores de exemplo: 'M30', 'M40'. cadeia (de caracteres)

CustomerManagedKeyEncryptionProperties

Nome Description Value
keyEncryptionKeyIdentity A identidade usada para acessar a chave de criptografia de chave. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl O URI da chave do cofre da chave usada para criptografia. cadeia (de caracteres)

DataApiProperties

Nome Description Value
mode O modo para indicar se a API de dados Mongo está habilitada para um cluster. 'Disabled'
'Enabled'

Propriedades de Encriptação

Nome Description Value
customerManagedKeyEncryption Configurações de criptografia de chave gerenciadas pelo cliente. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Nome Description Value
targetMode O modo de alta disponibilidade de destino solicitado para o cluster. 'Disabled'
'SameZone'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Nome Description Value
identityType O tipo de identidade. Apenas 'UserAssignedIdentity' é suportado. 'UserAssignedIdentity'
userAssignedIdentityResourceId A ID do recurso de identidade atribuída ao usuário. cadeia (de caracteres)

ManagedServiceIdentity

Nome Description Value
tipo Tipo de identidade de serviço gerenciado (onde os tipos SystemAssigned e UserAssigned são permitidos). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (obrigatório)
userAssignedIdentities O conjunto de identidades atribuídas pelo usuário associadas ao recurso. As chaves do dicionário userAssignedIdentities serão IDs de recursos ARM na forma: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft. ManagedIdentity/userAssignedIdentities/{identityName}. Os valores do dicionário podem ser objetos vazios ({}) em solicitações. UserAssignedIdentities

MongoClusterProperties

Nome Description Value
administrador As propriedades do administrador local para o cluster mongo. AdministradorPropriedades
authConfig A configuração de autenticação para o cluster. AuthConfigProperties
cópia de segurança As propriedades de backup do cluster mongo. BackupPropriedades
Calcular As propriedades de computação do cluster mongo. ComputeProperties
createMode O modo para criar um cluster mongo. 'Default'
'GeoRéplica'
'PointInTimeRestore'
'Réplica'
dataApi As propriedades da API de dados do cluster mongo. DataApiProperties
cifragem A configuração de criptografia para o cluster. Depende da identidade que está sendo configurada. EncryptionProperties
alta disponibilidade As propriedades de alta disponibilidade do cluster mongo. HighAvailabilityProperties
networkBypassMode O modo de bypass de rede para o cluster. Definir para 'AzureCosmosDB' permite que o serviço Azure Cosmos DB contorne restrições de rede. 'AzureCosmosDB'
'None'
pré-visualizaçãoFuncionalidades Lista de conexões de ponto de extremidade privadas. Matriz de cadeia de caracteres contendo qualquer uma das:
'GeoRéplicas'
publicNetworkAccess Se o acesso público ao endpoint é permitido ou não para este cluster mongo. 'Disabled'
'Enabled'
replicaParameters Os parâmetros para criar uma réplica mongo cluster. MongoClusterReplicaParameters
restoreParameters Os parâmetros para criar um cluster mongo de restauração point-in-time. MongoClusterRestoreParameters
serverVersion A versão do servidor Mongo DB. O padrão é a versão mais recente disponível, se não for especificado. cadeia (de caracteres)
fragmentação As propriedades de fragmentação do aglomerado mongo. ShardingProperties
armazenamento As propriedades de armazenamento do cluster mongo. Propriedades de armazenamento

MongoClusterReplicaParameters

Nome Description Value
localização da fonte O local do cluster de origem string (obrigatório)
sourceResourceId A id do cluster de origem de replicação. string (obrigatório)

MongoClusterRestoreParameters

Nome Description Value
pointInTimeUTC UTC ponto no tempo para restaurar um cluster mongo cadeia (de caracteres)
sourceResourceId ID do recurso para localizar o cluster de origem a ser restaurado cadeia (de caracteres)

ShardingProperties

Nome Description Value
Contagem de fragmentos Número de fragmentos a serem provisionados no cluster. int

Propriedades de armazenamento

Nome Description Value
tamanhoGb O tamanho do disco de dados atribuído a cada servidor. int
tipo O tipo de armazenamento com o qual provisionar os servidores de cluster. 'SSD premium'
'PremiumSSDv2'

TrackedResourceTags

Nome Description Value

UserAssignedIdentities

Nome Description Value

UserAssignedIdentity

Nome Description Value

Definição de recursos Terraform (provedor AzAPI)

O tipo de recurso mongoClusters pode ser implantado com operações que visam:

  • Grupos de recursos Para uma lista das propriedades alteradas em cada versão da API, veja registo de alterações.

Exemplos de uso

Amostras Terraform

Um exemplo básico de implementação do 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 verificados do Azure

Os seguintes Azure Módulos Verificados podem ser usados para implementar este tipo de recurso.

Módulo Description
Cosmos DB para MongoDB (vCore) Módulo de recursos AVM para Cosmos DB para MongoDB (vCore)

Formato do recurso

Para criar um recurso Microsoft.DocumentDB/mongoClusters, adicione o seguinte Terraform ao seu modelo.

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 propriedade

Microsoft. DocumentDB/mongoClusters

Nome Description Value
identidade As identidades de serviço gerenciado atribuídas a este recurso. ManagedServiceIdentity
localização A geolocalização onde o recurso vive string (obrigatório)
Nome O nome do recurso string

Restrições:
Comprimento mínimo = 3
Comprimento máximo = 40
Padrão = ^[a-z0-9]+(-[a-z0-9]+)* (obrigatório)
properties As propriedades específicas do recurso para este recurso. MongoClusterProperties
tags Etiquetas de recursos Dicionário de nomes e valores de tags.
tipo O tipo de recurso "Microsoft. DocumentDB/mongoClusters@2026-06-01"

AdministradorPropriedades

Nome Description Value
palavra-passe A senha de administrador. string

Restrições:
Valor sensível. Passe como um parâmetro seguro.
userName O nome de usuário do administrador. cadeia (de caracteres)

AuthConfigProperties

Nome Description Value
allowedModos Modos de autenticação permitidos para acesso a dados no cluster. Matriz de cadeia de caracteres contendo qualquer uma das:
'MicrosoftEntraID'
'NativeAuth'

BackupPropriedades

Nome Description Value

ComputeProperties

Nome Description Value
escalão A camada de computação a ser atribuída ao cluster, onde cada camada é mapeada para um núcleo virtual e tamanho de memória. Valores de exemplo: 'M30', 'M40'. cadeia (de caracteres)

CustomerManagedKeyEncryptionProperties

Nome Description Value
keyEncryptionKeyIdentity A identidade usada para acessar a chave de criptografia de chave. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl O URI da chave do cofre da chave usada para criptografia. cadeia (de caracteres)

DataApiProperties

Nome Description Value
mode O modo para indicar se a API de dados Mongo está habilitada para um cluster. 'Disabled'
'Enabled'

Propriedades de Encriptação

Nome Description Value
customerManagedKeyEncryption Configurações de criptografia de chave gerenciadas pelo cliente. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Nome Description Value
targetMode O modo de alta disponibilidade de destino solicitado para o cluster. 'Disabled'
'SameZone'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Nome Description Value
identityType O tipo de identidade. Apenas 'UserAssignedIdentity' é suportado. 'UserAssignedIdentity'
userAssignedIdentityResourceId A ID do recurso de identidade atribuída ao usuário. cadeia (de caracteres)

ManagedServiceIdentity

Nome Description Value
tipo Tipo de identidade de serviço gerenciado (onde os tipos SystemAssigned e UserAssigned são permitidos). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (obrigatório)
userAssignedIdentities O conjunto de identidades atribuídas pelo usuário associadas ao recurso. As chaves do dicionário userAssignedIdentities serão IDs de recursos ARM na forma: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft. ManagedIdentity/userAssignedIdentities/{identityName}. Os valores do dicionário podem ser objetos vazios ({}) em solicitações. UserAssignedIdentities

MongoClusterProperties

Nome Description Value
administrador As propriedades do administrador local para o cluster mongo. AdministradorPropriedades
authConfig A configuração de autenticação para o cluster. AuthConfigProperties
cópia de segurança As propriedades de backup do cluster mongo. BackupPropriedades
Calcular As propriedades de computação do cluster mongo. ComputeProperties
createMode O modo para criar um cluster mongo. 'Default'
'GeoRéplica'
'PointInTimeRestore'
'Réplica'
dataApi As propriedades da API de dados do cluster mongo. DataApiProperties
cifragem A configuração de criptografia para o cluster. Depende da identidade que está sendo configurada. EncryptionProperties
alta disponibilidade As propriedades de alta disponibilidade do cluster mongo. HighAvailabilityProperties
networkBypassMode O modo de bypass de rede para o cluster. Definir para 'AzureCosmosDB' permite que o serviço Azure Cosmos DB contorne restrições de rede. 'AzureCosmosDB'
'None'
pré-visualizaçãoFuncionalidades Lista de conexões de ponto de extremidade privadas. Matriz de cadeia de caracteres contendo qualquer uma das:
'GeoRéplicas'
publicNetworkAccess Se o acesso público ao endpoint é permitido ou não para este cluster mongo. 'Disabled'
'Enabled'
replicaParameters Os parâmetros para criar uma réplica mongo cluster. MongoClusterReplicaParameters
restoreParameters Os parâmetros para criar um cluster mongo de restauração point-in-time. MongoClusterRestoreParameters
serverVersion A versão do servidor Mongo DB. O padrão é a versão mais recente disponível, se não for especificado. cadeia (de caracteres)
fragmentação As propriedades de fragmentação do aglomerado mongo. ShardingProperties
armazenamento As propriedades de armazenamento do cluster mongo. Propriedades de armazenamento

MongoClusterReplicaParameters

Nome Description Value
localização da fonte O local do cluster de origem string (obrigatório)
sourceResourceId A id do cluster de origem de replicação. string (obrigatório)

MongoClusterRestoreParameters

Nome Description Value
pointInTimeUTC UTC ponto no tempo para restaurar um cluster mongo cadeia (de caracteres)
sourceResourceId ID do recurso para localizar o cluster de origem a ser restaurado cadeia (de caracteres)

ShardingProperties

Nome Description Value
Contagem de fragmentos Número de fragmentos a serem provisionados no cluster. int

Propriedades de armazenamento

Nome Description Value
tamanhoGb O tamanho do disco de dados atribuído a cada servidor. int
tipo O tipo de armazenamento com o qual provisionar os servidores de cluster. 'SSD premium'
'PremiumSSDv2'

TrackedResourceTags

Nome Description Value

UserAssignedIdentities

Nome Description Value

UserAssignedIdentity

Nome Description Value