Delen via


Microsoft.DocumentDB mongoClusters

Bicep-resourcedefinitie

Het resourcetype mongoClusters kan worden geïmplementeerd met bewerkingen die zijn gericht op:

Zie logboek wijzigenvoor een lijst met gewijzigde eigenschappen in elke API-versie.

Resource-indeling

Als u een Resource Microsoft.DocumentDB/mongoClusters wilt maken, voegt u de volgende Bicep toe aan uw sjabloon.

resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2025-09-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'
    }
    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'
  }
}

Eigenschapswaarden

Microsoft.DocumentDB/mongoClusters

Naam Beschrijving Waarde
identiteit De beheerde service-identiteiten die zijn toegewezen aan deze resource. ManagedServiceIdentity
plaats De geografische locatie waar de resource zich bevindt tekenreeks (vereist)
naam De resourcenaam snaar

Beperkingen:
Minimale lengte = 3
Maximale lengte = 40
Patroon = ^[a-z0-9]+(-[a-z0-9]+)* (vereist)
Eigenschappen De resourcespecifieke eigenschappen voor deze resource. MongoClusterProperties-
Tags Resourcetags Woordenlijst met tagnamen en -waarden. Zie Tags in sjablonen

AdministratorEigenschappen

Naam Beschrijving Waarde
wachtwoord Het beheerderswachtwoord. snaar

Beperkingen:
Gevoelige waarde. Doorgeven als een beveiligde parameter.
gebruikersnaam De gebruikersnaam van de beheerder. snaar

AuthConfigEigenschappen

Naam Beschrijving Waarde
toegestane modi Toegestane verificatiemodi voor gegevenstoegang op het cluster. Tekenreeksmatrix met een van de volgende waarden:
'MicrosoftEntraID'
'InheemseAuth'

Eigenschappen voor back-up

Naam Beschrijving Waarde

ComputeProperties

Naam Beschrijving Waarde
rang De rekenlaag die moet worden toegewezen aan het cluster, waarbij elke laag wordt toegewezen aan een virtuele kern en geheugengrootte. Voorbeeldwaarden: 'M30', 'M40'. snaar

CustomerManagedKeyEncryptionProperties

Naam Beschrijving Waarde
keyEncryptionKeyIdentity De identiteit die wordt gebruikt om toegang te krijgen tot de sleutelcoderingssleutel. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl De URI van de sleutelkluissleutel die wordt gebruikt voor de versleuteling. snaar

DataApiEigenschappen

Naam Beschrijving Waarde
wijze De modus om aan te geven of de Mongo Data-API is ingeschakeld voor een cluster. 'Uitgeschakeld'
'Ingeschakeld'

Encryptie-eigenschappen

Naam Beschrijving Waarde
customerManagedKeyEncryption Door de klant beheerde sleutelversleutelingsinstellingen. CustomerManagedKeyEncryptionProperties

HogeBeschikbaarheidEigenschappen

Naam Beschrijving Waarde
doelmodus De doelmodus voor hoge beschikbaarheid die is aangevraagd voor het cluster. 'Uitgeschakeld'
'Zelfde zone'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Naam Beschrijving Waarde
identiteitstype Het type identiteit. Alleen 'UserAssignedIdentity' wordt ondersteund. UserAssignedIdentity
userAssignedIdentityResourceId De resource-id van de gebruiker waaraan de identiteit is toegewezen. snaar

ManagedServiceIdentity

Naam Beschrijving Waarde
soort Type beheerde service-identiteit (waarbij zowel SystemAssigned- als UserAssigned-typen zijn toegestaan). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (verplicht)
gebruikers-toegewezen identiteiten De set door de gebruiker toegewezen identiteiten die aan de resource zijn gekoppeld. De woordenlijstsleutels userAssignedIdentities zijn ARM-resource-id's in de vorm: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. De waarden van de woordenlijst kunnen lege objecten ({}) zijn in aanvragen. UserAssignedIdentities

MongoClusterEigenschappen

