Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Définition de ressource Bicep
Le type de ressource mongoClusters peut être déployé avec des opérations qui ciblent :
- groupes de ressources - Consultez commandes de déploiement de groupes de ressources
Pour obtenir la liste des propriétés modifiées dans chaque version de l’API, consultez journal des modifications.
Format de ressource
Pour créer une ressource Microsoft.DocumentDB/mongoClusters, ajoutez le bicep suivant à votre modèle.
resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2024-07-01' = {
location: 'string'
name: 'string'
properties: {
administrator: {
password: 'string'
userName: 'string'
}
backup: {}
compute: {
tier: 'string'
}
createMode: 'string'
highAvailability: {
targetMode: 'string'
}
previewFeatures: [
'string'
]
publicNetworkAccess: 'string'
replicaParameters: {
sourceLocation: 'string'
sourceResourceId: 'string'
}
restoreParameters: {
pointInTimeUTC: 'string'
sourceResourceId: 'string'
}
serverVersion: 'string'
sharding: {
shardCount: int
}
storage: {
sizeGb: int
}
}
tags: {
{customized property}: 'string'
}
}
Valeurs de propriété
Microsoft.DocumentDB/mongoClusters
| Nom | Descriptif | Valeur |
|---|---|---|
| emplacement | Emplacement géographique où réside la ressource | chaîne (obligatoire) |
| nom | Nom de la ressource | corde Contraintes: Longueur minimale = 3 Longueur maximale = 40 Modèle = ^[a-z0-9]+(-[a-z0-9]+)* (obligatoire) |
| Propriétés | Propriétés spécifiques à la ressource pour cette ressource. | MongoClusterProperties |
| étiquettes | Balises de ressource | Dictionnaire de noms et de valeurs d’étiquettes. Consultez les balises dans les modèles |
AdministratorProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| mot de passe | Mot de passe administrateur. | corde Contraintes: Valeur sensible. Passez en tant que paramètre sécurisé. |
| nom d’utilisateur | Nom d’utilisateur administrateur. | corde |
BackupProperties
| Nom | Descriptif | Valeur |
|---|
ComputeProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| niveau | Niveau de calcul à affecter au cluster, où chaque niveau est mappé à une taille de cœur virtuel et de mémoire. Exemples de valeurs : « M30 », « M40 ». | corde |
HighAvailabilityProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| targetMode | Mode de haute disponibilité cible demandé pour le cluster. | 'Désactivé' 'SameZone' 'ZoneRedundantPreferred' |
MongoClusterProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| administrateur | Propriétés de l’administrateur local pour le cluster mongo. | AdministratorProperties |
| sauvegarde | Propriétés de sauvegarde du cluster mongo. | BackupProperties |
| calculer | Propriétés de calcul du cluster mongo. | ComputeProperties |
| createMode | Mode de création d’un cluster mongo. | Valeur par défaut 'GeoReplica' 'PointInTimeRestore' 'Réplique' |
| highAvailability | Propriétés de haute disponibilité du cluster mongo. | HighAvailabilityProperties |
| aperçuFonctionnalités | Liste des connexions de point de terminaison privé. | Tableau de chaînes contenant l’un des éléments suivants : 'GeoReplicas' |
| publicNetworkAccess | Indique si l’accès au point de terminaison public est autorisé pour ce cluster mongo. | 'Désactivé' 'Activé' |
| replicaParameters | Paramètres permettant de créer un cluster mongo de réplica. | MongoClusterReplicaParameters |
| restoreParameters | Paramètres permettant de créer un cluster mongo de restauration à un point dans le temps. | MongoClusterRestoreParameters |
| version serveur | Version du serveur Mongo DB. La valeur par défaut est la dernière version disponible si elle n’est pas spécifiée. | corde |
| partitionnement | Propriétés de partitionnement du cluster mongo. | ShardingProperties |
| stockage | Propriétés de stockage du cluster mongo. | StorageProperties |
MongoClusterReplicaParameters
| Nom | Descriptif | Valeur |
|---|---|---|
| sourceLocation | Emplacement du cluster source | chaîne (obligatoire) |
| sourceResourceId | ID du cluster source de réplication. | chaîne (obligatoire) |
MongoClusterRestoreParameters
| Nom | Descriptif | Valeur |
|---|---|---|
| pointInTimeUTC | Point UTC dans le temps pour restaurer un cluster mongo | corde |
| sourceResourceId | ID de ressource pour localiser le cluster source à restaurer | corde |
ShardingProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| shardCount | Nombre de partitions à provisionner sur le cluster. | Int |
StorageProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| tailleGb | Taille du disque de données affecté à chaque serveur. | Int |
TrackedResourceTags
| Nom | Descriptif | Valeur |
|---|
Exemples d’utilisation
Modules vérifiés Azure
Les modules vérifiés Azure suivants peuvent être utilisés pour déployer ce type de ressource.
| Module | Descriptif |
|---|---|
| Cosmos DB pour MongoDB (vCore) | Module de ressource AVM pour Cosmos DB pour MongoDB (vCore) |
Définition de ressource de modèle ARM
Le type de ressource mongoClusters peut être déployé avec des opérations qui ciblent :
- groupes de ressources - Consultez commandes de déploiement de groupes de ressources
Pour obtenir la liste des propriétés modifiées dans chaque version de l’API, consultez journal des modifications.
Format de ressource
Pour créer une ressource Microsoft.DocumentDB/mongoClusters, ajoutez le code JSON suivant à votre modèle.
{
"type": "Microsoft.DocumentDB/mongoClusters",
"apiVersion": "2024-07-01",
"name": "string",
"location": "string",
"properties": {
"administrator": {
"password": "string",
"userName": "string"
},
"backup": {
},
"compute": {
"tier": "string"
},
"createMode": "string",
"highAvailability": {
"targetMode": "string"
},
"previewFeatures": [ "string" ],
"publicNetworkAccess": "string",
"replicaParameters": {
"sourceLocation": "string",
"sourceResourceId": "string"
},
"restoreParameters": {
"pointInTimeUTC": "string",
"sourceResourceId": "string"
},
"serverVersion": "string",
"sharding": {
"shardCount": "int"
},
"storage": {
"sizeGb": "int"
}
},
"tags": {
"{customized property}": "string"
}
}
Valeurs de propriété
Microsoft.DocumentDB/mongoClusters
| Nom | Descriptif | Valeur |
|---|---|---|
| apiVersion | Version de l’API | '2024-07-01' |
| emplacement | Emplacement géographique où réside la ressource | chaîne (obligatoire) |
| nom | Nom de la ressource | corde Contraintes: Longueur minimale = 3 Longueur maximale = 40 Modèle = ^[a-z0-9]+(-[a-z0-9]+)* (obligatoire) |
| Propriétés | Propriétés spécifiques à la ressource pour cette ressource. | MongoClusterProperties |
| étiquettes | Balises de ressource | Dictionnaire de noms et de valeurs d’étiquettes. Consultez les balises dans les modèles |
| type | Type de ressource | 'Microsoft.DocumentDB/mongoClusters' |
AdministratorProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| mot de passe | Mot de passe administrateur. | corde Contraintes: Valeur sensible. Passez en tant que paramètre sécurisé. |
| nom d’utilisateur | Nom d’utilisateur administrateur. | corde |
BackupProperties
| Nom | Descriptif | Valeur |
|---|
ComputeProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| niveau | Niveau de calcul à affecter au cluster, où chaque niveau est mappé à une taille de cœur virtuel et de mémoire. Exemples de valeurs : « M30 », « M40 ». | corde |
HighAvailabilityProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| targetMode | Mode de haute disponibilité cible demandé pour le cluster. | 'Désactivé' 'SameZone' 'ZoneRedundantPreferred' |
MongoClusterProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| administrateur | Propriétés de l’administrateur local pour le cluster mongo. | AdministratorProperties |
| sauvegarde | Propriétés de sauvegarde du cluster mongo. | BackupProperties |
| calculer | Propriétés de calcul du cluster mongo. | ComputeProperties |
| createMode | Mode de création d’un cluster mongo. | Valeur par défaut 'GeoReplica' 'PointInTimeRestore' 'Réplique' |
| highAvailability | Propriétés de haute disponibilité du cluster mongo. | HighAvailabilityProperties |
| aperçuFonctionnalités | Liste des connexions de point de terminaison privé. | Tableau de chaînes contenant l’un des éléments suivants : 'GeoReplicas' |
| publicNetworkAccess | Indique si l’accès au point de terminaison public est autorisé pour ce cluster mongo. | 'Désactivé' 'Activé' |
| replicaParameters | Paramètres permettant de créer un cluster mongo de réplica. | MongoClusterReplicaParameters |
| restoreParameters | Paramètres permettant de créer un cluster mongo de restauration à un point dans le temps. | MongoClusterRestoreParameters |
| version serveur | Version du serveur Mongo DB. La valeur par défaut est la dernière version disponible si elle n’est pas spécifiée. | corde |
| partitionnement | Propriétés de partitionnement du cluster mongo. | ShardingProperties |
| stockage | Propriétés de stockage du cluster mongo. | StorageProperties |
MongoClusterReplicaParameters
| Nom | Descriptif | Valeur |
|---|---|---|
| sourceLocation | Emplacement du cluster source | chaîne (obligatoire) |
| sourceResourceId | ID du cluster source de réplication. | chaîne (obligatoire) |
MongoClusterRestoreParameters
| Nom | Descriptif | Valeur |
|---|---|---|
| pointInTimeUTC | Point UTC dans le temps pour restaurer un cluster mongo | corde |
| sourceResourceId | ID de ressource pour localiser le cluster source à restaurer | corde |
ShardingProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| shardCount | Nombre de partitions à provisionner sur le cluster. | Int |
StorageProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| tailleGb | Taille du disque de données affecté à chaque serveur. | Int |
TrackedResourceTags
| Nom | Descriptif | Valeur |
|---|
Exemples d’utilisation
Définition de ressource Terraform (fournisseur AzAPI)
Le type de ressource mongoClusters peut être déployé avec des opérations qui ciblent :
- Groupes de ressources
Pour obtenir la liste des propriétés modifiées dans chaque version de l’API, consultez journal des modifications.
Format de ressource
Pour créer une ressource Microsoft.DocumentDB/mongoClusters, ajoutez le terraform suivant à votre modèle.
resource "azapi_resource" "symbolicname" {
type = "Microsoft.DocumentDB/mongoClusters@2024-07-01"
name = "string"
parent_id = "string"
location = "string"
tags = {
{customized property} = "string"
}
body = {
properties = {
administrator = {
password = "string"
userName = "string"
}
backup = {
}
compute = {
tier = "string"
}
createMode = "string"
highAvailability = {
targetMode = "string"
}
previewFeatures = [
"string"
]
publicNetworkAccess = "string"
replicaParameters = {
sourceLocation = "string"
sourceResourceId = "string"
}
restoreParameters = {
pointInTimeUTC = "string"
sourceResourceId = "string"
}
serverVersion = "string"
sharding = {
shardCount = int
}
storage = {
sizeGb = int
}
}
}
}
Valeurs de propriété
Microsoft.DocumentDB/mongoClusters
| Nom | Descriptif | Valeur |
|---|---|---|
| emplacement | Emplacement géographique où réside la ressource | chaîne (obligatoire) |
| nom | Nom de la ressource | corde Contraintes: Longueur minimale = 3 Longueur maximale = 40 Modèle = ^[a-z0-9]+(-[a-z0-9]+)* (obligatoire) |
| Propriétés | Propriétés spécifiques à la ressource pour cette ressource. | MongoClusterProperties |
| étiquettes | Balises de ressource | Dictionnaire de noms et de valeurs d’étiquettes. |
| type | Type de ressource | « Microsoft.DocumentDB/mongoClusters@2024-07-01 » |
AdministratorProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| mot de passe | Mot de passe administrateur. | corde Contraintes: Valeur sensible. Passez en tant que paramètre sécurisé. |
| nom d’utilisateur | Nom d’utilisateur administrateur. | corde |
BackupProperties
| Nom | Descriptif | Valeur |
|---|
ComputeProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| niveau | Niveau de calcul à affecter au cluster, où chaque niveau est mappé à une taille de cœur virtuel et de mémoire. Exemples de valeurs : « M30 », « M40 ». | corde |
HighAvailabilityProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| targetMode | Mode de haute disponibilité cible demandé pour le cluster. | 'Désactivé' 'SameZone' 'ZoneRedundantPreferred' |
MongoClusterProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| administrateur | Propriétés de l’administrateur local pour le cluster mongo. | AdministratorProperties |
| sauvegarde | Propriétés de sauvegarde du cluster mongo. | BackupProperties |
| calculer | Propriétés de calcul du cluster mongo. | ComputeProperties |
| createMode | Mode de création d’un cluster mongo. | Valeur par défaut 'GeoReplica' 'PointInTimeRestore' 'Réplique' |
| highAvailability | Propriétés de haute disponibilité du cluster mongo. | HighAvailabilityProperties |
| aperçuFonctionnalités | Liste des connexions de point de terminaison privé. | Tableau de chaînes contenant l’un des éléments suivants : 'GeoReplicas' |
| publicNetworkAccess | Indique si l’accès au point de terminaison public est autorisé pour ce cluster mongo. | 'Désactivé' 'Activé' |
| replicaParameters | Paramètres permettant de créer un cluster mongo de réplica. | MongoClusterReplicaParameters |
| restoreParameters | Paramètres permettant de créer un cluster mongo de restauration à un point dans le temps. | MongoClusterRestoreParameters |
| version serveur | Version du serveur Mongo DB. La valeur par défaut est la dernière version disponible si elle n’est pas spécifiée. | corde |
| partitionnement | Propriétés de partitionnement du cluster mongo. | ShardingProperties |
| stockage | Propriétés de stockage du cluster mongo. | StorageProperties |
MongoClusterReplicaParameters
| Nom | Descriptif | Valeur |
|---|---|---|
| sourceLocation | Emplacement du cluster source | chaîne (obligatoire) |
| sourceResourceId | ID du cluster source de réplication. | chaîne (obligatoire) |
MongoClusterRestoreParameters
| Nom | Descriptif | Valeur |
|---|---|---|
| pointInTimeUTC | Point UTC dans le temps pour restaurer un cluster mongo | corde |
| sourceResourceId | ID de ressource pour localiser le cluster source à restaurer | corde |
ShardingProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| shardCount | Nombre de partitions à provisionner sur le cluster. | Int |
StorageProperties
| Nom | Descriptif | Valeur |
|---|---|---|
| tailleGb | Taille du disque de données affecté à chaque serveur. | Int |
TrackedResourceTags
| Nom | Descriptif | Valeur |
|---|
Exemples d’utilisation
Échantillons Terraform
Un exemple de base de déploiement d’Azure Cosmos DB pour 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 = ["*"]
}