11locals {
2- master_password = var. password == " " ? random_password. master_password . result : var. password
3- database_id = var. db_id == " " ? random_string. db_cluster_identifier . result : var. db_id
4- max_connections = var. max_postgresql_connections == " auto" || var. max_postgresql_connections == " " ? var. max_postgresql_connections_map [var . instance_type ] : var. max_postgresql_connections
2+ master_password = var. password == " " ? random_password. master_password . result : var. password
3+ database_id = var. db_id == " " ? random_string. db_cluster_identifier . result : var. db_id
4+ max_connections = var. max_postgresql_connections == " auto" || var. max_postgresql_connections == " " ? var. max_postgresql_connections_map [var . instance_type ] : var. max_postgresql_connections
55 performance_insights_enabled = var. environment == " prod" ? var. performance_insights_enabled : false
66}
77
@@ -73,22 +73,28 @@ resource "aws_rds_cluster" "provisioning_rds_cluster" {
7373}
7474
7575resource "aws_rds_cluster_instance" "provisioning_rds_db_instance" {
76- count = var. replica_min
77- identifier = format (" rds-db-instance-multitenant-%s-%s-%s" , split (" -" , var. vpc_id )[1 ], local. database_id , (count. index + 1 ))
78- cluster_identifier = aws_rds_cluster. provisioning_rds_cluster . id
79- engine = var. engine
80- engine_version = var. engine_version
81- instance_class = var. instance_type
82- db_subnet_group_name = " mattermost-provisioner-db-${ var . vpc_id } -postgresql"
83- db_parameter_group_name = aws_db_parameter_group. db_parameter_group_postgresql . id
84- preferred_maintenance_window = var. preferred_maintenance_window
85- apply_immediately = var. apply_immediately
86- monitoring_role_arn = data. aws_iam_role . enhanced_monitoring . arn
87- monitoring_interval = var. monitoring_interval
88- promotion_tier = count. index + 1
89- performance_insights_enabled = local. performance_insights_enabled
76+ count = var. replica_min
77+ identifier = format (" rds-db-instance-multitenant-%s-%s-%s" , split (" -" , var. vpc_id )[1 ], local. database_id , (count. index + 1 ))
78+ cluster_identifier = aws_rds_cluster. provisioning_rds_cluster . id
79+ engine = var. engine
80+ engine_version = var. engine_version
81+ instance_class = var. instance_type
82+ db_subnet_group_name = " mattermost-provisioner-db-${ var . vpc_id } -postgresql"
83+ db_parameter_group_name = aws_db_parameter_group. db_parameter_group_postgresql . id
84+ preferred_maintenance_window = var. preferred_maintenance_window
85+ apply_immediately = var. apply_immediately
86+ monitoring_role_arn = data. aws_iam_role . enhanced_monitoring . arn
87+ monitoring_interval = var. monitoring_interval
88+ promotion_tier = count. index + 1
89+ performance_insights_enabled = local. performance_insights_enabled
9090
91- tags = var. tags
91+ tags = merge (
92+ {
93+ " DatabaseType" = var.multitenant_tag,
94+ " MattermostCloudInstallationDatabase" = " PostgreSQL/Aurora"
95+ },
96+ var. tags
97+ )
9298
9399 lifecycle {
94100 ignore_changes = [
@@ -143,28 +149,28 @@ data "aws_sns_topic" "horizontal_scaling_sns_topic" {
143149}
144150
145151resource "aws_cloudwatch_metric_alarm" "db_instances_alarm_cpu" {
146- count = var. replica_min
147- alarm_name = format (" rds-db-instance-multitenant-%s-%s-%s-cpu" , split (" -" , var. vpc_id )[1 ], local. database_id , (count. index + 1 ))
148- comparison_operator = " GreaterThanOrEqualToThreshold"
149- evaluation_periods = " 3"
150- metric_name = " CPUUtilization"
151- namespace = " AWS/RDS"
152- period = " 600"
153- statistic = " Average"
154- threshold = " 70"
155- alarm_description = " This metric monitors RDS DB Instance cpu utilization"
156- actions_enabled = true
157- alarm_actions = [data . aws_sns_topic . horizontal_scaling_sns_topic . arn ]
158- dimensions = {DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier}
152+ count = var. replica_min
153+ alarm_name = format (" rds-db-instance-multitenant-%s-%s-%s-cpu" , split (" -" , var. vpc_id )[1 ], local. database_id , (count. index + 1 ))
154+ comparison_operator = " GreaterThanOrEqualToThreshold"
155+ evaluation_periods = " 3"
156+ metric_name = " CPUUtilization"
157+ namespace = " AWS/RDS"
158+ period = " 600"
159+ statistic = " Average"
160+ threshold = " 70"
161+ alarm_description = " This metric monitors RDS DB Instance cpu utilization"
162+ actions_enabled = true
163+ alarm_actions = [data . aws_sns_topic . horizontal_scaling_sns_topic . arn ]
164+ dimensions = { DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier }
159165}
160166
161167resource "aws_cloudwatch_metric_alarm" "db_instances_alarm_memory" {
162- count = var. replica_min
163- alarm_name = format (" rds-db-instance-multitenant-%s-%s-%s-memory" , split (" -" , var. vpc_id )[1 ], local. database_id , (count. index + 1 ))
164- comparison_operator = " LessThanOrEqualToThreshold"
165- evaluation_periods = " 3"
166- threshold = var. memory_alarm_limit
167- alarm_description = " This metric monitors RDS DB Instance freeable memory"
168+ count = var. replica_min
169+ alarm_name = format (" rds-db-instance-multitenant-%s-%s-%s-memory" , split (" -" , var. vpc_id )[1 ], local. database_id , (count. index + 1 ))
170+ comparison_operator = " LessThanOrEqualToThreshold"
171+ evaluation_periods = " 3"
172+ threshold = var. memory_alarm_limit
173+ alarm_description = " This metric monitors RDS DB Instance freeable memory"
168174 metric_query {
169175 id = " e1"
170176 expression = " m1+${ var . memory_cache_proportion } *${ var . ram_memory_bytes [var . instance_type ]} "
@@ -173,18 +179,18 @@ resource "aws_cloudwatch_metric_alarm" "db_instances_alarm_memory" {
173179 }
174180
175181 metric_query {
176- id = " m1"
182+ id = " m1"
177183 metric {
178- metric_name = " FreeableMemory"
179- namespace = " AWS/RDS"
180- period = " 600"
181- stat = " Average"
182- dimensions = {DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier}
184+ metric_name = " FreeableMemory"
185+ namespace = " AWS/RDS"
186+ period = " 600"
187+ stat = " Average"
188+ dimensions = { DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier }
183189 }
184190 return_data = " false"
185191 }
186- actions_enabled = true
187- alarm_actions = [data . aws_sns_topic . horizontal_scaling_sns_topic . arn ]
192+ actions_enabled = true
193+ alarm_actions = [data . aws_sns_topic . horizontal_scaling_sns_topic . arn ]
188194}
189195
190196
@@ -200,22 +206,22 @@ resource "aws_db_parameter_group" "db_parameter_group_postgresql" {
200206 }
201207
202208 parameter {
203- name = " random_page_cost"
209+ name = " random_page_cost"
204210 value = var. random_page_cost
205211 }
206212
207213 parameter {
208- name = " tcp_keepalives_count"
214+ name = " tcp_keepalives_count"
209215 value = var. tcp_keepalives_count
210216 }
211217
212218 parameter {
213- name = " tcp_keepalives_idle"
219+ name = " tcp_keepalives_idle"
214220 value = var. tcp_keepalives_idle
215221 }
216222
217223 parameter {
218- name = " tcp_keepalives_interval"
224+ name = " tcp_keepalives_interval"
219225 value = var. tcp_keepalives_interval
220226 }
221227
@@ -240,22 +246,22 @@ resource "aws_rds_cluster_parameter_group" "cluster_parameter_group_postgresql"
240246 }
241247
242248 parameter {
243- name = " random_page_cost"
249+ name = " random_page_cost"
244250 value = var. random_page_cost
245251 }
246252
247253 parameter {
248- name = " tcp_keepalives_count"
254+ name = " tcp_keepalives_count"
249255 value = var. tcp_keepalives_count
250256 }
251257
252258 parameter {
253- name = " tcp_keepalives_idle"
259+ name = " tcp_keepalives_idle"
254260 value = var. tcp_keepalives_idle
255261 }
256262
257263 parameter {
258- name = " tcp_keepalives_interval"
264+ name = " tcp_keepalives_interval"
259265 value = var. tcp_keepalives_interval
260266 }
261267
0 commit comments