Naam Beschrijving Waarde
administrateur De lokale beheerderseigenschappen voor het Mongo-cluster. AdministratorProperties-
Verificatieconfiguratie De verificatieconfiguratie voor het cluster. AuthConfigProperties-
reservekopie De back-upeigenschappen van het Mongo-cluster. BackupProperties-
berekenen De rekeneigenschappen van het Mongo-cluster. ComputeProperties-
createMode De modus voor het maken van een Mongo-cluster. 'Standaard'
'GeoReplica'
'PointInTimeRestore'
'Replica'
data-API De gegevens-API-eigenschappen van het Mongo-cluster. DataApiProperties-
versleuteling De versleutelingsconfiguratie voor het cluster. Afhankelijk van de identiteit die wordt geconfigureerd. EncryptionProperties-
hoge beschikbaarheid De eigenschappen voor hoge beschikbaarheid van het Mongo-cluster. HighAvailabilityProperties-
previewFuncties Lijst met privé-eindpuntverbindingen. Tekenreeksmatrix met een van de volgende waarden:
'GeoReplica's'
toegang tot het openbare netwerk Of openbare eindpunttoegang wel of niet is toegestaan voor dit Mongo-cluster. 'Uitgeschakeld'
'Ingeschakeld'
replicaParameters De parameters voor het maken van een replica mongo-cluster. MongoClusterReplicaParameters
Parameters herstellen De parameters voor het maken van een mongo-cluster voor herstel naar een bepaald tijdstip. MongoClusterRestoreParameters
serverVersie De Mongo DB-serverversie. Standaard ingesteld op de meest recente beschikbare versie als deze niet is opgegeven. snaar
splitsen De sharding-eigenschappen van het Mongo-cluster. ShardingProperties-
opslag De opslageigenschappen van het Mongo-cluster. StorageProperties-

MongoClusterReplicaParameters

Naam Beschrijving Waarde
bronLocatie De locatie van het broncluster tekenreeks (vereist)
bronBronId De id van het replicatiebroncluster. tekenreeks (vereist)

MongoClusterRestoreParameters

Naam Beschrijving Waarde
puntInTimeUTC UTC-tijdstip om een Mongo-cluster te herstellen snaar
bronBronId Resource-id om het broncluster te vinden dat moet worden hersteld snaar

ShardingEigenschappen

Naam Beschrijving Waarde
shardCount Aantal shards dat moet worden ingericht op het cluster. Int

StorageEigenschappen

Naam Beschrijving Waarde
grootteGb De grootte van de gegevensschijf die aan elke server is toegewezen. Int
soort Het type opslag waarmee de clusterservers moeten worden ingericht. 'PremiumSSD'
'PremiumSSDv2'

Gevolgde brontags

Naam Beschrijving Waarde

UserAssignedIdentities

Naam Beschrijving Waarde

GebruikerstoewijzendeIdentiteit

Naam Beschrijving Waarde

Gebruiksvoorbeelden

Geverifieerde Azure-modules

De volgende azure-geverifieerde modules kunnen worden gebruikt om dit resourcetype te implementeren.

Moduul Beschrijving
Cosmos DB voor MongoDB (vCore) AVM-resourcemodule voor Cosmos DB voor MongoDB (vCore)

Resourcedefinitie van ARM-sjabloon

Het resourcetype mongoClusters kan worden geïmplementeerd met bewerkingen die zijn gericht op:

Zie logboek wijzigenvoor een lijst met gewijzigde eigenschappen in elke API-versie.

Resource-indeling

Als u een Microsoft.DocumentDB/mongoClusters-resource wilt maken, voegt u de volgende JSON toe aan uw sjabloon.

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

Eigenschapswaarden

Microsoft.DocumentDB/mongoClusters

Naam Beschrijving Waarde
apiVersion De API-versie '2025-09-01'
identiteit De beheerde service-identiteiten die zijn toegewezen aan deze resource. ManagedServiceIdentity
plaats De geografische locatie waar de resource zich bevindt tekenreeks (vereist)
naam De resourcenaam snaar

Beperkingen:
Minimale lengte = 3
Maximale lengte = 40
Patroon = ^[a-z0-9]+(-[a-z0-9]+)* (vereist)
Eigenschappen De resourcespecifieke eigenschappen voor deze resource. MongoClusterProperties-
Tags Resourcetags Woordenlijst met tagnamen en -waarden. Zie Tags in sjablonen
soort Het resourcetype 'Microsoft.DocumentDB/mongoClusters'

AdministratorEigenschappen

