Megosztás:


Microsoft.DocumentDB mongoClusters

Bicep-erőforrásdefiníció

A mongoClusters erőforrástípus a következő célműveletekkel telepíthető:

Az egyes API-verziók módosított tulajdonságainak listáját a változásnaplócímű témakörben találja.

Erőforrás formátuma

Microsoft.DocumentDB/mongoClusters erőforrás létrehozásához adja hozzá a következő Bicep-et a sablonhoz.

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

Tulajdonságértékek

Microsoft.DocumentDB/mongoClusters

Név Leírás Érték
identitás Az erőforráshoz rendelt felügyeltszolgáltatás-identitások. ManagedServiceIdentity
hely Az a földrajzi hely, ahol az erőforrás él sztring (kötelező)
név Az erőforrás neve húr

Korlátok:
Minimális hossz = 3
Maximális hossz = 40
Minta = ^[a-z0-9]+(-[a-z0-9]+)* (kötelező)
kellékek Az erőforrás erőforrás-specifikus tulajdonságai. MongoClusterProperties
Címkék Erőforráscímkék Címkenevek és -értékek szótára. sablonok címkéinek megtekintése

Rendszergazdai jogosultságok

Név Leírás Érték
jelszó A rendszergazda jelszava. húr

Korlátok:
Bizalmas érték. Adja meg biztonságos paraméterként.
Felhasználónév A rendszergazda felhasználóneve. karakterlánc

AuthConfigProperties

Név Leírás Érték
allowedModes Engedélyezett hitelesítési módok a fürtön való adathozzáféréshez. Sztringtömb, amely a következők bármelyikét tartalmazza:
"MicrosoftEntraID"
"Natív Auth"

Biztonsági mentés tulajdonságai

Név Leírás Érték

Számítási tulajdonságok

Név Leírás Érték
rétegez A fürthöz hozzárendelendő számítási szint, ahol az egyes szintek virtuális magra és memóriaméretre vannak leképezve. Példaértékek: 'M30', 'M40'. karakterlánc

CustomerManagedKeyEncryptionProperties

Név Leírás Érték
keyEncryptionKeyIdentity A kulcstitkosítási kulcs eléréséhez használt identitás. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl A titkosításhoz használt kulcstartókulcs URI-ja. karakterlánc

DataApiProperties

Név Leírás Érték
üzemmód Annak jelzésére szolgáló mód, hogy a Mongo Data API engedélyezve van-e egy fürthöz. "Letiltva"
"Engedélyezve"

EncryptionProperties

Név Leírás Érték
customerManagedKeyEncryption Ügyfél által felügyelt kulcstitkosítási beállítások. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Név Leírás Érték
targetMode A fürthöz kért cél magas rendelkezésre állási mód. "Letiltva"
"SameZone"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity

Név Leírás Érték
azonosságtípus Az identitás típusa. Csak a "UserAssignedIdentity" támogatott. "UserAssignedIdentity"
userAssignedIdentityResourceId A felhasználó által hozzárendelt identitás erőforrás-azonosítója. karakterlánc

ManagedServiceIdentity

Név Leírás Érték
típus A felügyelt szolgáltatás identitásának típusa (ahol a SystemAssigned és a UserAssigned típus is engedélyezett). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
"UserAssigned" (kötelező)
felhasználóhozzárendeltAzonosítók Az erőforráshoz társított felhasználó által hozzárendelt identitások készlete. A userAssignedIdentities szótárkulcsok arm-erőforrásazonosítók lesznek a következő formában: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. A szótár értékei üres objektumok ({}) lehetnek a kérelmekben. UserAssignedIdentities

MongoClusterProperties

