Bicep 리소스 정의
mongoClusters 리소스 종류는 다음을 대상으로 하는 작업으로 배포할 수 있습니다.
각 API 버전에서 변경된 속성 목록은 변경 로그참조하세요.
리소스 형식
Microsoft.DocumentDB/mongoClusters 리소스를 만들려면 템플릿에 다음 Bicep을 추가합니다.
resource symbolicname 'Microsoft.DocumentDB/mongoClusters@2023-09-15-preview' = {
scope: resourceSymbolicName or scope
location: 'string'
name: 'string'
properties: {
administratorLogin: 'string'
administratorLoginPassword: 'string'
createMode: 'string'
nodeGroupSpecs: [
{
diskSizeGB: int
enableHa: bool
kind: 'string'
nodeCount: int
sku: 'string'
}
]
restoreParameters: {
pointInTimeUTC: 'string'
sourceResourceId: 'string'
}
serverVersion: 'string'
}
tags: {
{customized property}: 'string'
}
}
속성 값
Microsoft.DocumentDB/mongoClusters
| 이름 | 묘사 | 값 |
|---|---|---|
| 위치 | 리소스가 있는 지리적 위치 | string(필수) |
| 이름 | 리소스 이름 | 문자열 제약 조건: 최소 길이 = 3 최대 길이 = 40 패턴 = ^[a-z0-9]+(-[a-z0-9]+)*(필수) |
| 속성 | mongo 클러스터의 속성입니다. | MongoClusterProperties |
| scope | 배포 범위와 다른 범위에서 리소스를 만들 때 사용합니다. | 이 속성을 리소스의 기호 이름으로 설정하여 확장 리소스를 적용합니다. |
| 태그 | 리소스 태그 | 태그 이름 및 값의 사전입니다. 템플릿 |
MongoClusterProperties
| 이름 | 묘사 | 값 |
|---|---|---|
| 관리자로그인 | mongo 클러스터에 대한 관리자의 로그인입니다. | 문자열 |
| administratorLoginPassword | 관리자 로그인의 암호입니다. | 문자열 제약 조건: 중요한 값입니다. 보안 매개 변수로 전달합니다. |
| 크리에이션모드 | mongo 클러스터를 만드는 모드입니다. | '기본값' 'PointInTimeRestore' '복원' |
| nodeGroupSpecs | 클러스터의 노드 그룹 사양 목록입니다. | nodeGroupSpec |
| restoreParameters | 복원 작업에 사용되는 매개 변수 | MongoClusterRestoreParameters |
| 서버 버전 | Mongo DB 서버 버전입니다. 지정하지 않으면 기본적으로 사용 가능한 최신 버전으로 설정됩니다. | 문자열 |
MongoClusterRestoreParameters
| 이름 | 묘사 | 값 |
|---|---|---|
| 포인트인타임UTC | MONgo 클러스터를 복원하기 위한 UTC 지정 시간 | 문자열 |
| sourceResourceId | 복원할 원본 클러스터를 찾는 리소스 ID | 문자열 |
노드 그룹 사양
| 이름 | 묘사 | 값 |
|---|---|---|
| 디스크 크기GB | 노드 그룹의 디스크 스토리지 크기(GB)입니다. 예제 값: 128, 256, 512, 1024. | 정수 (int) |
| 인에이블하 | 노드 그룹에서 고가용성을 사용할 수 있는지 여부입니다. | bool |
| 종류 | 노드 그룹에 배포된 노드 유형입니다. | '분할' |
| 노드 개수 | 노드 그룹의 노드 수입니다. | 정수 (int) |
| SKU (재고 관리 코드) | 노드 그룹의 리소스 sku입니다. 각 노드에 대해 프로비전되는 CPU 및 메모리의 크기를 정의합니다. 예제 값: 'M30', 'M40'. | 문자열 |
TrackedResource태그
| 이름 | 묘사 | 값 |
|---|
사용 예제
Azure 확인된 모듈
다음 Azure 확인된 모듈 사용하여 이 리소스 유형을 배포할 수 있습니다.
| 모듈 | 묘사 |
|---|---|
| Cosmos DB for MongoDB(vCore) | MongoDB용 Cosmos DB용 AVM 리소스 모듈(vCore) |
ARM 템플릿 리소스 정의
mongoClusters 리소스 종류는 다음을 대상으로 하는 작업으로 배포할 수 있습니다.
각 API 버전에서 변경된 속성 목록은 변경 로그참조하세요.
리소스 형식
Microsoft.DocumentDB/mongoClusters 리소스를 만들려면 템플릿에 다음 JSON을 추가합니다.
{
"type": "Microsoft.DocumentDB/mongoClusters",
"apiVersion": "2023-09-15-preview",
"name": "string",
"location": "string",
"properties": {
"administratorLogin": "string",
"administratorLoginPassword": "string",
"createMode": "string",
"nodeGroupSpecs": [
{
"diskSizeGB": "int",
"enableHa": "bool",
"kind": "string",
"nodeCount": "int",
"sku": "string"
}
],
"restoreParameters": {
"pointInTimeUTC": "string",
"sourceResourceId": "string"
},
"serverVersion": "string"
},
"tags": {
"{customized property}": "string"
}
}
속성 값
Microsoft.DocumentDB/mongoClusters
| 이름 | 묘사 | 값 |
|---|---|---|
| API버전 | api 버전 | '2023-09-15-미리보기' |
| 위치 | 리소스가 있는 지리적 위치 | string(필수) |
| 이름 | 리소스 이름 | 문자열 제약 조건: 최소 길이 = 3 최대 길이 = 40 패턴 = ^[a-z0-9]+(-[a-z0-9]+)*(필수) |
| 속성 | mongo 클러스터의 속성입니다. | MongoClusterProperties |
| 태그 | 리소스 태그 | 태그 이름 및 값의 사전입니다. 템플릿 |
| 형 | 리소스 종류 | 'Microsoft.DocumentDB/mongoClusters' |
MongoClusterProperties
| 이름 | 묘사 | 값 |
|---|---|---|
| 관리자로그인 | mongo 클러스터에 대한 관리자의 로그인입니다. | 문자열 |
| administratorLoginPassword | 관리자 로그인의 암호입니다. | 문자열 제약 조건: 중요한 값입니다. 보안 매개 변수로 전달합니다. |
| 크리에이션모드 | mongo 클러스터를 만드는 모드입니다. | '기본값' 'PointInTimeRestore' '복원' |
| nodeGroupSpecs | 클러스터의 노드 그룹 사양 목록입니다. | nodeGroupSpec |
| restoreParameters | 복원 작업에 사용되는 매개 변수 | MongoClusterRestoreParameters |
| 서버 버전 | Mongo DB 서버 버전입니다. 지정하지 않으면 기본적으로 사용 가능한 최신 버전으로 설정됩니다. | 문자열 |
MongoClusterRestoreParameters
| 이름 | 묘사 | 값 |
|---|---|---|
| 포인트인타임UTC | MONgo 클러스터를 복원하기 위한 UTC 지정 시간 | 문자열 |
| sourceResourceId | 복원할 원본 클러스터를 찾는 리소스 ID | 문자열 |
노드 그룹 사양
| 이름 | 묘사 | 값 |
|---|---|---|
| 디스크 크기GB | 노드 그룹의 디스크 스토리지 크기(GB)입니다. 예제 값: 128, 256, 512, 1024. | 정수 (int) |
| 인에이블하 | 노드 그룹에서 고가용성을 사용할 수 있는지 여부입니다. | bool |
| 종류 | 노드 그룹에 배포된 노드 유형입니다. | '분할' |
| 노드 개수 | 노드 그룹의 노드 수입니다. | 정수 (int) |
| SKU (재고 관리 코드) | 노드 그룹의 리소스 sku입니다. 각 노드에 대해 프로비전되는 CPU 및 메모리의 크기를 정의합니다. 예제 값: 'M30', 'M40'. | 문자열 |
TrackedResource태그
| 이름 | 묘사 | 값 |
|---|
사용 예제
Terraform(AzAPI 공급자) 리소스 정의
mongoClusters 리소스 종류는 다음을 대상으로 하는 작업으로 배포할 수 있습니다.
각 API 버전에서 변경된 속성 목록은 변경 로그참조하세요.
리소스 형식
Microsoft.DocumentDB/mongoClusters 리소스를 만들려면 템플릿에 다음 Terraform을 추가합니다.
resource "azapi_resource" "symbolicname" {
type = "Microsoft.DocumentDB/mongoClusters@2023-09-15-preview"
name = "string"
parent_id = "string"
location = "string"
tags = {
{customized property} = "string"
}
body = {
properties = {
administratorLogin = "string"
administratorLoginPassword = "string"
createMode = "string"
nodeGroupSpecs = [
{
diskSizeGB = int
enableHa = bool
kind = "string"
nodeCount = int
sku = "string"
}
]
restoreParameters = {
pointInTimeUTC = "string"
sourceResourceId = "string"
}
serverVersion = "string"
}
}
}
속성 값
Microsoft.DocumentDB/mongoClusters
| 이름 | 묘사 | 값 |
|---|---|---|
| 위치 | 리소스가 있는 지리적 위치 | string(필수) |
| 이름 | 리소스 이름 | 문자열 제약 조건: 최소 길이 = 3 최대 길이 = 40 패턴 = ^[a-z0-9]+(-[a-z0-9]+)*(필수) |
| parent_id | 이 확장 리소스를 적용할 리소스의 ID입니다. | string(필수) |
| 속성 | mongo 클러스터의 속성입니다. | MongoClusterProperties |
| 태그 | 리소스 태그 | 태그 이름 및 값의 사전입니다. |
| 형 | 리소스 종류 | "Microsoft.DocumentDB/mongoClusters@2023-09-15-preview" |
MongoClusterProperties
| 이름 | 묘사 | 값 |
|---|---|---|
| 관리자로그인 | mongo 클러스터에 대한 관리자의 로그인입니다. | 문자열 |
| administratorLoginPassword | 관리자 로그인의 암호입니다. | 문자열 제약 조건: 중요한 값입니다. 보안 매개 변수로 전달합니다. |
| 크리에이션모드 | mongo 클러스터를 만드는 모드입니다. | '기본값' 'PointInTimeRestore' '복원' |
| nodeGroupSpecs | 클러스터의 노드 그룹 사양 목록입니다. | nodeGroupSpec |
| restoreParameters | 복원 작업에 사용되는 매개 변수 | MongoClusterRestoreParameters |
| 서버 버전 | Mongo DB 서버 버전입니다. 지정하지 않으면 기본적으로 사용 가능한 최신 버전으로 설정됩니다. | 문자열 |
MongoClusterRestoreParameters
| 이름 | 묘사 | 값 |
|---|---|---|
| 포인트인타임UTC | MONgo 클러스터를 복원하기 위한 UTC 지정 시간 | 문자열 |
| sourceResourceId | 복원할 원본 클러스터를 찾는 리소스 ID | 문자열 |
노드 그룹 사양
| 이름 | 묘사 | 값 |
|---|---|---|
| 디스크 크기GB | 노드 그룹의 디스크 스토리지 크기(GB)입니다. 예제 값: 128, 256, 512, 1024. | 정수 (int) |
| 인에이블하 | 노드 그룹에서 고가용성을 사용할 수 있는지 여부입니다. | bool |
| 종류 | 노드 그룹에 배포된 노드 유형입니다. | '분할' |
| 노드 개수 | 노드 그룹의 노드 수입니다. | 정수 (int) |
| SKU (재고 관리 코드) | 노드 그룹의 리소스 sku입니다. 각 노드에 대해 프로비전되는 CPU 및 메모리의 크기를 정의합니다. 예제 값: 'M30', 'M40'. | 문자열 |
TrackedResource태그
| 이름 | 묘사 | 값 |
|---|
사용 예제
Terraform 샘플
Azure Cosmos DB를 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 = ["*"]
}