Naam Beschrijving Waarde
wachtwoord Het beheerderswachtwoord. snaar

Beperkingen:
Gevoelige waarde. Doorgeven als een beveiligde parameter.
gebruikersnaam De gebruikersnaam van de beheerder. snaar

AuthConfigEigenschappen

Naam Beschrijving Waarde
toegestane modi Toegestane verificatiemodi voor gegevenstoegang op het cluster. Tekenreeksmatrix met een van de volgende waarden:
'MicrosoftEntraID'
'InheemseAuth'

Eigenschappen voor back-up

Naam Beschrijving Waarde

ComputeProperties

Naam Beschrijving Waarde
rang De rekenlaag die moet worden toegewezen aan het cluster, waarbij elke laag wordt toegewezen aan een virtuele kern en geheugengrootte. Voorbeeldwaarden: 'M30', 'M40'. snaar

CustomerManagedKeyEncryptionProperties

Naam Beschrijving Waarde
keyEncryptionKeyIdentity De identiteit die wordt gebruikt om toegang te krijgen tot de sleutelcoderingssleutel. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl De URI van de sleutelkluissleutel die wordt gebruikt voor de versleuteling. snaar

DataApiEigenschappen

Naam Beschrijving Waarde
wijze De modus om aan te geven of de Mongo Data-API is ingeschakeld voor een cluster. 'Uitgeschakeld'
'Ingeschakeld'

Encryptie-eigenschappen

Naam Beschrijving Waarde
customerManagedKeyEncryption Door de klant beheerde sleutelversleutelingsinstellingen. CustomerManagedKeyEncryptionProperties

HogeBeschikbaarheidEigenschappen

Naam Beschrijving Waarde
doelmodus De doelmodus voor hoge beschikbaarheid die is aangevraagd voor het cluster. 'Uitgeschakeld'
'Zelfde zone'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Naam Beschrijving Waarde
identiteitstype Het type identiteit. Alleen 'UserAssignedIdentity' wordt ondersteund. UserAssignedIdentity
userAssignedIdentityResourceId De resource-id van de gebruiker waaraan de identiteit is toegewezen. snaar

ManagedServiceIdentity

Naam Beschrijving Waarde
soort Type beheerde service-identiteit (waarbij zowel SystemAssigned- als UserAssigned-typen zijn toegestaan). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (verplicht)
gebruikers-toegewezen identiteiten De set door de gebruiker toegewezen identiteiten die aan de resource zijn gekoppeld. De woordenlijstsleutels userAssignedIdentities zijn ARM-resource-id's in de vorm: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. De waarden van de woordenlijst kunnen lege objecten ({}) zijn in aanvragen. UserAssignedIdentities

MongoClusterEigenschappen

Naam Beschrijving Waarde
administrateur De lokale beheerderseigenschappen voor het Mongo-cluster. AdministratorProperties-
Verificatieconfiguratie De verificatieconfiguratie voor het cluster. AuthConfigProperties-
reservekopie De back-upeigenschappen van het Mongo-cluster. BackupProperties-
berekenen De rekeneigenschappen van het Mongo-cluster. ComputeProperties-
createMode De modus voor het maken van een Mongo-cluster. 'Standaard'
'GeoReplica'
'PointInTimeRestore'
'Replica'
data-API De gegevens-API-eigenschappen van het Mongo-cluster. DataApiProperties-
versleuteling De versleutelingsconfiguratie voor het cluster. Afhankelijk van de identiteit die wordt geconfigureerd. EncryptionProperties-
hoge beschikbaarheid De eigenschappen voor hoge beschikbaarheid van het Mongo-cluster. HighAvailabilityProperties-
previewFuncties Lijst met privé-eindpuntverbindingen. Tekenreeksmatrix met een van de volgende waarden:
'GeoReplica's'
toegang tot het openbare netwerk Of openbare eindpunttoegang wel of niet is toegestaan voor dit Mongo-cluster. 'Uitgeschakeld'
'Ingeschakeld'
replicaParameters De parameters voor het maken van een replica mongo-cluster. MongoClusterReplicaParameters
Parameters herstellen De parameters voor het maken van een mongo-cluster voor herstel naar een bepaald tijdstip. MongoClusterRestoreParameters
serverVersie De Mongo DB-serverversie. Standaard ingesteld op de meest recente beschikbare versie als deze niet is opgegeven. snaar
splitsen De sharding-eigenschappen van het Mongo-cluster. ShardingProperties-
opslag De opslageigenschappen van het Mongo-cluster. StorageProperties-

