Skip to content

Commit dbcd26a

Browse files
committed
fix: update parameter group to fix name vs. name_prefix
1 parent a5495a4 commit dbcd26a

File tree

12 files changed

+127
-133
lines changed

12 files changed

+127
-133
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ No resources.
237237
| options | A list of Options to apply. | `any` | `[]` | no |
238238
| parameter\_group\_description | Description of the DB parameter group to create | `string` | `""` | no |
239239
| parameter\_group\_name | Name of the DB parameter group to associate or create | `string` | `""` | no |
240+
| parameter\_group\_use\_name\_prefix | Determines whether to use `parameter_group_name` as is or create a unique name beginning with the `parameter_group_name` as the prefix | `bool` | `true` | no |
240241
| parameters | A list of DB parameters (map) to apply | `list(map(string))` | `[]` | no |
241242
| password | Password for the master DB user. Note that this may show up in logs, and it will be stored in the state file | `string` | n/a | yes |
242243
| performance\_insights\_enabled | Specifies whether Performance Insights are enabled | `bool` | `false` | no |
@@ -254,7 +255,6 @@ No resources.
254255
| tags | A mapping of tags to assign to all resources | `map(string)` | `{}` | no |
255256
| timeouts | (Optional) Updated Terraform resource management timeouts. Applies to `aws_db_instance` in particular to permit resource management times | `map(string)` | <pre>{<br> "create": "40m",<br> "delete": "40m",<br> "update": "80m"<br>}</pre> | no |
256257
| timezone | (Optional) Time zone of the DB instance. timezone is currently only supported by Microsoft SQL Server. The timezone can only be set on creation. See MSSQL User Guide for more information. | `string` | `""` | no |
257-
| use\_parameter\_group\_name\_prefix | Whether to use the parameter group name prefix or not | `bool` | `true` | no |
258258
| username | Username for the master DB user | `string` | n/a | yes |
259259
| vpc\_security\_group\_ids | List of VPC security groups to associate | `list(string)` | `[]` | no |
260260

examples/option-groups/README.md renamed to examples/groups/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Example usage of option groups
1+
# Example usage of option and parameter groups
22

3-
Configuration in this directory creates various option groups depending on the configuration specified - no other resources are created.
3+
Configuration in this directory creates various option and parameter groups depending on the configuration specified - no other resources are created.
44

55
## Usage
66

examples/option-groups/main.tf renamed to examples/groups/main.tf

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,24 @@ locals {
1212
}
1313

1414
################################################################################
15-
# Default Postgres option group
16-
# This should NOT create anything since option groups are not supported for PostgreSQL
17-
# https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html
15+
# Default Postgres
1816
################################################################################
1917

