Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bicep-Ressourcendefinition
Der MongoClusters-Ressourcentyp kann mit Vorgängen bereitgestellt werden, die auf Folgendes abzielen:
Eine Liste der geänderten Eigenschaften in jeder API-Version finden Sie unter Änderungsprotokoll.
Ressourcenformat
Um eine Microsoft.DocumentDB/mongoClusters-Ressource zu erstellen, fügen Sie der Vorlage die folgende Bicep hinzu.
resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2024-10-01-preview' = {
scope: resourceSymbolicName or scope
location: 'string'
name: 'string'
properties: {
administrator: {
password: 'string'
userName: 'string'
}
backup: {}
compute: {
tier: 'string'
}
createMode: 'string'
dataApi: {
mode: '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'
}
}
Eigenschaftswerte
Microsoft.DocumentDB/mongoCluster
| Name | Beschreibung | Wert |
|---|---|---|
| Ort | Der geografische Standort, an dem sich die Ressource befindet | Zeichenfolge (erforderlich) |
| Name | Der Ressourcenname | Schnur Zwänge: Min. Länge = 3 Max. Länge = 40 Pattern = ^[a-z0-9]+(-[a-z0-9]+)* (erforderlich) |
| Eigenschaften | Die ressourcenspezifischen Eigenschaften für diese Ressource. | MongoCluster-Eigenschaften |
| scope | Verwenden Sie diese Verwendung beim Erstellen einer Ressource in einem Bereich, der sich von dem Bereitstellungsbereich unterscheidet. | Legen Sie diese Eigenschaft auf den symbolischen Namen einer Ressource fest, um die Erweiterungsressourceanzuwenden. |
| Schilder | Ressourcentags | Wörterbuch der Tagnamen und -werte. Siehe Tags in Vorlagen |
AdministratorEigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Passwort | Das Administratorkennwort. | Schnur Zwänge: Vertraulicher Wert. Übergeben Als sicherer Parameter. |
| Nutzername | Der Administratorbenutzername. | Schnur |
Backup-Eigenschaften
| Name | Beschreibung | Wert |
|---|
Compute-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Rang | Die Computeebene, die dem Cluster zugewiesen werden soll, wobei jede Ebene einer größe des virtuellen Kerns und des Arbeitsspeichers zugeordnet ist. Beispielwerte: 'M30', 'M40'. | Schnur |
DataApi-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Modus | Der Modus, der angibt, ob die Mongo-Daten-API für einen Cluster aktiviert ist. | "Deaktiviert" "Aktiviert" |
HighAvailability-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| target-Modus | Der für den Cluster angeforderte Zielmodus für hohe Verfügbarkeit. | "Deaktiviert" 'SameZone' "ZoneRedundantPreferred" |
MongoCluster-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Administrator | Die lokalen Administratoreigenschaften für den Mongo-Cluster. | "AdministratorProperties" |
| Sicherungskopie | Die Sicherungseigenschaften des Mongoclusters. | BackupProperties- |
| berechnen | Die Berechnungseigenschaften des Mongoclusters. | ComputeProperties- |
| createMode | Der Modus zum Erstellen eines Mongoclusters. | 'Standard' "GeoReplica" 'PointInTimeRestore' 'Replikat' |
| dataApi | Die Daten-API-Eigenschaften des Mongo-Clusters. | DataApiProperties- |
| hohe Verfügbarkeit | Die Eigenschaften der hohen Verfügbarkeit des Mongo-Clusters. | HighAvailability-Eigenschaften |
| VorschauFunktionen | Liste der privaten Endpunktverbindungen. | Zeichenfolgenarray, das eine der folgenden Elemente enthält: "GeoReplicas" |
| Öffentlicher Netzwerkzugang | Gibt an, ob der Zugriff auf öffentliche Endpunkte für diesen Mongo-Cluster zulässig ist. | "Deaktiviert" "Aktiviert" |
| replicaParameters | Die Parameter zum Erstellen eines Replikat-Mongoclusters. | MongoClusterReplicaParameters |
| restore-Parameter | Die Parameter zum Erstellen eines Mongoclusters für die Punkt-in-Zeit-Wiederherstellung. | MongoClusterRestoreParameters |
| serverVersion | Die Mongo DB-Serverversion. Wenn nicht angegeben, wird standardmäßig die neueste verfügbare Version verwendet. | Schnur |
| Sharding | Die Shardingeigenschaften des Mongoclusters. | ShardingProperties- |
| Lagerung | Die Speichereigenschaften des Mongoclusters. | StorageProperties- |
MongoClusterReplicaParameters
| Name | Beschreibung | Wert |
|---|---|---|
| Quellstandort | Der Speicherort des Quellclusters | Zeichenfolge (erforderlich) |
| sourceResourceId | Die ID des Replikationsquellclusters. | Zeichenfolge (erforderlich) |
MongoClusterRestoreParameters
| Name | Beschreibung | Wert |
|---|---|---|
| pointInTimeUTC | UTC-Zeitpunkt zum Wiederherstellen eines Mongoclusters | Schnur |
| sourceResourceId | Ressourcen-ID zum Suchen des Quellclusters zum Wiederherstellen | Schnur |
ShardingEigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| shardAnzahl | Anzahl der Für den Cluster bereitzustellenden Shards. | Int |
Storage-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| GrößeGb | Die Größe des Datenträgers, der jedem Server zugewiesen ist. | Int |
Verfolgte ResourceTags
| Name | Beschreibung | Wert |
|---|
Verwendungsbeispiele
Von Azure verifizierte Module
Die folgenden Azure Verified Modules können verwendet werden, um diesen Ressourcentyp bereitzustellen.
| Modul | Beschreibung |
|---|---|
| Cosmos DB für MongoDB (vCore) | AVM-Ressourcenmodul für Cosmos DB für MongoDB (vCore) |
ARM-Vorlagenressourcendefinition
Der MongoClusters-Ressourcentyp kann mit Vorgängen bereitgestellt werden, die auf Folgendes abzielen:
Eine Liste der geänderten Eigenschaften in jeder API-Version finden Sie unter Änderungsprotokoll.
Ressourcenformat
Um eine Microsoft.DocumentDB/mongoClusters-Ressource zu erstellen, fügen Sie der Vorlage den folgenden JSON-Code hinzu.
{
"type": "Microsoft.DocumentDB/mongoClusters",
"apiVersion": "2024-10-01-preview",
"name": "string",
"location": "string",
"properties": {
"administrator": {
"password": "string",
"userName": "string"
},
"backup": {
},
"compute": {
"tier": "string"
},
"createMode": "string",
"dataApi": {
"mode": "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"
}
}
Eigenschaftswerte
Microsoft.DocumentDB/mongoCluster
| Name | Beschreibung | Wert |
|---|---|---|
| apiVersion (Englisch) | Die API-Version | "2024-10-01-preview" |
| Ort | Der geografische Standort, an dem sich die Ressource befindet | Zeichenfolge (erforderlich) |
| Name | Der Ressourcenname | Schnur Zwänge: Min. Länge = 3 Max. Länge = 40 Pattern = ^[a-z0-9]+(-[a-z0-9]+)* (erforderlich) |
| Eigenschaften | Die ressourcenspezifischen Eigenschaften für diese Ressource. | MongoCluster-Eigenschaften |
| Schilder | Ressourcentags | Wörterbuch der Tagnamen und -werte. Siehe Tags in Vorlagen |
| Art | Der Ressourcentyp | 'Microsoft.DocumentDB/mongoClusters' |
AdministratorEigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Passwort | Das Administratorkennwort. | Schnur Zwänge: Vertraulicher Wert. Übergeben Als sicherer Parameter. |
| Nutzername | Der Administratorbenutzername. | Schnur |
Backup-Eigenschaften
| Name | Beschreibung | Wert |
|---|
Compute-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Rang | Die Computeebene, die dem Cluster zugewiesen werden soll, wobei jede Ebene einer größe des virtuellen Kerns und des Arbeitsspeichers zugeordnet ist. Beispielwerte: 'M30', 'M40'. | Schnur |
DataApi-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Modus | Der Modus, der angibt, ob die Mongo-Daten-API für einen Cluster aktiviert ist. | "Deaktiviert" "Aktiviert" |
HighAvailability-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| target-Modus | Der für den Cluster angeforderte Zielmodus für hohe Verfügbarkeit. | "Deaktiviert" 'SameZone' "ZoneRedundantPreferred" |
MongoCluster-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Administrator | Die lokalen Administratoreigenschaften für den Mongo-Cluster. | "AdministratorProperties" |
| Sicherungskopie | Die Sicherungseigenschaften des Mongoclusters. | BackupProperties- |
| berechnen | Die Berechnungseigenschaften des Mongoclusters. | ComputeProperties- |
| createMode | Der Modus zum Erstellen eines Mongoclusters. | 'Standard' "GeoReplica" 'PointInTimeRestore' 'Replikat' |
| dataApi | Die Daten-API-Eigenschaften des Mongo-Clusters. | DataApiProperties- |
| hohe Verfügbarkeit | Die Eigenschaften der hohen Verfügbarkeit des Mongo-Clusters. | HighAvailability-Eigenschaften |
| VorschauFunktionen | Liste der privaten Endpunktverbindungen. | Zeichenfolgenarray, das eine der folgenden Elemente enthält: "GeoReplicas" |
| Öffentlicher Netzwerkzugang | Gibt an, ob der Zugriff auf öffentliche Endpunkte für diesen Mongo-Cluster zulässig ist. | "Deaktiviert" "Aktiviert" |
| replicaParameters | Die Parameter zum Erstellen eines Replikat-Mongoclusters. | MongoClusterReplicaParameters |
| restore-Parameter | Die Parameter zum Erstellen eines Mongoclusters für die Punkt-in-Zeit-Wiederherstellung. | MongoClusterRestoreParameters |
| serverVersion | Die Mongo DB-Serverversion. Wenn nicht angegeben, wird standardmäßig die neueste verfügbare Version verwendet. | Schnur |
| Sharding | Die Shardingeigenschaften des Mongoclusters. | ShardingProperties- |
| Lagerung | Die Speichereigenschaften des Mongoclusters. | StorageProperties- |
MongoClusterReplicaParameters
| Name | Beschreibung | Wert |
|---|---|---|
| Quellstandort | Der Speicherort des Quellclusters | Zeichenfolge (erforderlich) |
| sourceResourceId | Die ID des Replikationsquellclusters. | Zeichenfolge (erforderlich) |
MongoClusterRestoreParameters
| Name | Beschreibung | Wert |
|---|---|---|
| pointInTimeUTC | UTC-Zeitpunkt zum Wiederherstellen eines Mongoclusters | Schnur |
| sourceResourceId | Ressourcen-ID zum Suchen des Quellclusters zum Wiederherstellen | Schnur |
ShardingEigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| shardAnzahl | Anzahl der Für den Cluster bereitzustellenden Shards. | Int |
Storage-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| GrößeGb | Die Größe des Datenträgers, der jedem Server zugewiesen ist. | Int |
Verfolgte ResourceTags
| Name | Beschreibung | Wert |
|---|
Verwendungsbeispiele
Terraform -Ressourcendefinition (AzAPI-Anbieter)
Der MongoClusters-Ressourcentyp kann mit Vorgängen bereitgestellt werden, die auf Folgendes abzielen:
Eine Liste der geänderten Eigenschaften in jeder API-Version finden Sie unter Änderungsprotokoll.
Ressourcenformat
Um eine Microsoft.DocumentDB/mongoClusters-Ressource zu erstellen, fügen Sie Ihrer Vorlage die folgende Terraform hinzu.
resource "azapi_resource" "symbolicname" {
type = "Microsoft.DocumentDB/mongoClusters@2024-10-01-preview"
name = "string"
parent_id = "string"
location = "string"
tags = {
{customized property} = "string"
}
body = {
properties = {
administrator = {
password = "string"
userName = "string"
}
backup = {
}
compute = {
tier = "string"
}
createMode = "string"
dataApi = {
mode = "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
}
}
}
}
Eigenschaftswerte
Microsoft.DocumentDB/mongoCluster
| Name | Beschreibung | Wert |
|---|---|---|
| Ort | Der geografische Standort, an dem sich die Ressource befindet | Zeichenfolge (erforderlich) |
| Name | Der Ressourcenname | Schnur Zwänge: Min. Länge = 3 Max. Länge = 40 Pattern = ^[a-z0-9]+(-[a-z0-9]+)* (erforderlich) |
| parent_id | Die ID der Ressource, auf die diese Erweiterungsressource angewendet werden soll. | Zeichenfolge (erforderlich) |
| Eigenschaften | Die ressourcenspezifischen Eigenschaften für diese Ressource. | MongoCluster-Eigenschaften |
| Schilder | Ressourcentags | Wörterbuch der Tagnamen und -werte. |
| Art | Der Ressourcentyp | "Microsoft.DocumentDB/mongoClusters@2024-10-01-preview" |
AdministratorEigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Passwort | Das Administratorkennwort. | Schnur Zwänge: Vertraulicher Wert. Übergeben Als sicherer Parameter. |
| Nutzername | Der Administratorbenutzername. | Schnur |
Backup-Eigenschaften
| Name | Beschreibung | Wert |
|---|
Compute-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Rang | Die Computeebene, die dem Cluster zugewiesen werden soll, wobei jede Ebene einer größe des virtuellen Kerns und des Arbeitsspeichers zugeordnet ist. Beispielwerte: 'M30', 'M40'. | Schnur |
DataApi-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Modus | Der Modus, der angibt, ob die Mongo-Daten-API für einen Cluster aktiviert ist. | "Deaktiviert" "Aktiviert" |
HighAvailability-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| target-Modus | Der für den Cluster angeforderte Zielmodus für hohe Verfügbarkeit. | "Deaktiviert" 'SameZone' "ZoneRedundantPreferred" |
MongoCluster-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| Administrator | Die lokalen Administratoreigenschaften für den Mongo-Cluster. | "AdministratorProperties" |
| Sicherungskopie | Die Sicherungseigenschaften des Mongoclusters. | BackupProperties- |
| berechnen | Die Berechnungseigenschaften des Mongoclusters. | ComputeProperties- |
| createMode | Der Modus zum Erstellen eines Mongoclusters. | 'Standard' "GeoReplica" 'PointInTimeRestore' 'Replikat' |
| dataApi | Die Daten-API-Eigenschaften des Mongo-Clusters. | DataApiProperties- |
| hohe Verfügbarkeit | Die Eigenschaften der hohen Verfügbarkeit des Mongo-Clusters. | HighAvailability-Eigenschaften |
| VorschauFunktionen | Liste der privaten Endpunktverbindungen. | Zeichenfolgenarray, das eine der folgenden Elemente enthält: "GeoReplicas" |
| Öffentlicher Netzwerkzugang | Gibt an, ob der Zugriff auf öffentliche Endpunkte für diesen Mongo-Cluster zulässig ist. | "Deaktiviert" "Aktiviert" |
| replicaParameters | Die Parameter zum Erstellen eines Replikat-Mongoclusters. | MongoClusterReplicaParameters |
| restore-Parameter | Die Parameter zum Erstellen eines Mongoclusters für die Punkt-in-Zeit-Wiederherstellung. | MongoClusterRestoreParameters |
| serverVersion | Die Mongo DB-Serverversion. Wenn nicht angegeben, wird standardmäßig die neueste verfügbare Version verwendet. | Schnur |
| Sharding | Die Shardingeigenschaften des Mongoclusters. | ShardingProperties- |
| Lagerung | Die Speichereigenschaften des Mongoclusters. | StorageProperties- |
MongoClusterReplicaParameters
| Name | Beschreibung | Wert |
|---|---|---|
| Quellstandort | Der Speicherort des Quellclusters | Zeichenfolge (erforderlich) |
| sourceResourceId | Die ID des Replikationsquellclusters. | Zeichenfolge (erforderlich) |
MongoClusterRestoreParameters
| Name | Beschreibung | Wert |
|---|---|---|
| pointInTimeUTC | UTC-Zeitpunkt zum Wiederherstellen eines Mongoclusters | Schnur |
| sourceResourceId | Ressourcen-ID zum Suchen des Quellclusters zum Wiederherstellen | Schnur |
ShardingEigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| shardAnzahl | Anzahl der Für den Cluster bereitzustellenden Shards. | Int |
Storage-Eigenschaften
| Name | Beschreibung | Wert |
|---|---|---|
| GrößeGb | Die Größe des Datenträgers, der jedem Server zugewiesen ist. | Int |
Verfolgte ResourceTags
| Name | Beschreibung | Wert |
|---|
Verwendungsbeispiele
Terraform-Beispiele
Ein grundlegendes Beispiel für die Bereitstellung von Azure Cosmos DB für 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 = ["*"]
}