Név Leírás Érték
rendszergazda A mongo-fürt helyi rendszergazdai tulajdonságai. Rendszergazdai jogosultságok
authConfig A fürt hitelesítési konfigurációja. AuthConfigProperties
biztonsági másolat A mongo-fürt biztonsági mentési tulajdonságai. Biztonsági mentés tulajdonságai
számítás A mongo-fürt számítási tulajdonságai. Számítási tulajdonságok
createMode Mongo-fürt létrehozásának módja. "Alapértelmezett"
"GeoReplica"
"PointInTimeRestore"
"Replika"
dataAPI A mongo-fürt Data API-tulajdonságai. DataApiProperties
titkosítás A fürt titkosítási konfigurációja. A konfigurált identitástól függ. Titkosítási tulajdonságok
magas rendelkezésre állás A mongo-fürt magas rendelkezésre állási tulajdonságai. HighAvailabilityProperties
előnézetJellemzők Privát végpontkapcsolatok listája. Sztringtömb, amely a következők bármelyikét tartalmazza:
"GeoReplicas"
nyilvános hálózati hozzáférés Azt jelzi, hogy engedélyezett-e nyilvános végpont-hozzáférés ehhez a mongo-fürthöz. "Letiltva"
"Engedélyezve"
replicaParameters A replika mongo-fürt létrehozásához használható paraméterek. MongoClusterReplicaParameters
restoreParameters Az időponthoz kötött visszaállítási mongo-fürt létrehozásához használható paraméterek. MongoClusterRestoreParameters
szerver verziója A Mongo DB-kiszolgáló verziója. Ha nincs megadva, a legújabb elérhető verzió alapértelmezett értéke. karakterlánc
horizontális skálázás A mongo-fürt horizontális skálázási tulajdonságai. ShardingProperties
tár A mongo-fürt tárolási tulajdonságai. StorageProperties

MongoClusterReplicaParameters

Név Leírás Érték
forráshely A forrásfürt helye sztring (kötelező)
sourceResourceId A replikáció forrásfürtjének azonosítója. sztring (kötelező)

MongoClusterRestoreParameters

Név Leírás Érték
pointInTimeUTC UTC időpont mongo-fürt visszaállításához karakterlánc
sourceResourceId Erőforrás-azonosító a visszaállítani kívánt forrásfürt megkereséséhez karakterlánc

ShardingProperties

Név Leírás Érték
shardCount A fürtön kiépíteni kívánt szegmensek száma. Int

StorageProperties

Név Leírás Érték
méretGb Az egyes kiszolgálókhoz rendelt adatlemez mérete. Int
típus A fürtkiszolgálók kiépítéséhez használt tároló típusa. "PrémiumSSD"
"PrémiumSSDv2"

TrackedResourceTags

Név Leírás Érték

UserAssignedIdentities

Név Leírás Érték

Felhasználó által hozzárendelt identitás

Név Leírás Érték

Használati példák

Azure-ból ellenőrzött modulok

Az alábbi Azure Verified Modules használható az erőforrástípus üzembe helyezéséhez.

Modul Leírás
Cosmos DB a MongoDB-hez (virtuális mag) AVM resource module for Cosmos DB for MongoDB (vCore)

ARM-sablon erőforrásdefiníciója

A mongoClusters erőforrástípus a következő célműveletekkel telepíthető:

Az egyes API-verziók módosított tulajdonságainak listáját a változásnaplócímű témakörben találja.

Erőforrás formátuma

Microsoft.DocumentDB/mongoClusters erőforrás létrehozásához adja hozzá a következő JSON-t a sablonhoz.

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

Tulajdonságértékek

Microsoft.DocumentDB/mongoClusters

Név Leírás Érték
apiVersion Az API verziója '2025-09-01'
identitás Az erőforráshoz rendelt felügyeltszolgáltatás-identitások. ManagedServiceIdentity
hely Az a földrajzi hely, ahol az erőforrás él sztring (kötelező)
név Az erőforrás neve húr

Korlátok:
Minimális hossz = 3
Maximális hossz = 40
Minta = ^[a-z0-9]+(-[a-z0-9]+)* (kötelező)
kellékek Az erőforrás erőforrás-specifikus tulajdonságai. MongoClusterProperties
Címkék Erőforráscímkék Címkenevek és -értékek szótára. sablonok címkéinek megtekintése
típus Az erőforrás típusa "Microsoft.DocumentDB/mongoClusters"

Rendszergazdai jogosultságok

Név Leírás Érték
jelszó A rendszergazda jelszava. húr

