Skip to content

Commit

Permalink
Merge pull request terraform-aws-modules#2 from HarriLLC/add_cluster_…
Browse files Browse the repository at this point in the history
…instance_parameter_group_resource

HARRI-96648 HARRI-96650 HARRI-96649 Add cluster instance parameter group resource
  • Loading branch information
haytham-salhi authored Nov 14, 2021
2 parents 20cc96f + fc89e72 commit a1df6ff
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
38 changes: 36 additions & 2 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ resource "aws_rds_cluster" "this" {
snapshot_identifier = var.snapshot_identifier
storage_encrypted = var.storage_encrypted
apply_immediately = var.apply_immediately
db_cluster_parameter_group_name = var.db_cluster_parameter_group_name
db_cluster_parameter_group_name = var.db_cluster_parameter_group_name == null ? null : aws_rds_cluster_parameter_group.cluster_pg[0].id
iam_database_authentication_enabled = var.iam_database_authentication_enabled
backtrack_window = local.backtrack_window
copy_tags_to_snapshot = var.copy_tags_to_snapshot
Expand Down Expand Up @@ -130,7 +130,7 @@ resource "aws_rds_cluster_instance" "this" {
instance_class = try(lookup(var.instances_parameters[count.index], "instance_type"), count.index > 0 ? coalesce(var.instance_type_replica, var.instance_type) : var.instance_type)
publicly_accessible = try(lookup(var.instances_parameters[count.index], "publicly_accessible"), var.publicly_accessible)
db_subnet_group_name = local.db_subnet_group_name
db_parameter_group_name = var.db_parameter_group_name
db_parameter_group_name = var.db_parameter_group_name == null ? null : aws_db_parameter_group.instance_pg[0].id
preferred_maintenance_window = var.preferred_maintenance_window
apply_immediately = var.apply_immediately
monitoring_role_arn = local.rds_enhanced_monitoring_arn
Expand Down Expand Up @@ -271,3 +271,37 @@ resource "aws_security_group_rule" "cidr_ingress" {
cidr_blocks = var.allowed_cidr_blocks
security_group_id = local.rds_security_group_id
}

resource "aws_rds_cluster_parameter_group" "cluster_pg" {
count = var.create_cluster == false || var.parameter_group_settings == null || var.db_cluster_parameter_group_name == null ? 0 : 1

name = var.db_cluster_parameter_group_name
description = var.parameter_group_settings["pg_description_cluster"]
family = var.parameter_group_settings["pg_family"]

dynamic "parameter" {
for_each = coalesce(var.parameter_group_settings["parameters_cluster"],{})
content {
name = parameter.key
value = keys(parameter.value)[0]
apply_method = values(parameter.value)[0]
}
}
}

resource "aws_db_parameter_group" "instance_pg" {
count = var.create_cluster == false || var.parameter_group_settings == null || var.db_parameter_group_name == null ? 0 : 1

name = var.db_parameter_group_name
description = var.parameter_group_settings["pg_description_instance"]
family = var.parameter_group_settings["pg_family"]

dynamic "parameter" {
for_each = coalesce(var.parameter_group_settings["parameters_instance"],{})
content {
name = parameter.key
value = keys(parameter.value)[0]
apply_method = values(parameter.value)[0]
}
}
}
12 changes: 12 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -454,3 +454,15 @@ variable "iam_role_max_session_duration" {
type = number
default = null
}

variable "parameter_group_settings" {
description = "Map holding all parameter group related settings."
type = object({
pg_family = optional(string)
pg_description_cluster = optional(string)
parameters_cluster = optional(map(map(string)))
pg_description_instance = optional(string)
parameters_instance = optional(map(map(string)))
})
default = null
}
1 change: 1 addition & 0 deletions versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ terraform {
version = ">= 2.2"
}
}
experiments = [module_variable_optional_attrs]
}

0 comments on commit a1df6ff

Please sign in to comment.