Udostępnij przez


Microsoft.DocumentDB mongoClusters (bazy danych mongoClusters)

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-09-01' = {
  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

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

Ograniczenia:
Minimalna długość = 3
Maksymalna długość = 40
Wzorzec = ^[a-z0-9]+(-[a-z0-9]+)* (wymagane)
Właściwości 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.
Tagi Tagi zasobów Słownik nazw tagów i wartości. Zobacz tagi w szablonach

Właściwości administratora

Nazwa Opis Wartość
hasło Hasło administratora. struna

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

AuthConfigProperties (właściwości uwierzytelniania)

Nazwa Opis 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

Nazwa Opis Wartość

Właściwości obliczeniowe

Nazwa Opis 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

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

Właściwości DataApiProperties

Nazwa Opis Wartość
tryb Tryb wskazujący, czy interfejs API danych Mongo jest włączony dla klastra. "Wyłączone"
"Włączone"

EncryptionProperties

Nazwa Opis Wartość
customerManagedKeyEncryption Ustawienia szyfrowania kluczy zarządzane przez klienta. CustomerManagedKeyEncryptionProperties

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

Nazwa Opis Wartość
targetMode (tryb docelowy) Docelowy tryb wysokiej dostępności żądany dla klastra. "Wyłączone"
"Ta sama strefa"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity

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

ManagedServiceIdentity

Nazwa Opis Wartość
typ Typ tożsamości usługi zarządzanej (gdzie dozwolone są typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
"UserAssigned" (wymagane)
tożsamości przypisane użytkownikom 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

Nazwa Opis Wartość
administrator Właściwości administratora lokalnego dla klastra mongo. administrator
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) 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. "Wyłączone"
"Włączone"
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
wersja serwera 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)

Nazwa Opis 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

Nazwa Opis 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

Nazwa Opis Wartość
shardCount (liczba odłamków) Liczba fragmentów do aprowizacji w klastrze. Int

Właściwości magazynu

Nazwa Opis 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

Nazwa Opis Wartość

UserAssignedIdentities

Nazwa Opis Wartość

Tożsamość przypisana przez użytkownika

Nazwa Opis 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ł Opis
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-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"
  }
}

Wartości właściwości

Microsoft.DocumentDB/mongoClusters

Nazwa Opis Wartość
apiVersion (wersja interfejsu api) Wersja interfejsu API '2025-09-01'
tożsamość Tożsamości usługi zarządzanej przypisane do tego zasobu. ManagedServiceIdentity
lokalizacja Lokalizacja geograficzna, w której znajduje się zasób ciąg (wymagany)
nazwa Nazwa zasobu struna

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

Właściwości administratora

Nazwa Opis Wartość
hasło Hasło administratora. struna

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

AuthConfigProperties (właściwości uwierzytelniania)

Nazwa Opis 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

Nazwa Opis Wartość

Właściwości obliczeniowe

Nazwa Opis 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

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

Właściwości DataApiProperties

Nazwa Opis Wartość
tryb Tryb wskazujący, czy interfejs API danych Mongo jest włączony dla klastra. "Wyłączone"
"Włączone"

EncryptionProperties

Nazwa Opis Wartość
customerManagedKeyEncryption Ustawienia szyfrowania kluczy zarządzane przez klienta. CustomerManagedKeyEncryptionProperties

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

Nazwa Opis Wartość
targetMode (tryb docelowy) Docelowy tryb wysokiej dostępności żądany dla klastra. "Wyłączone"
"Ta sama strefa"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity

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

ManagedServiceIdentity

Nazwa Opis Wartość
typ Typ tożsamości usługi zarządzanej (gdzie dozwolone są typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
"UserAssigned" (wymagane)
tożsamości przypisane użytkownikom 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

Nazwa Opis Wartość
administrator Właściwości administratora lokalnego dla klastra mongo. administrator
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) 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. "Wyłączone"
"Włączone"
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
wersja serwera 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)

Nazwa Opis 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

Nazwa Opis 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

Nazwa Opis Wartość
shardCount (liczba odłamków) Liczba fragmentów do aprowizacji w klastrze. Int

Właściwości magazynu

Nazwa Opis 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

Nazwa Opis Wartość

UserAssignedIdentities

Nazwa Opis Wartość

Tożsamość przypisana przez użytkownika

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

Wartości właściwości

Microsoft.DocumentDB/mongoClusters

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

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)
Właściwości Właściwości specyficzne dla zasobu dla tego zasobu. MongoClusterProperties
Tagi Tagi zasobów Słownik nazw tagów i wartości.
typ Typ zasobu "Microsoft.DocumentDB/mongoClusters@2025-09-01"

Właściwości administratora

Nazwa Opis Wartość
hasło Hasło administratora. struna

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

AuthConfigProperties (właściwości uwierzytelniania)

Nazwa Opis 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

Nazwa Opis Wartość

Właściwości obliczeniowe

Nazwa Opis 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

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

Właściwości DataApiProperties

Nazwa Opis Wartość
tryb Tryb wskazujący, czy interfejs API danych Mongo jest włączony dla klastra. "Wyłączone"
"Włączone"

EncryptionProperties

Nazwa Opis Wartość
customerManagedKeyEncryption Ustawienia szyfrowania kluczy zarządzane przez klienta. CustomerManagedKeyEncryptionProperties

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

Nazwa Opis Wartość
targetMode (tryb docelowy) Docelowy tryb wysokiej dostępności żądany dla klastra. "Wyłączone"
"Ta sama strefa"
"ZoneRedundantPreferred"

KeyEncryptionKeyIdentity

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

ManagedServiceIdentity

Nazwa Opis Wartość
typ Typ tożsamości usługi zarządzanej (gdzie dozwolone są typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
'SystemAssigned,UserAssigned'
"UserAssigned" (wymagane)
tożsamości przypisane użytkownikom 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

Nazwa Opis Wartość
administrator Właściwości administratora lokalnego dla klastra mongo. administrator
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) 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. "Wyłączone"
"Włączone"
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
wersja serwera 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)

Nazwa Opis 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

Nazwa Opis 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

Nazwa Opis Wartość
shardCount (liczba odłamków) Liczba fragmentów do aprowizacji w klastrze. Int

Właściwości magazynu

Nazwa Opis 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

Nazwa Opis Wartość

UserAssignedIdentities

Nazwa Opis Wartość

Tożsamość przypisana przez użytkownika

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