Udostępnij przez


Microsoft.DocumentDB mongoClusters 2025-08-01-wersja zapoznawcza

Definicja zasobu Bicep

Typ zasobu mongoClusters można wdrożyć przy użyciu operacji docelowych:

Aby uzyskać listę zmienionych właściwości w każdej wersji interfejsu API, zobacz dziennika zmian.

Format zasobu

Aby utworzyć zasób Microsoft.DocumentDB/mongoClusters, dodaj następujący kod Bicep do szablonu.

resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2025-08-01-preview' = {
  scope: resourceSymbolicName or scope
  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'
  }
}

Wartości właściwości

Microsoft.DocumentDB/mongoClusters

Name Description Wartość
tożsamość Tożsamości usługi zarządzanej przypisane do tego zasobu. ManagedServiceIdentity (tożsamość usługi)
lokalizacja Lokalizacja geograficzna, w której znajduje się zasób ciąg (wymagany)
nazwa Nazwa zasobu string

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 40
Wzorzec = ^[a-z0-9]+(-[a-z0-9]+)* (wymagane)
properties Właściwości specyficzne dla zasobu dla tego zasobu. MongoClusterProperties
zakres Użyj polecenia podczas tworzenia zasobu w zakresie innym niż zakres wdrożenia. Ustaw tę właściwość na symboliczną nazwę zasobu, aby zastosować zasób rozszerzenia .
tags Tagi zasobów Słownik nazw tagów i wartości. Zobacz tagi w szablonach

AdministratorProperties

Name Description Wartość
hasło Hasło administratora. string

Ograniczenia:
Wartość wrażliwa. Przekaż jako bezpieczny parametr.
userName Nazwa użytkownika administratora. ciąg

AuthConfigProperties (właściwości uwierzytelniania)

Name Description Wartość
allowedModes (dozwolone tryby) Dozwolone tryby uwierzytelniania dla dostępu do danych w klastrze. Tablica ciągów zawierająca dowolną z:
"MicrosoftEntraID"
"Uwierzytelnianie natywne"

Właściwości kopii zapasowej

Name Description Wartość

Właściwości obliczeniowe

Name Description Wartość
warstwa Warstwa obliczeniowa do przypisania do klastra, w której każda warstwa jest mapowana na rozmiar rdzenia wirtualnego i pamięci. Przykładowe wartości: "M30", "M40". ciąg

CustomerManagedKeyEncryptionProperties

Name Description Wartość
keyEncryptionKeyIdentity (tożsamość klucza) Tożsamość używana do uzyskiwania dostępu do klucza szyfrowania klucza. KeyEncryptionKeyIdentity (Tożsamość klucza)
keyEncryptionKeyUrl (kluczEncryptionKeyUrl) Identyfikator URI klucza magazynu kluczy używanego do szyfrowania. ciąg

Właściwości DataApiProperties

Name Description Wartość
mode Tryb wskazujący, czy interfejs API danych Mongo jest włączony dla klastra. 'Disabled'
'Enabled'

Właściwości szyfrowania

Name Description Wartość
customerManagedKeyEncryption Ustawienia szyfrowania kluczy zarządzane przez klienta. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties (Właściwości wysokiej dostępności)

Name Description Wartość
targetMode (tryb docelowy) Docelowy tryb wysokiej dostępności żądany dla klastra. 'Disabled'
"Ta sama strefa"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity (Tożsamość klucza)

Name Description Wartość
identityType Typ tożsamości. Obsługiwana jest tylko wartość "UserAssignedIdentity". "UserAssignedIdentity"
userAssignedIdentityResourceId Identyfikator zasobu tożsamości przypisanego przez użytkownika. ciąg

ManagedServiceIdentity

