@@ -89,10 +89,26 @@ resource "aws_elasticache_subnet_group" "default" {
89
89
tags = module. this . tags
90
90
}
91
91
92
+ locals {
93
+
94
+ safe_family = replace (var. elasticache_parameter_group_family , " ." , " -" )
95
+
96
+ parameter_group_name = (
97
+ var. parameter_group_name != null ? var. parameter_group_name : (
98
+ var. create_parameter_group
99
+ ?
100
+ " ${ module . this . id } -${ local . safe_family } " # The name of the new parameter group to be created
101
+ :
102
+ " default.${ var . elasticache_parameter_group_family } " # Default parameter group name created by AWS
103
+ )
104
+ )
105
+ }
106
+
92
107
resource "aws_elasticache_parameter_group" "default" {
93
- count = local. enabled ? 1 : 0
94
- name = module. this . id
95
- family = var. elasticache_parameter_group_family
108
+ count = local. enabled && var. create_parameter_group ? 1 : 0
109
+ name = local. parameter_group_name
110
+ description = var. parameter_group_description != null ? var. parameter_group_description : " Elasticache parameter group ${ local . parameter_group_name } "
111
+ family = var. elasticache_parameter_group_family
96
112
97
113
dynamic "parameter" {
98
114
for_each = var. elasticache_parameters
@@ -101,6 +117,10 @@ resource "aws_elasticache_parameter_group" "default" {
101
117
value = tostring (parameter. value . value )
102
118
}
103
119
}
120
+
121
+ lifecycle {
122
+ create_before_destroy = true
123
+ }
104
124
}
105
125
106
126
resource "aws_elasticache_cluster" "default" {
@@ -111,7 +131,7 @@ resource "aws_elasticache_cluster" "default" {
111
131
engine_version = var. engine_version
112
132
node_type = var. instance_type
113
133
num_cache_nodes = var. cluster_size
114
- parameter_group_name = join ( " " , aws_elasticache_parameter_group . default [ * ] . name )
134
+ parameter_group_name = local . parameter_group_name
115
135
transit_encryption_enabled = var. transit_encryption_enabled
116
136
subnet_group_name = local. elasticache_subnet_group_name
117
137
# It would be nice to remove null or duplicate security group IDs, if there are any, using `compact`,
0 commit comments