MongoClusterReplicaParameters

Naam Beschrijving Waarde
bronLocatie De locatie van het broncluster tekenreeks (vereist)
bronBronId De id van het replicatiebroncluster. tekenreeks (vereist)

MongoClusterRestoreParameters

Naam Beschrijving Waarde
puntInTimeUTC UTC-tijdstip om een Mongo-cluster te herstellen snaar
bronBronId Resource-id om het broncluster te vinden dat moet worden hersteld snaar

ShardingEigenschappen

Naam Beschrijving Waarde
shardCount Aantal shards dat moet worden ingericht op het cluster. Int

StorageEigenschappen

Naam Beschrijving Waarde
grootteGb De grootte van de gegevensschijf die aan elke server is toegewezen. Int
soort Het type opslag waarmee de clusterservers moeten worden ingericht. 'PremiumSSD'
'PremiumSSDv2'

Gevolgde brontags

Naam Beschrijving Waarde

UserAssignedIdentities

Naam Beschrijving Waarde

GebruikerstoewijzendeIdentiteit

Naam Beschrijving Waarde

Gebruiksvoorbeelden

Resourcedefinitie van Terraform (AzAPI-provider)

Het resourcetype mongoClusters kan worden geïmplementeerd met bewerkingen die zijn gericht op:

  • Resourcegroepen

Zie logboek wijzigenvoor een lijst met gewijzigde eigenschappen in elke API-versie.

Resource-indeling

Als u een Microsoft.DocumentDB/mongoClusters-resource wilt maken, voegt u de volgende Terraform toe aan uw sjabloon.

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

Eigenschapswaarden

Microsoft.DocumentDB/mongoClusters

Naam Beschrijving Waarde
identiteit De beheerde service-identiteiten die zijn toegewezen aan deze resource. ManagedServiceIdentity
plaats De geografische locatie waar de resource zich bevindt tekenreeks (vereist)
naam De resourcenaam snaar

Beperkingen:
Minimale lengte = 3
Maximale lengte = 40
Patroon = ^[a-z0-9]+(-[a-z0-9]+)* (vereist)
Eigenschappen De resourcespecifieke eigenschappen voor deze resource. MongoClusterProperties-
Tags Resourcetags Woordenlijst met tagnamen en -waarden.
soort Het resourcetype "Microsoft.DocumentDB/mongoClusters@2025-09-01"

AdministratorEigenschappen

Naam Beschrijving Waarde
wachtwoord Het beheerderswachtwoord. snaar

Beperkingen:
Gevoelige waarde. Doorgeven als een beveiligde parameter.
gebruikersnaam De gebruikersnaam van de beheerder. snaar

AuthConfigEigenschappen

Naam Beschrijving Waarde
toegestane modi Toegestane verificatiemodi voor gegevenstoegang op het cluster. Tekenreeksmatrix met een van de volgende waarden:
'MicrosoftEntraID'
'InheemseAuth'

Eigenschappen voor back-up

Naam Beschrijving Waarde

ComputeProperties

Naam Beschrijving Waarde
rang De rekenlaag die moet worden toegewezen aan het cluster, waarbij elke laag wordt toegewezen aan een virtuele kern en geheugengrootte. Voorbeeldwaarden: 'M30', 'M40'. snaar

CustomerManagedKeyEncryptionProperties

Naam Beschrijving Waarde
keyEncryptionKeyIdentity De identiteit die wordt gebruikt om toegang te krijgen tot de sleutelcoderingssleutel. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl De URI van de sleutelkluissleutel die wordt gebruikt voor de versleuteling. snaar

DataApiEigenschappen

Naam Beschrijving Waarde
wijze De modus om aan te geven of de Mongo Data-API is ingeschakeld voor een cluster. 'Uitgeschakeld'
'Ingeschakeld'

Encryptie-eigenschappen

Naam Beschrijving Waarde
customerManagedKeyEncryption Door de klant beheerde sleutelversleutelingsinstellingen. CustomerManagedKeyEncryptionProperties