Name Description Wartość
typ Typ tożsamości usługi zarządzanej (gdzie dozwolone są typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
"SystemAssigned,UserAssigned"
"UserAssigned" (wymagane)
userAssignedIdentities Zestaw tożsamości przypisanych przez użytkownika skojarzonych z zasobem. Klucze słownika userAssignedIdentities będą identyfikatorami zasobów usługi ARM w postaci: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Wartości słownika mogą być pustymi obiektami ({}) w żądaniach. UserAssignedIdentities

MongoClusterProperties

Name Description Wartość
administrator Właściwości administratora lokalnego dla klastra mongo. AdministratorProperties
authConfig (konfiguracja systemu) Konfiguracja uwierzytelniania dla klastra. AuthConfigProperties (właściwości uwierzytelniania)
kopia zapasowa Właściwości kopii zapasowej klastra mongo. Właściwości kopii zapasowej
obliczanie Właściwości obliczeniowe klastra mongo. Właściwości obliczeniowe
createMode Tryb tworzenia klastra mongo. Wartość domyślna
"GeoReplica"
"PointInTimeRestore"
"Replika"
dataApi (interfejs danych) Właściwości interfejsu API danych klastra mongo. Właściwości DataApiProperties
szyfrowanie Konfiguracja szyfrowania dla klastra. Zależy od konfigurowanej tożsamości. Właściwości szyfrowania
wysoka dostępność Właściwości wysokiej dostępności klastra mongo. HighAvailabilityProperties (Właściwości wysokiej dostępności)
Funkcje w wersji zapoznawczej Lista połączeń prywatnych punktów końcowych. Tablica ciągów zawierająca dowolną z:
"GeoReplicas"
dostęp do sieci publicznej Określa, czy dostęp do publicznego punktu końcowego jest dozwolony dla tego klastra mongo. 'Disabled'
'Enabled'
replicaParameters (parametry repliki) Parametry do utworzenia repliki klastra mongo. MongoClusterReplicaParameters (Parametry repliki)
restoreParameters (parametry przywracania) Parametry do utworzenia klastra mongo przywracania do punktu w czasie. MongoClusterRestoreParameters
serverVersion Wersja serwera Mongo DB. Wartość domyślna to najnowsza dostępna wersja, jeśli nie zostanie określona. ciąg
fragmentowanie Właściwości fragmentowania klastra mongo. Właściwości fragmentowania
magazyn Właściwości magazynu klastra mongo. StorageWłaściwości

MongoClusterReplicaParameters (Parametry repliki)

Name Description Wartość
lokalizacja źródłowa Lokalizacja klastra źródłowego ciąg (wymagany)
sourceResourceId (identyfikator źródłowy) Identyfikator klastra źródłowego replikacji. ciąg (wymagany)

MongoClusterRestoreParameters

Name Description Wartość
pointInTimeUTC (punkt w czasie) Punkt CZASU UTC w celu przywrócenia klastra mongo ciąg
sourceResourceId (identyfikator źródłowy) Identyfikator zasobu do zlokalizowania klastra źródłowego do przywrócenia ciąg

Właściwości fragmentowania

Name Description Wartość
shardCount (liczba odłamków) Liczba fragmentów do aprowizacji w klastrze. int

Właściwości magazynu

Name Description Wartość
rozmiarGb Rozmiar dysku danych przypisany do każdego serwera. int
typ Typ magazynu, który ma być obsługiwany przez serwery klastra. "PremiumSSD" (Dysk SSD w warstwie Premium)
"PremiumSSDv2"

Śledzone tagi zasobów

Name Description Wartość

UserAssignedIdentities

Name Description Wartość

UserAssignedIdentity

Name Description Wartość

Przykłady użycia

Moduły zweryfikowane na platformie Azure

Następujące moduły zweryfikowane platformy Azure mogą służyć do wdrażania tego typu zasobu.

Moduł Description
Cosmos DB for MongoDB (rdzeń wirtualny) Moduł zasobów AVM dla usługi Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny)

Definicja zasobu szablonu usługi ARM

Typ zasobu mongoClusters można wdrożyć przy użyciu operacji docelowych:

Aby uzyskać listę zmienionych właściwości w każdej wersji interfejsu API, zobacz dziennika zmian.

Format zasobu

Aby utworzyć zasób Microsoft.DocumentDB/mongoClusters, dodaj następujący kod JSON do szablonu.

{
  "type": "Microsoft.DocumentDB/mongoClusters",
  "apiVersion": "2025-08-01-preview",
  "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"
  }
}

Wartości właściwości

Microsoft.DocumentDB/mongoClusters

Name Description Wartość
apiVersion Wersja interfejsu API "2025-08-01-podgląd"
tożsamość Tożsamości usługi zarządzanej przypisane do tego zasobu. ManagedServiceIdentity (tożsamość usługi)
lokalizacja Lokalizacja geograficzna, w której znajduje się zasób ciąg (wymagany)
nazwa Nazwa zasobu string

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 40
Wzorzec = ^[a-z0-9]+(-[a-z0-9]+)* (wymagane)
properties Właściwości specyficzne dla zasobu dla tego zasobu. MongoClusterProperties
tags Tagi zasobów Słownik nazw tagów i wartości. Zobacz tagi w szablonach
typ Typ zasobu "Microsoft.DocumentDB/mongoClusters"