Korlátok:
Bizalmas érték. Adja meg biztonságos paraméterként.
Felhasználónév A rendszergazda felhasználóneve. karakterlánc

AuthConfigProperties

Név Leírás Érték
allowedModes Engedélyezett hitelesítési módok a fürtön való adathozzáféréshez. Sztringtömb, amely a következők bármelyikét tartalmazza:
"MicrosoftEntraID"
"Natív Auth"

Biztonsági mentés tulajdonságai

Név Leírás Érték

Számítási tulajdonságok

Név Leírás Érték
rétegez A fürthöz hozzárendelendő számítási szint, ahol az egyes szintek virtuális magra és memóriaméretre vannak leképezve. Példaértékek: 'M30', 'M40'. karakterlánc

CustomerManagedKeyEncryptionProperties

Név Leírás Érték
keyEncryptionKeyIdentity A kulcstitkosítási kulcs eléréséhez használt identitás. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl A titkosításhoz használt kulcstartókulcs URI-ja. karakterlánc

DataApiProperties

Név Leírás Érték
üzemmód Annak jelzésére szolgáló mód, hogy a Mongo Data API engedélyezve van-e egy fürthöz. "Letiltva"
"Engedélyezve"

EncryptionProperties

Név Leírás Érték
customerManagedKeyEncryption Ügyfél által felügyelt kulcstitkosítási beállítások. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Név Leírás Érték
targetMode A fürthöz kért cél magas rendelkezésre állási mód. "Letiltva"
"SameZone"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity

Név Leírás Érték
azonosságtípus Az identitás típusa. Csak a "UserAssignedIdentity" támogatott. "UserAssignedIdentity"
userAssignedIdentityResourceId A felhasználó által hozzárendelt identitás erőforrás-azonosítója. karakterlánc

ManagedServiceIdentity

Név Leírás Érték
típus A felügyelt szolgáltatás identitásának típusa (ahol a SystemAssigned és a UserAssigned típus is engedélyezett). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
"UserAssigned" (kötelező)
felhasználóhozzárendeltAzonosítók Az erőforráshoz társított felhasználó által hozzárendelt identitások készlete. A userAssignedIdentities szótárkulcsok arm-erőforrásazonosítók lesznek a következő formában: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. A szótár értékei üres objektumok ({}) lehetnek a kérelmekben. UserAssignedIdentities

MongoClusterProperties

Név Leírás Érték
rendszergazda A mongo-fürt helyi rendszergazdai tulajdonságai. Rendszergazdai jogosultságok
authConfig A fürt hitelesítési konfigurációja. AuthConfigProperties
biztonsági másolat A mongo-fürt biztonsági mentési tulajdonságai. Biztonsági mentés tulajdonságai
számítás A mongo-fürt számítási tulajdonságai. Számítási tulajdonságok
createMode Mongo-fürt létrehozásának módja. "Alapértelmezett"
"GeoReplica"
"PointInTimeRestore"
"Replika"
dataAPI A mongo-fürt Data API-tulajdonságai. DataApiProperties
titkosítás A fürt titkosítási konfigurációja. A konfigurált identitástól függ. Titkosítási tulajdonságok
magas rendelkezésre állás A mongo-fürt magas rendelkezésre állási tulajdonságai. HighAvailabilityProperties
előnézetJellemzők Privát végpontkapcsolatok listája. Sztringtömb, amely a következők bármelyikét tartalmazza:
"GeoReplicas"
nyilvános hálózati hozzáférés Azt jelzi, hogy engedélyezett-e nyilvános végpont-hozzáférés ehhez a mongo-fürthöz. "Letiltva"
"Engedélyezve"
replicaParameters A replika mongo-fürt létrehozásához használható paraméterek. MongoClusterReplicaParameters
restoreParameters Az időponthoz kötött visszaállítási mongo-fürt létrehozásához használható paraméterek. MongoClusterRestoreParameters
szerver verziója A Mongo DB-kiszolgáló verziója. Ha nincs megadva, a legújabb elérhető verzió alapértelmezett értéke. karakterlánc
horizontális skálázás A mongo-fürt horizontális skálázási tulajdonságai. ShardingProperties
tár A mongo-fürt tárolási tulajdonságai. StorageProperties