HogeBeschikbaarheidEigenschappen

Naam Beschrijving Waarde
doelmodus De doelmodus voor hoge beschikbaarheid die is aangevraagd voor het cluster. 'Uitgeschakeld'
'Zelfde zone'
'ZoneRedundantPreferred'

KeyEncryptionKeyIdentity

Naam Beschrijving Waarde
identiteitstype Het type identiteit. Alleen 'UserAssignedIdentity' wordt ondersteund. UserAssignedIdentity
userAssignedIdentityResourceId De resource-id van de gebruiker waaraan de identiteit is toegewezen. snaar

ManagedServiceIdentity

Naam Beschrijving Waarde
soort Type beheerde service-identiteit (waarbij zowel SystemAssigned- als UserAssigned-typen zijn toegestaan). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
'UserAssigned' (verplicht)
gebruikers-toegewezen identiteiten De set door de gebruiker toegewezen identiteiten die aan de resource zijn gekoppeld. De woordenlijstsleutels userAssignedIdentities zijn ARM-resource-id's in de vorm: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. De waarden van de woordenlijst kunnen lege objecten ({}) zijn in aanvragen. UserAssignedIdentities

MongoClusterEigenschappen

Naam Beschrijving Waarde
administrateur De lokale beheerderseigenschappen voor het Mongo-cluster. AdministratorProperties-
Verificatieconfiguratie De verificatieconfiguratie voor het cluster. AuthConfigProperties-
reservekopie De back-upeigenschappen van het Mongo-cluster. BackupProperties-
berekenen De rekeneigenschappen van het Mongo-cluster. ComputeProperties-
createMode De modus voor het maken van een Mongo-cluster. 'Standaard'
'GeoReplica'
'PointInTimeRestore'
'Replica'
data-API De gegevens-API-eigenschappen van het Mongo-cluster. DataApiProperties-
versleuteling De versleutelingsconfiguratie voor het cluster. Afhankelijk van de identiteit die wordt geconfigureerd. EncryptionProperties-
hoge beschikbaarheid De eigenschappen voor hoge beschikbaarheid van het Mongo-cluster. HighAvailabilityProperties-
previewFuncties Lijst met privé-eindpuntverbindingen. Tekenreeksmatrix met een van de volgende waarden:
'GeoReplica's'
toegang tot het openbare netwerk Of openbare eindpunttoegang wel of niet is toegestaan voor dit Mongo-cluster. 'Uitgeschakeld'
'Ingeschakeld'
replicaParameters De parameters voor het maken van een replica mongo-cluster. MongoClusterReplicaParameters
Parameters herstellen De parameters voor het maken van een mongo-cluster voor herstel naar een bepaald tijdstip. MongoClusterRestoreParameters
serverVersie De Mongo DB-serverversie. Standaard ingesteld op de meest recente beschikbare versie als deze niet is opgegeven. snaar
splitsen De sharding-eigenschappen van het Mongo-cluster. ShardingProperties-
opslag De opslageigenschappen van het Mongo-cluster. StorageProperties-

MongoClusterReplicaParameters

Naam Beschrijving Waarde
bronLocatie De locatie van het broncluster tekenreeks (vereist)
bronBronId De id van het replicatiebroncluster. tekenreeks (vereist)

MongoClusterRestoreParameters

Naam Beschrijving Waarde
puntInTimeUTC UTC-tijdstip om een Mongo-cluster te herstellen snaar
bronBronId Resource-id om het broncluster te vinden dat moet worden hersteld snaar

ShardingEigenschappen

Naam Beschrijving Waarde
shardCount Aantal shards dat moet worden ingericht op het cluster. Int

StorageEigenschappen

Naam Beschrijving Waarde
grootteGb De grootte van de gegevensschijf die aan elke server is toegewezen. Int
soort Het type opslag waarmee de clusterservers moeten worden ingericht. 'PremiumSSD'
'PremiumSSDv2'

Gevolgde brontags

Naam Beschrijving Waarde

UserAssignedIdentities

Naam Beschrijving Waarde

GebruikerstoewijzendeIdentiteit

Naam Beschrijving Waarde

Gebruiksvoorbeelden

Terraform-monsters

Een basisvoorbeeld van het implementeren van Azure Cosmos DB voor 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    = ["*"]
}