Skip to content

Commit d000a88

Browse files
committed
feat: Update variable type definitions, consolidate variable groups into single top level variable
1 parent a6dff14 commit d000a88

File tree

22 files changed

+620
-703
lines changed

22 files changed

+620
-703
lines changed

README.md

Lines changed: 72 additions & 98 deletions
Large diffs are not rendered by default.

docs/UPGRADE-10.0.md

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ If you find a bug, please open an issue with supporting configuration to reprodu
1818
### Modified
1919

2020
- Variable definitions now contain detailed object types in place of the previously used `any` type
21+
- `copy_tags_to_snapshot` default value is now `true`
22+
- `db_cluster_parameter_group_parameters` was previously of type `list(map(...))`, now of type `map(object(...))`with `name` being optional and defaulting to the map key if not provided
2123

2224
### Removed
2325

@@ -27,11 +29,50 @@ If you find a bug, please open an issue with supporting configuration to reprodu
2729

2830
1. Removed variables:
2931

30-
-
32+
- `auto_minor_version_upgrade` -> still available within the `instances` variable definition
33+
- `ca_cert_identifier` -> available within the `instances` variable definition
34+
- `instance_class` -> still available within the `instances` variable definition
35+
- `monitoring_interval` -> still available within the `instances` variable definition
36+
- `performance_insights_enabled` -> still available within the `instances` variable definition
37+
- `performance_insights_kms_key_id` -> still available within the `instances` variable definition
38+
- `performance_insights_retention_period` -> still available within the `instances` variable definition
39+
- `iam_role_managed_policy_arns` -> deprecated argument on `aws_iam_role` resource
40+
- `iam_role_force_detach_policies` -> hardcode to `true`
3141

3242
2. Renamed variables:
3343

34-
-
44+
- `endpoints.cluster_endpoint_identifier` was previously `endpoints.identifier`
45+
- `endpoints.custom_endpoint_type` was previously `endpoints.type`
46+
- `role_associations` was previously `iam_roles`
47+
- The variables for DB shard group have been nested under a single, top-level `shard_group` variable:
48+
- `create_shard_group` removed - set `shard_group` to `null` to disable or provide an object to enable
49+
- `compute_redundancy` -> `shard_group.compute_redundancy`
50+
- `db_shard_group_identifier` -> `shard_group.identifier`
51+
- `max_acu` -> `shard_group.max_acu`
52+
- `min_acu` -> `shard_group.min_acu`
53+
- `publicly_accessible` -> `shard_group.publicly_accessible`
54+
- `shard_group_tags` -> `shard_group.tags`
55+
- `shard_group_timeouts` -> `shard_group.timeouts`
56+
- The variables for the cluster activity stream have been nested under a single, top-level `cluster_activity_stream` variable:
57+
- `create_db_cluster_activity_stream` removed - set `cluster_activity_stream` to `null` to disable or provide an object to enable
58+
- `db_cluster_activity_stream_mode` -> `cluster_activity_stream.mode`
59+
- `db_cluster_activity_stream_kms_key_id` -> `cluster_activity_stream.kms_key_id`
60+
- `engine_native_audit_fields_included` -> `cluster_activity_stream.include_audit_fields`
61+
- The variables for the cluster parameter group have been nested under a single, top-level `cluster_parameter_group` variable:
62+
- `create_db_cluster_parameter_group` removed - set `cluster_parameter_group` to `null` to disable or provide an object to enable
63+
- `db_cluster_parameter_group_name` -> `cluster_parameter_group.name`
64+
- `db_cluster_parameter_group_use_name_prefix` -> `cluster_parameter_group.use_name_prefix`
65+
- `db_cluster_parameter_group_description` -> `cluster_parameter_group.description`
66+
- `db_cluster_parameter_group_family` -> `cluster_parameter_group.family`
67+
- `db_cluster_parameter_group_parameters` -> `cluster_parameter_group.parameters`
68+
- The variables for the instance parameter group have been nested under a single, top-level `db_parameter_group` variable:
69+
- `create_db_parameter_group` removed - set `db_parameter_group` to `null` to disable or provide an object to enable
70+
- `db_parameter_group_name` -> `db_parameter_group.name`
71+
- A variable `cluster_parameter_group_name` has been retained for when users want to provide an existing cluster parameter group name.
72+
- `db_parameter_group_use_name_prefix` -> `db_parameter_group.use_name_prefix`
73+
- `db_parameter_group_description` -> `db_parameter_group.description`
74+
- `db_parameter_group_family` -> `db_parameter_group.family`
75+
- `db_parameter_group_parameters` -> `db_parameter_group.parameters`
3576