AdministratorProperties

Name Description Wartość
hasło Hasło administratora. string

Ograniczenia:
Wartość wrażliwa. Przekaż jako bezpieczny parametr.
userName Nazwa użytkownika administratora. ciąg

AuthConfigProperties (właściwości uwierzytelniania)

Name Description Wartość
allowedModes (dozwolone tryby) Dozwolone tryby uwierzytelniania dla dostępu do danych w klastrze. Tablica ciągów zawierająca dowolną z:
"MicrosoftEntraID"
"Uwierzytelnianie natywne"

Właściwości kopii zapasowej

Name Description Wartość

Właściwości obliczeniowe

Name Description Wartość
warstwa Warstwa obliczeniowa do przypisania do klastra, w której każda warstwa jest mapowana na rozmiar rdzenia wirtualnego i pamięci. Przykładowe wartości: "M30", "M40". ciąg

CustomerManagedKeyEncryptionProperties

Name Description Wartość
keyEncryptionKeyIdentity (tożsamość klucza) Tożsamość używana do uzyskiwania dostępu do klucza szyfrowania klucza. KeyEncryptionKeyIdentity (Tożsamość klucza)
keyEncryptionKeyUrl (kluczEncryptionKeyUrl) Identyfikator URI klucza magazynu kluczy używanego do szyfrowania. ciąg

Właściwości DataApiProperties

Name Description Wartość
mode Tryb wskazujący, czy interfejs API danych Mongo jest włączony dla klastra. 'Disabled'
'Enabled'

Właściwości szyfrowania

Name Description Wartość
customerManagedKeyEncryption Ustawienia szyfrowania kluczy zarządzane przez klienta. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties (Właściwości wysokiej dostępności)

Name Description Wartość
targetMode (tryb docelowy) Docelowy tryb wysokiej dostępności żądany dla klastra. 'Disabled'
"Ta sama strefa"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity (Tożsamość klucza)

Name Description Wartość
identityType Typ tożsamości. Obsługiwana jest tylko wartość "UserAssignedIdentity". "UserAssignedIdentity"
userAssignedIdentityResourceId Identyfikator zasobu tożsamości przypisanego przez użytkownika. ciąg

ManagedServiceIdentity

Name Description Wartość
typ Typ tożsamości usługi zarządzanej (gdzie dozwolone są typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
"SystemAssigned,UserAssigned"
"UserAssigned" (wymagane)
userAssignedIdentities Zestaw tożsamości przypisanych przez użytkownika skojarzonych z zasobem. Klucze słownika userAssignedIdentities będą identyfikatorami zasobów usługi ARM w postaci: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Wartości słownika mogą być pustymi obiektami ({}) w żądaniach. UserAssignedIdentities

MongoClusterProperties

Name Description Wartość
administrator Właściwości administratora lokalnego dla klastra mongo. AdministratorProperties
authConfig (konfiguracja systemu) Konfiguracja uwierzytelniania dla klastra. AuthConfigProperties (właściwości uwierzytelniania)
kopia zapasowa Właściwości kopii zapasowej klastra mongo. Właściwości kopii zapasowej
obliczanie Właściwości obliczeniowe klastra mongo. Właściwości obliczeniowe
createMode Tryb tworzenia klastra mongo. Wartość domyślna
"GeoReplica"
"PointInTimeRestore"
"Replika"
dataApi (interfejs danych) Właściwości interfejsu API danych klastra mongo. Właściwości DataApiProperties
szyfrowanie Konfiguracja szyfrowania dla klastra. Zależy od konfigurowanej tożsamości. Właściwości szyfrowania
wysoka dostępność Właściwości wysokiej dostępności klastra mongo. HighAvailabilityProperties (Właściwości wysokiej dostępności)
Funkcje w wersji zapoznawczej Lista połączeń prywatnych punktów końcowych. Tablica ciągów zawierająca dowolną z:
"GeoReplicas"
dostęp do sieci publicznej Określa, czy dostęp do publicznego punktu końcowego jest dozwolony dla tego klastra mongo. 'Disabled'
'Enabled'
replicaParameters (parametry repliki) Parametry do utworzenia repliki klastra mongo. MongoClusterReplicaParameters (Parametry repliki)
restoreParameters (parametry przywracania) Parametry do utworzenia klastra mongo przywracania do punktu w czasie. MongoClusterRestoreParameters
serverVersion Wersja serwera Mongo DB. Wartość domyślna to najnowsza dostępna wersja, jeśli nie zostanie określona. ciąg
fragmentowanie Właściwości fragmentowania klastra mongo. Właściwości fragmentowania
magazyn Właściwości magazynu klastra mongo. StorageWłaściwości

MongoClusterReplicaParameters (Parametry repliki)

Name Description Wartość
lokalizacja źródłowa Lokalizacja klastra źródłowego ciąg (wymagany)
sourceResourceId (identyfikator źródłowy) Identyfikator klastra źródłowego replikacji. ciąg (wymagany)

MongoClusterRestoreParameters

Name Description Wartość
pointInTimeUTC (punkt w czasie) Punkt CZASU UTC w celu przywrócenia klastra mongo ciąg
sourceResourceId (identyfikator źródłowy) Identyfikator zasobu do zlokalizowania klastra źródłowego do przywrócenia ciąg

Właściwości fragmentowania

Name Description Wartość
shardCount (liczba odłamków) Liczba fragmentów do aprowizacji w klastrze. int

Właściwości magazynu

Name Description Wartość
rozmiarGb Rozmiar dysku danych przypisany do każdego serwera. int
typ Typ magazynu, który ma być obsługiwany przez serwery klastra. "PremiumSSD" (Dysk SSD w warstwie Premium)
"PremiumSSDv2"

Śledzone tagi zasobów

Name Description Wartość

UserAssignedIdentities

Name Description Wartość

UserAssignedIdentity

Name Description Wartość

Przykłady użycia

Definicja zasobu narzędzia Terraform (dostawcy AzAPI)

Typ zasobu mongoClusters można wdrożyć przy użyciu operacji docelowych:

Aby uzyskać listę zmienionych właściwości w każdej wersji interfejsu API, zobacz dziennika zmian.

Format zasobu

Aby utworzyć zasób Microsoft.DocumentDB/mongoClusters, dodaj następujący program Terraform do szablonu.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DocumentDB/mongoClusters@2025-08-01-preview"
  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"
      }
    }
  }
}