MongoClusterReplicaParameters

Név Leírás Érték
forráshely A forrásfürt helye sztring (kötelező)
sourceResourceId A replikáció forrásfürtjének azonosítója. sztring (kötelező)

MongoClusterRestoreParameters

Név Leírás Érték
pointInTimeUTC UTC időpont mongo-fürt visszaállításához karakterlánc
sourceResourceId Erőforrás-azonosító a visszaállítani kívánt forrásfürt megkereséséhez karakterlánc

ShardingProperties

Név Leírás Érték
shardCount A fürtön kiépíteni kívánt szegmensek száma. Int

StorageProperties

Név Leírás Érték
méretGb Az egyes kiszolgálókhoz rendelt adatlemez mérete. Int
típus A fürtkiszolgálók kiépítéséhez használt tároló típusa. "PrémiumSSD"
"PrémiumSSDv2"

TrackedResourceTags

Név Leírás Érték

UserAssignedIdentities

Név Leírás Érték

Felhasználó által hozzárendelt identitás

Név Leírás Érték

Használati példák

Terraform (AzAPI-szolgáltató) erőforrásdefiníciója

A mongoClusters erőforrástípus a következő célműveletekkel telepíthető:

  • erőforráscsoportok

Az egyes API-verziók módosított tulajdonságainak listáját a változásnaplócímű témakörben találja.

Erőforrás formátuma

Microsoft.DocumentDB/mongoClusters erőforrás létrehozásához adja hozzá a következő Terraformot a sablonhoz.

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

Tulajdonságértékek

Microsoft.DocumentDB/mongoClusters

Név Leírás Érték
identitás Az erőforráshoz rendelt felügyeltszolgáltatás-identitások. ManagedServiceIdentity
hely Az a földrajzi hely, ahol az erőforrás él sztring (kötelező)
név Az erőforrás neve húr

Korlátok:
Minimális hossz = 3
Maximális hossz = 40
Minta = ^[a-z0-9]+(-[a-z0-9]+)* (kötelező)
kellékek Az erőforrás erőforrás-specifikus tulajdonságai. MongoClusterProperties
Címkék Erőforráscímkék Címkenevek és -értékek szótára.
típus Az erőforrás típusa "Microsoft.DocumentDB/mongoClusters@2025-09-01"

Rendszergazdai jogosultságok

Név Leírás Érték
jelszó A rendszergazda jelszava. húr

Korlátok:
Bizalmas érték. Adja meg biztonságos paraméterként.
Felhasználónév A rendszergazda felhasználóneve. karakterlánc

AuthConfigProperties

Név Leírás Érték
allowedModes Engedélyezett hitelesítési módok a fürtön való adathozzáféréshez. Sztringtömb, amely a következők bármelyikét tartalmazza:
"MicrosoftEntraID"
"Natív Auth"

Biztonsági mentés tulajdonságai

Név Leírás Érték

Számítási tulajdonságok

Név Leírás Érték
rétegez A fürthöz hozzárendelendő számítási szint, ahol az egyes szintek virtuális magra és memóriaméretre vannak leképezve. Példaértékek: 'M30', 'M40'. karakterlánc

CustomerManagedKeyEncryptionProperties

Név Leírás Érték
keyEncryptionKeyIdentity A kulcstitkosítási kulcs eléréséhez használt identitás. KeyEncryptionKeyIdentity
keyEncryptionKeyUrl A titkosításhoz használt kulcstartókulcs URI-ja. karakterlánc

DataApiProperties

Név Leírás Érték
üzemmód Annak jelzésére szolgáló mód, hogy a Mongo Data API engedélyezve van-e egy fürthöz. "Letiltva"
"Engedélyezve"

EncryptionProperties

Név Leírás Érték
customerManagedKeyEncryption Ügyfél által felügyelt kulcstitkosítási beállítások. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties

Név Leírás Érték
targetMode A fürthöz kért cél magas rendelkezésre állási mód. "Letiltva"
"SameZone"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity

Név Leírás Érték
azonosságtípus Az identitás típusa. Csak a "UserAssignedIdentity" támogatott. "UserAssignedIdentity"
userAssignedIdentityResourceId A felhasználó által hozzárendelt identitás erőforrás-azonosítója. karakterlánc

ManagedServiceIdentity

Név Leírás Érték
típus A felügyelt szolgáltatás identitásának típusa (ahol a SystemAssigned és a UserAssigned típus is engedélyezett). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
"UserAssigned" (kötelező)
felhasználóhozzárendeltAzonosítók Az erőforráshoz társított felhasználó által hozzárendelt identitások készlete. A userAssignedIdentities szótárkulcsok arm-erőforrásazonosítók lesznek a következő formában: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. A szótár értékei üres objektumok ({}) lehetnek a kérelmekben. UserAssignedIdentities

MongoClusterProperties

Név Leírás Érték
rendszergazda A mongo-fürt helyi rendszergazdai tulajdonságai. Rendszergazdai jogosultságok
authConfig A fürt hitelesítési konfigurációja. AuthConfigProperties
biztonsági másolat A mongo-fürt biztonsági mentési tulajdonságai. Biztonsági mentés tulajdonságai
számítás A mongo-fürt számítási tulajdonságai. Számítási tulajdonságok
createMode Mongo-fürt létrehozásának módja. "Alapértelmezett"
"GeoReplica"
"PointInTimeRestore"
"Replika"
dataAPI A mongo-fürt Data API-tulajdonságai. DataApiProperties
titkosítás A fürt titkosítási konfigurációja. A konfigurált identitástól függ. Titkosítási tulajdonságok
magas rendelkezésre állás A mongo-fürt magas rendelkezésre állási tulajdonságai. HighAvailabilityProperties
előnézetJellemzők Privát végpontkapcsolatok listája. Sztringtömb, amely a következők bármelyikét tartalmazza:
"GeoReplicas"
nyilvános hálózati hozzáférés Azt jelzi, hogy engedélyezett-e nyilvános végpont-hozzáférés ehhez a mongo-fürthöz. "Letiltva"
"Engedélyezve"
replicaParameters A replika mongo-fürt létrehozásához használható paraméterek. MongoClusterReplicaParameters
restoreParameters Az időponthoz kötött visszaállítási mongo-fürt létrehozásához használható paraméterek. MongoClusterRestoreParameters
szerver verziója A Mongo DB-kiszolgáló verziója. Ha nincs megadva, a legújabb elérhető verzió alapértelmezett értéke. karakterlánc
horizontális skálázás A mongo-fürt horizontális skálázási tulajdonságai. ShardingProperties
tár A mongo-fürt tárolási tulajdonságai. StorageProperties

MongoClusterReplicaParameters

Név Leírás Érték
forráshely A forrásfürt helye sztring (kötelező)
sourceResourceId A replikáció forrásfürtjének azonosítója. sztring (kötelező)

MongoClusterRestoreParameters

Név Leírás Érték
pointInTimeUTC UTC időpont mongo-fürt visszaállításához karakterlánc
sourceResourceId Erőforrás-azonosító a visszaállítani kívánt forrásfürt megkereséséhez karakterlánc

ShardingProperties

Név Leírás Érték
shardCount A fürtön kiépíteni kívánt szegmensek száma. Int

StorageProperties

Név Leírás Érték
méretGb Az egyes kiszolgálókhoz rendelt adatlemez mérete. Int
típus A fürtkiszolgálók kiépítéséhez használt tároló típusa. "PrémiumSSD"
"PrémiumSSDv2"

TrackedResourceTags

Név Leírás Érték

UserAssignedIdentities

Név Leírás Érték

Felhasználó által hozzárendelt identitás

Név Leírás Érték

Használati példák

Terraform minták

Egy alapvető példa az Azure Cosmos DB telepítésére MongoDB (vCore) esetében.

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    = ["*"]
}

Azure-ból ellenőrzött modulok

Az alábbi Azure Verified Modules használható az erőforrástípus üzembe helyezéséhez.

Modul Leírás
Cosmos DB a MongoDB-hez (virtuális mag) AVM resource module for Cosmos DB for MongoDB (vCore)