3677
3. Added variables:
3778

examples/autoscaling/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Note that this example may create resources which cost money. Run `terraform des
3434
|------|--------|---------|
3535
| <a name="module_aurora"></a> [aurora](#module\_aurora) | ../../ | n/a |
3636
| <a name="module_disabled_aurora"></a> [disabled\_aurora](#module\_disabled\_aurora) | ../../ | n/a |
37-
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
37+
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 6.0 |
3838

3939
## Resources
4040

examples/autoscaling/main.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ locals {
2525
module "aurora" {
2626
source = "../../"
2727

28-
name = local.name
29-
engine = "aurora-postgresql"
30-
engine_version = "14.5"
31-
instance_class = "db.r6g.large"
32-
instances = { 1 = {} }
33-
master_username = "root"
28+
name = local.name
29+
engine = "aurora-postgresql"
30+
engine_version = "14.5"
31+
db_cluster_instance_class = "db.r6g.large"
32+
instances = { 1 = {} }
33+
master_username = "root"
3434

3535
vpc_id = module.vpc.vpc_id
3636
db_subnet_group_name = module.vpc.database_subnet_group_name
@@ -44,7 +44,7 @@ module "aurora" {
4444
autoscaling_min_capacity = 1
4545
autoscaling_max_capacity = 5
4646

47-
monitoring_interval = 60
47+
cluster_monitoring_interval = 60
4848
iam_role_name = "${local.name}-monitor"
4949
iam_role_use_name_prefix = true
5050
iam_role_description = "${local.name} RDS enhanced monitoring IAM role"
@@ -71,7 +71,7 @@ module "disabled_aurora" {
7171

7272
module "vpc" {
7373
source = "terraform-aws-modules/vpc/aws"
74-
version = "~> 5.0"
74+
version = "~> 6.0"
7575

7676
name = local.name
7777
cidr = local.vpc_cidr

examples/dsql/main.tf

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ provider "aws" {
22
region = local.region
33
}
44

5-
provider "aws" {
6-
region = local.region2
7-
alias = "region2"
8-
}
9-
105
locals {
116
name = "ex-${basename(path.cwd)}"
127
region = "us-east-1"
@@ -42,16 +37,14 @@ module "dsql_cluster_1" {
4237
module "dsql_cluster_2" {
4338
source = "../../modules/dsql"
4439

40+
region = local.region2
41+
4542
deletion_protection_enabled = false
4643
witness_region = local.witness_region
4744
create_cluster_peering = true
4845
clusters = [module.dsql_cluster_1.arn]
4946

5047
tags = merge(local.tags, { Name = local.name })
51-
52-
providers = {
53-
aws = aws.region2
54-
}
5548
}
5649

5750
module "dsql_single_region" {

examples/global-cluster/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ Note that this example may create resources which cost money. Run `terraform des
2828
| Name | Version |
2929
|------|---------|
3030
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.18 |
31-
| <a name="provider_aws.secondary"></a> [aws.secondary](#provider\_aws.secondary) | >= 6.18 |
3231
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.5 |
3332

3433
## Modules
@@ -37,8 +36,8 @@ Note that this example may create resources which cost money. Run `terraform des
3736
|------|--------|---------|
3837
| <a name="module_aurora_primary"></a> [aurora\_primary](#module\_aurora\_primary) | ../../ | n/a |
3938
| <a name="module_aurora_secondary"></a> [aurora\_secondary](#module\_aurora\_secondary) | ../../ | n/a |
40-
| <a name="module_primary_vpc"></a> [primary\_vpc](#module\_primary\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
41-
| <a name="module_secondary_vpc"></a> [secondary\_vpc](#module\_secondary\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
39+
| <a name="module_primary_vpc"></a> [primary\_vpc](#module\_primary\_vpc) | terraform-aws-modules/vpc/aws | ~> 6.0 |
40+
| <a name="module_secondary_vpc"></a> [secondary\_vpc](#module\_secondary\_vpc) | terraform-aws-modules/vpc/aws | ~> 6.0 |
4241

4342
## Resources
4443

examples/global-cluster/main.tf

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ provider "aws" {
22
region = local.primary_region
33
}
44

5-
provider "aws" {
6-
alias = "secondary"
7-
region = local.secondary_region
8-
}
9-
105
data "aws_caller_identity" "current" {}
11-
data "aws_availability_zones" "primary" {}
6+
data "aws_availability_zones" "primary" {
7+
region = local.primary_region
8+
}
129
data "aws_availability_zones" "secondary" {
13-
provider = aws.secondary
10+
region = local.secondary_region
1411
}
1512

1613
locals {
@@ -52,7 +49,7 @@ module "aurora_primary" {
5249
engine_version = aws_rds_global_cluster.this.engine_version
5350
master_username = "root"
5451
global_cluster_identifier = aws_rds_global_cluster.this.id
55-
instance_class = "db.r6g.large"
52+
db_cluster_instance_class = "db.r6g.large"
5653
instances = { for i in range(2) : i => {} }
5754
kms_key_id = aws_kms_key.primary.arn
5855

@@ -76,7 +73,7 @@ module "aurora_primary" {
7673
module "aurora_secondary" {
7774
source = "../../"
7875

79-
providers = { aws = aws.secondary }
76+
region = local.secondary_region
8077

8178
is_primary_cluster = false
8279

@@ -85,7 +82,7 @@ module "aurora_secondary" {
8582
engine_version = aws_rds_global_cluster.this.engine_version
8683
global_cluster_identifier = aws_rds_global_cluster.this.id
8784
source_region = local.primary_region
88-
instance_class = "db.r6g.large"
85+
db_cluster_instance_class = "db.r6g.large"
8986
instances = { for i in range(2) : i => {} }
9087
kms_key_id = aws_kms_key.secondary.arn
9188

@@ -120,7 +117,7 @@ resource "random_password" "master" {
120117

121118
module "primary_vpc" {
122119
source = "terraform-aws-modules/vpc/aws"
123-
version = "~> 5.0"
120+
version = "~> 6.0"
124121

125122
name = local.name
126123
cidr = local.primary_vpc_cidr
@@ -136,9 +133,9 @@ module "primary_vpc" {
136133

137134
module "secondary_vpc" {
138135
source = "terraform-aws-modules/vpc/aws"
139-
version = "~> 5.0"
136+
version = "~> 6.0"
140137

141-
providers = { aws = aws.secondary }
138+
region = local.secondary_region
142139

143140
name = local.name
144141
cidr = local.secondary_vpc_cidr
@@ -193,7 +190,7 @@ resource "aws_kms_key" "primary" {
193190
}
194191

195192
resource "aws_kms_key" "secondary" {
196-
provider = aws.secondary
193+
region = local.secondary_region
197194

198195
policy = data.aws_iam_policy_document.rds.json
199196
tags = local.tags

examples/limitless/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ Note that this example may create resources which cost money. Run `terraform des
3535
| Name | Source | Version |
3636
|------|--------|---------|
3737
| <a name="module_aurora"></a> [aurora](#module\_aurora) | ../../ | n/a |
38-
| <a name="module_kms"></a> [kms](#module\_kms) | terraform-aws-modules/kms/aws | ~> 2.0 |
39-
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
38+
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 6.0 |
4039

4140
## Resources
4241

examples/limitless/main.tf

Lines changed: 29 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,25 @@ locals {
2525
module "aurora" {
2626
source = "../../"
2727

28-
name = local.name
29-
engine = "aurora-postgresql"
30-
engine_version = "16.6-limitless"
31-
master_username = "root"
32-
storage_type = "aurora-iopt1"
33-
cluster_monitoring_interval = 30
34-
cluster_scalability_type = "limitless"
28+
name = local.name
29+
engine = "aurora-postgresql"
30+
engine_version = "16.6-limitless"
31+
storage_type = "aurora-iopt1"
3532

33+
cluster_scalability_type = "limitless"
34+
cluster_monitoring_interval = 30
3635
# https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless-reqs-limits.html
3736
cluster_performance_insights_enabled = true
3837
cluster_performance_insights_retention_period = 31
3938

40-
create_shard_group = true
41-
compute_redundancy = 0
42-
db_shard_group_identifier = local.name
43-
max_acu = 16
39+
shard_group = {
40+
compute_redundancy = 0
41+
identifier = local.name
42+
max_acu = 16
43+
}
4444

4545
# aurora limitless clusters do not support managed master user password
46+
master_username = "root"
4647
manage_master_user_password = false
4748
master_password = random_password.master.result
4849

@@ -62,29 +63,26 @@ module "aurora" {
6263
apply_immediately = true
6364
skip_final_snapshot = true
6465

65-
create_db_cluster_parameter_group = true
66-
db_cluster_parameter_group_name = local.name
67-
db_cluster_parameter_group_family = "aurora-postgresql16"
68-
db_cluster_parameter_group_description = "${local.name} example cluster parameter group"
69-
db_cluster_parameter_group_parameters = [
70-
{
71-
name = "log_min_duration_statement"
72-
value = 4000
73-
apply_method = "immediate"
74-
}, {
75-
name = "rds.force_ssl"
76-
value = 1
77-
apply_method = "immediate"
78-
}
79-
]
66+
cluster_parameter_group = {
67+
name = local.name
68+
family = "aurora-postgresql16"
69+
description = "${local.name} example cluster parameter group"
70+
parameters = [
71+
{
72+
name = "log_min_duration_statement"
73+
value = 4000
74+
apply_method = "immediate"
75+
}, {
76+
name = "rds.force_ssl"
77+
value = 1
78+
apply_method = "immediate"
79+
}
80+
]
81+
}
8082

8183
enabled_cloudwatch_logs_exports = ["postgresql"]
8284
create_cloudwatch_log_group = true
8385

84-
cloudwatch_log_group_tags = {
85-
Sensitivity = "high"
86-
}
87-
8886
tags = local.tags
8987
}
9088

@@ -99,7 +97,7 @@ resource "random_password" "master" {
9997

10098
module "vpc" {
10199
source = "terraform-aws-modules/vpc/aws"
102-
version = "~> 5.0"
100+
version = "~> 6.0"
103101

104102
name = local.name
105103
cidr = local.vpc_cidr
@@ -111,18 +109,3 @@ module "vpc" {
111109

112110
tags = local.tags
113111
}
114-
115-
module "kms" {
116-
source = "terraform-aws-modules/kms/aws"
117-
version = "~> 2.0"
118-
119-
deletion_window_in_days = 7
120-
description = "KMS key for ${local.name} cluster activity stream."
121-
enable_key_rotation = true
122-
is_enabled = true
123-
key_usage = "ENCRYPT_DECRYPT"
124-
125-
aliases = [local.name]
126-
127-
tags = local.tags
128-
}

examples/multi-az/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Note that this example may create resources which cost money. Run `terraform des
3333
| Name | Source | Version |
3434
|------|--------|---------|
3535
| <a name="module_aurora"></a> [aurora](#module\_aurora) | ../../ | n/a |
36-
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
36+
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 6.0 |
3737

3838
## Resources
3939

0 commit comments

Comments
 (0)