2018
module "default_postgres" {
2119
source = "../../"
2220

2321
identifier = local.name
2422

25-
create_db_instance = false
26-
parameter_group_name = "foo"
27-
create_db_parameter_group = false
28-
db_subnet_group_name = "foo"
29-
create_db_subnet_group = false
23+
# This should NOT create an option group since they are not supported for PostgreSQL
24+
# https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html
25+
26+
parameter_group_name = "${local.name}-default-postgresql"
27+
28+
db_subnet_group_name = "foo"
29+
create_db_subnet_group = false
3030

3131
# All available versions: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts
32+
create_db_instance = false
3233
engine = "postgres"
3334
engine_version = "11.10"
3435
family = "postgres11" # DB parameter group
@@ -48,9 +49,7 @@ module "default_postgres" {
4849
}
4950

5051
################################################################################
51-
# Default MySQL Option Group w/ name prefix used
52-
# This should create a MySQL option group
53-
# https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html
52+
# Default MySQL
5453
################################################################################
5554

5655
module "default_mysql" {
@@ -60,13 +59,13 @@ module "default_mysql" {
6059

6160
option_group_name = "${local.name}-default-mysql"
6261

63-
create_db_instance = false
64-
parameter_group_name = "foo"
65-
create_db_parameter_group = false
66-
db_subnet_group_name = "foo"
67-
create_db_subnet_group = false
62+
parameter_group_name = "${local.name}-default-mysql"
63+
64+
db_subnet_group_name = "foo"
65+
create_db_subnet_group = false
6866

6967
# All available versions: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts
68+
create_db_instance = false
7069
engine = "mysql"
7170
engine_version = "8.0.20"
7271
family = "mysql8.0" # DB parameter group
@@ -86,26 +85,25 @@ module "default_mysql" {
8685
}
8786

8887
################################################################################
89-
# Default MySQL option group w/o name prefix
90-
# This should create a MySQL option group
91-
# https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html
88+
# Default MySQL w/o name prefix
9289
################################################################################
9390

9491
module "default_mysql_name" {
9592
source = "../../"
9693

9794
identifier = local.name
9895

99-
option_group_name = "${local.name}-default-mysql"
96+
option_group_name = "${local.name}-default-mysql-name"
10097
option_group_use_name_prefix = false
10198

102-
create_db_instance = false
103-
parameter_group_name = "foo"
104-
create_db_parameter_group = false
105-
db_subnet_group_name = "foo"
106-
create_db_subnet_group = false
99+
parameter_group_name = "${local.name}-default-mysql-name"
100+
parameter_group_use_name_prefix = false
101+
102+
db_subnet_group_name = "foo"
103+
create_db_subnet_group = false
107104

108105
# All available versions: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts
106+
create_db_instance = false
109107
engine = "mysql"
110108
engine_version = "8.0.20"
111109
family = "mysql8.0" # DB parameter group
@@ -125,9 +123,7 @@ module "default_mysql_name" {
125123
}
126124

127125
################################################################################
128-
# BYO MySQL Option Group
129-
# This should NOT create a MySQL option group - the user is specifying an option group to use
130-
# https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html
126+
# BYO MySQL
131127
################################################################################
132128

133129
module "byo_mysql" {
@@ -138,13 +134,14 @@ module "byo_mysql" {
138134
create_db_option_group = false
139135
option_group_name = "bringMyOwnOptionGroupName"
140136

141-
create_db_instance = false
142-
parameter_group_name = "foo"
143137
create_db_parameter_group = false
144-
db_subnet_group_name = "foo"
145-
create_db_subnet_group = false
138+
parameter_group_name = "bringMyOwnParameterGroupName"
139+
140+
db_subnet_group_name = "foo"
141+
create_db_subnet_group = false
146142

147143
# All available versions: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts
144+
create_db_instance = false
148145
engine = "mysql"
149146
engine_version = "8.0.20"
150147
family = "mysql8.0" # DB parameter group

examples/option-groups/outputs.tf renamed to examples/groups/outputs.tf

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ output "default_postgres_option_group_arn" {
99
value = module.default_postgres.this_db_option_group_arn
1010
}
1111

12+
output "default_postgres_parameter_group_id" {
13+
description = "The db parameter group id"
14+
value = module.default_postgres.this_db_parameter_group_id
15+
}
16+
17+
output "default_postgres_parameter_group_arn" {
18+
description = "The ARN of the db parameter group"
19+
value = module.default_postgres.this_db_parameter_group_arn
20+
}
21+
1222
# Default MySQL
1323
output "default_mysql_option_group_id" {
1424
description = "The ID of the default MySQL option group"
@@ -20,6 +30,16 @@ output "default_mysql_option_group_arn" {
2030
value = module.default_mysql.this_db_option_group_arn
2131
}
2232

33+
output "default_mysql_parameter_group_id" {
34+
description = "The db parameter group id"
35+
value = module.default_mysql.this_db_parameter_group_id
36+
}
37+
38+
output "default_mysql_parameter_group_arn" {
39+
description = "The ARN of the db parameter group"
40+
value = module.default_mysql.this_db_parameter_group_arn
41+
}
42+
2343
# Default MySQL name
2444
output "default_mysql_name_option_group_id" {
2545
description = "The ID of the default MySQL option group using `name`"
@@ -31,6 +51,16 @@ output "default_mysql_name_option_group_arn" {
3151
value = module.default_mysql_name.this_db_option_group_arn
3252
}
3353

54+
output "default_mysql_name_parameter_group_id" {
55+
description = "The db parameter group id"
56+
value = module.default_mysql_name.this_db_parameter_group_id
57+
}
58+
59+
output "default_mysql_name_parameter_group_arn" {
60+
description = "The ARN of the db parameter group"
61+
value = module.default_mysql_name.this_db_parameter_group_arn
62+
}
63+
3464
# BYO MySQL
3565
output "byo_mysql_option_group_id" {
3666
description = "The ID of the BYO MySQL option group (should be blank)"
@@ -42,3 +72,12 @@ output "byo_mysql_option_group_arn" {
4272
value = module.byo_mysql.this_db_option_group_arn
4373
}
4474

75+
output "byo_mysql_parameter_group_id" {
76+
description = "The db parameter group id"
77+
value = module.byo_mysql.this_db_parameter_group_id
78+
}
79+
80+
output "byo_mysql_parameter_group_arn" {
81+
description = "The ARN of the db parameter group"
82+
value = module.byo_mysql.this_db_parameter_group_arn
83+
}
File renamed without changes.
File renamed without changes.

main.tf

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
locals {
2-
enable_create_db_subnet_group = var.db_subnet_group_name == "" ? var.create_db_subnet_group : false
3-
db_subnet_group_name = coalesce(var.db_subnet_group_name, module.db_subnet_group.this_db_subnet_group_id)
2+
create_db_subnet_group = var.db_subnet_group_name == "" ? var.create_db_subnet_group : false
3+
db_subnet_group_name = coalesce(var.db_subnet_group_name, module.db_subnet_group.this_db_subnet_group_id)
44

55
parameter_group_name_id = coalesce(var.parameter_group_name, module.db_parameter_group.this_db_parameter_group_id)
66

7-
enable_create_db_option_group = var.create_db_option_group && var.engine != "postgres"
8-
option_group = var.engine != "postgres" ? coalesce(module.db_option_group.this_db_option_group_id, var.option_group_name) : null
7+
create_db_option_group = var.create_db_option_group && var.engine != "postgres"
8+
option_group = var.engine != "postgres" ? coalesce(module.db_option_group.this_db_option_group_id, var.option_group_name) : null
99
}
1010

1111
module "db_subnet_group" {
1212
source = "./modules/db_subnet_group"
1313

14-
create = local.enable_create_db_subnet_group
14+
create = local.create_db_subnet_group
1515
identifier = var.identifier
1616
name_prefix = "${var.identifier}-"
1717
subnet_ids = var.subnet_ids
@@ -22,25 +22,22 @@ module "db_subnet_group" {
2222
module "db_parameter_group" {
2323
source = "./modules/db_parameter_group"
2424

25-
create = var.create_db_parameter_group
26-
identifier = var.identifier
25+
create = var.create_db_parameter_group
26+
2727
name = var.parameter_group_name
28+
use_name_prefix = var.parameter_group_use_name_prefix
2829
description = var.parameter_group_description
29-
name_prefix = "${var.identifier}-"
30-
use_name_prefix = var.use_parameter_group_name_prefix
3130
family = var.family
3231

3332
parameters = var.parameters
3433

3534
tags = var.tags
3635
}
3736

38-
# "${var.identifier}-${var.engine}-${var.major_engine_version}"
39-
4037
module "db_option_group" {
4138
source = "./modules/db_option_group"
4239

43-
create = local.enable_create_db_option_group
40+
create = local.create_db_option_group
4441

4542
name = var.option_group_name
4643
use_name_prefix = var.option_group_use_name_prefix

modules/db_parameter_group/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@ No Modules.
3131
| create | Whether to create this resource or not? | `bool` | `true` | no |
3232
| description | The description of the DB parameter group | `string` | `""` | no |
3333
| family | The family of the DB parameter group | `string` | n/a | yes |
34-
| identifier | The identifier of the resource | `string` | n/a | yes |
3534
| name | The name of the DB parameter group | `string` | `""` | no |
36-
| name\_prefix | Creates a unique name beginning with the specified prefix | `string` | `""` | no |
3735
| parameters | A list of DB parameter maps to apply | `list(map(string))` | `[]` | no |
3836
| tags | A mapping of tags to assign to the resource | `map(string)` | `{}` | no |
39-
| use\_name\_prefix | Whether to use name\_prefix or not | `bool` | `true` | no |
37+
| use\_name\_prefix | Determines whether to use `name` as is or create a unique name beginning with `name` as the specified prefix | `bool` | `true` | no |
4038

4139
## Outputs
4240

modules/db_parameter_group/main.tf

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,15 @@
11
locals {
2-
description = coalesce(var.description, "Database parameter group for ${var.identifier}")
3-
}
4-
5-
resource "aws_db_parameter_group" "this_no_prefix" {
6-
count = var.create && false == var.use_name_prefix ? 1 : 0
7-
8-
name = var.name
9-
description = local.description
10-
family = var.family
2+
name = var.use_name_prefix ? null : var.name
3+
name_prefix = var.use_name_prefix ? "${var.name}-" : null
114

12-
dynamic "parameter" {
13-
for_each = var.parameters
14-
content {
15-
name = parameter.value.name
16-
value = parameter.value.value
17-
apply_method = lookup(parameter.value, "apply_method", null)
18-
}
19-
}
20-
21-
tags = merge(
22-
var.tags,
23-
{
24-
"Name" = format("%s", var.name)
25-
},
26-
)
27-
28-
lifecycle {
29-
create_before_destroy = true
30-
}
5+
description = coalesce(var.description, format("%s parameter group", var.name))
316
}
327

338
resource "aws_db_parameter_group" "this" {
34-
count = var.create && var.use_name_prefix ? 1 : 0
9+
count = var.create ? 1 : 0
3510

36-
name_prefix = var.name_prefix
11+
name = local.name
12+
name_prefix = local.name_prefix
3713
description = local.description
3814
family = var.family
3915

@@ -49,7 +25,7 @@ resource "aws_db_parameter_group" "this" {
4925
tags = merge(
5026
var.tags,
5127
{
52-
"Name" = format("%s", var.identifier)
28+
"Name" = var.name
5329
},
5430
)
5531

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
output "this_db_parameter_group_id" {
22
description = "The db parameter group id"
3-
value = element(concat(aws_db_parameter_group.this.*.id, aws_db_parameter_group.this_no_prefix.*.id, [""]), 0)
3+
value = element(concat(aws_db_parameter_group.this.*.id, [""]), 0)
44
}
55

66
output "this_db_parameter_group_arn" {
77
description = "The ARN of the db parameter group"
8-
value = element(concat(aws_db_parameter_group.this.*.arn, aws_db_parameter_group.this_no_prefix.*.arn, [""]), 0)
8+
value = element(concat(aws_db_parameter_group.this.*.arn, [""]), 0)
99
}
10-

0 commit comments

Comments
 (0)