Skip to content

Commit 72a2fbc

Browse files
committed
dynamic_regions_config example
1 parent c7857b0 commit 72a2fbc

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
resource "mongodbatlas_cluster" "dynamic_regions_config" {
2+
project_id = var.project_id
3+
name = "cluster"
4+
cluster_type = "SHARDED"
5+
provider_name = "AWS"
6+
provider_instance_size_name = "M10"
7+
replication_specs {
8+
num_shards = var.replication_specs.num_shards
9+
dynamic "regions_config" {
10+
for_each = var.replication_specs.regions_config
11+
content {
12+
region_name = regions_config.value.region_name
13+
electable_nodes = regions_config.value.electable_nodes
14+
priority = regions_config.value.priority
15+
read_only_nodes = regions_config.value.read_only_nodes
16+
}
17+
}
18+
}
19+
}
20+
21+
# example of variable for demostration purposes, not used in the conversion
22+
variable "replication_specs" {
23+
type = object({
24+
num_shards = number
25+
regions_config = set(object({
26+
region_name = string
27+
electable_nodes = number
28+
priority = number
29+
read_only_nodes = number
30+
}))
31+
})
32+
default = {
33+
num_shards = 3
34+
regions_config = [
35+
{
36+
region_name = "US_EAST_1"
37+
electable_nodes = 3
38+
priority = 7
39+
read_only_nodes = 0
40+
},
41+
{
42+
region_name = "US_WEST_2"
43+
electable_nodes = 2
44+
priority = 6
45+
read_only_nodes = 1
46+
}
47+
]
48+
}
49+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
resource "mongodbatlas_advanced_cluster" "dynamic_regions_config" {
2+
project_id = var.project_id
3+
name = "cluster"
4+
cluster_type = "SHARDED"
5+
replication_specs = [
6+
for i in range(var.replication_specs.num_shards) : {
7+
region_configs = flatten([
8+
for priority in [7, 6, 5, 4, 3, 2, 1, 0] : [
9+
for region in var.replication_specs.regions_config : {
10+
provider_name = "AWS"
11+
region_name = region.region_name
12+
priority = region.priority
13+
electable_specs = region.electable_nodes > 0 ? {
14+
node_count = region.electable_nodes
15+
instance_size = "M10"
16+
} : null
17+
read_only_specs = region.read_only_nodes > 0 ? {
18+
node_count = region.read_only_nodes
19+
instance_size = "M10"
20+
} : null
21+
} if region.priority == priority
22+
]
23+
])
24+
}
25+
]
26+
27+
# Generated by atlas-cli-plugin-terraform.
28+
# Please confirm that all references to this resource are updated.
29+
}
30+
31+
# example of variable for demostration purposes, not used in the conversion
32+
variable "replication_specs" {
33+
type = object({
34+
num_shards = number
35+
regions_config = set(object({
36+
region_name = string
37+
electable_nodes = number
38+
priority = number
39+
read_only_nodes = number
40+
}))
41+
})
42+
default = {
43+
num_shards = 3
44+
regions_config = [
45+
{
46+
region_name = "US_EAST_1"
47+
electable_nodes = 3
48+
priority = 7
49+
read_only_nodes = 0
50+
},
51+
{
52+
region_name = "US_WEST_2"
53+
electable_nodes = 2
54+
priority = 6
55+
read_only_nodes = 1
56+
}
57+
]
58+
}
59+
}

0 commit comments

Comments
 (0)