Wartości właściwości

Microsoft.DocumentDB/mongoClusters

Name Description Wartość
tożsamość Tożsamości usługi zarządzanej przypisane do tego zasobu. ManagedServiceIdentity (tożsamość usługi)
lokalizacja Lokalizacja geograficzna, w której znajduje się zasób ciąg (wymagany)
nazwa Nazwa zasobu string

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 40
Wzorzec = ^[a-z0-9]+(-[a-z0-9]+)* (wymagane)
parent_id Identyfikator zasobu, do który ma być stosowany ten zasób rozszerzenia. ciąg (wymagany)
properties Właściwości specyficzne dla zasobu dla tego zasobu. MongoClusterProperties
tags Tagi zasobów Słownik nazw tagów i wartości.
typ Typ zasobu "Microsoft.DocumentDB/mongoClusters@2025-08-01-preview"

AdministratorProperties

Name Description Wartość
hasło Hasło administratora. string

Ograniczenia:
Wartość wrażliwa. Przekaż jako bezpieczny parametr.
userName Nazwa użytkownika administratora. ciąg

AuthConfigProperties (właściwości uwierzytelniania)

Name Description Wartość
allowedModes (dozwolone tryby) Dozwolone tryby uwierzytelniania dla dostępu do danych w klastrze. Tablica ciągów zawierająca dowolną z:
"MicrosoftEntraID"
"Uwierzytelnianie natywne"

Właściwości kopii zapasowej

Name Description Wartość

Właściwości obliczeniowe

Name Description Wartość
warstwa Warstwa obliczeniowa do przypisania do klastra, w której każda warstwa jest mapowana na rozmiar rdzenia wirtualnego i pamięci. Przykładowe wartości: "M30", "M40". ciąg

CustomerManagedKeyEncryptionProperties

Name Description Wartość
keyEncryptionKeyIdentity (tożsamość klucza) Tożsamość używana do uzyskiwania dostępu do klucza szyfrowania klucza. KeyEncryptionKeyIdentity (Tożsamość klucza)
keyEncryptionKeyUrl (kluczEncryptionKeyUrl) Identyfikator URI klucza magazynu kluczy używanego do szyfrowania. ciąg

Właściwości DataApiProperties

Name Description Wartość
mode Tryb wskazujący, czy interfejs API danych Mongo jest włączony dla klastra. 'Disabled'
'Enabled'

Właściwości szyfrowania

Name Description Wartość
customerManagedKeyEncryption Ustawienia szyfrowania kluczy zarządzane przez klienta. CustomerManagedKeyEncryptionProperties

HighAvailabilityProperties (Właściwości wysokiej dostępności)

Name Description Wartość
targetMode (tryb docelowy) Docelowy tryb wysokiej dostępności żądany dla klastra. 'Disabled'
"Ta sama strefa"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity (Tożsamość klucza)

Name Description Wartość
identityType Typ tożsamości. Obsługiwana jest tylko wartość "UserAssignedIdentity". "UserAssignedIdentity"
userAssignedIdentityResourceId Identyfikator zasobu tożsamości przypisanego przez użytkownika. ciąg

ManagedServiceIdentity

Name Description Wartość
typ Typ tożsamości usługi zarządzanej (gdzie dozwolone są typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
"SystemAssigned,UserAssigned"
"UserAssigned" (wymagane)
userAssignedIdentities Zestaw tożsamości przypisanych przez użytkownika skojarzonych z zasobem. Klucze słownika userAssignedIdentities będą identyfikatorami zasobów usługi ARM w postaci: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Wartości słownika mogą być pustymi obiektami ({}) w żądaniach. UserAssignedIdentities

MongoClusterProperties

Name Description Wartość
administrator Właściwości administratora lokalnego dla klastra mongo. AdministratorProperties
authConfig (konfiguracja systemu) Konfiguracja uwierzytelniania dla klastra. AuthConfigProperties (właściwości uwierzytelniania)
kopia zapasowa Właściwości kopii zapasowej klastra mongo. Właściwości kopii zapasowej
obliczanie Właściwości obliczeniowe klastra mongo. Właściwości obliczeniowe
createMode Tryb tworzenia klastra mongo. Wartość domyślna
"GeoReplica"
"PointInTimeRestore"
"Replika"
dataApi (interfejs danych) Właściwości interfejsu API danych klastra mongo. Właściwości DataApiProperties
szyfrowanie Konfiguracja szyfrowania dla klastra. Zależy od konfigurowanej tożsamości. Właściwości szyfrowania
wysoka dostępność Właściwości wysokiej dostępności klastra mongo. HighAvailabilityProperties (Właściwości wysokiej dostępności)
Funkcje w wersji zapoznawczej Lista połączeń prywatnych punktów końcowych. Tablica ciągów zawierająca dowolną z:
"GeoReplicas"
dostęp do sieci publicznej Określa, czy dostęp do publicznego punktu końcowego jest dozwolony dla tego klastra mongo. 'Disabled'
'Enabled'
replicaParameters (parametry repliki) Parametry do utworzenia repliki klastra mongo. MongoClusterReplicaParameters (Parametry repliki)
restoreParameters (parametry przywracania) Parametry do utworzenia klastra mongo przywracania do punktu w czasie. MongoClusterRestoreParameters
serverVersion Wersja serwera Mongo DB. Wartość domyślna to najnowsza dostępna wersja, jeśli nie zostanie określona. ciąg
fragmentowanie Właściwości fragmentowania klastra mongo. Właściwości fragmentowania
magazyn Właściwości magazynu klastra mongo. StorageWłaściwości

MongoClusterReplicaParameters (Parametry repliki)

Name Description Wartość
lokalizacja źródłowa Lokalizacja klastra źródłowego ciąg (wymagany)
sourceResourceId (identyfikator źródłowy) Identyfikator klastra źródłowego replikacji. ciąg (wymagany)

MongoClusterRestoreParameters

Name Description Wartość
pointInTimeUTC (punkt w czasie) Punkt CZASU UTC w celu przywrócenia klastra mongo ciąg
sourceResourceId (identyfikator źródłowy) Identyfikator zasobu do zlokalizowania klastra źródłowego do przywrócenia ciąg

Właściwości fragmentowania

Name Description Wartość
shardCount (liczba odłamków) Liczba fragmentów do aprowizacji w klastrze. int

Właściwości magazynu

Name Description Wartość
rozmiarGb Rozmiar dysku danych przypisany do każdego serwera. int
typ Typ magazynu, który ma być obsługiwany przez serwery klastra. "PremiumSSD" (Dysk SSD w warstwie Premium)
"PremiumSSDv2"

Śledzone tagi zasobów

Name Description Wartość

UserAssignedIdentities

Name Description Wartość

UserAssignedIdentity

Name Description Wartość

Przykłady użycia

Przykłady programu Terraform

Podstawowy przykład wdrażania Azure Cosmos DB dla 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    = ["*"]
}