Skip to content

Commit a6dff14

Browse files
committed
feat: Add support for region resource level argument
1 parent b7a7de1 commit a6dff14

File tree

8 files changed

+50
-0
lines changed

8 files changed

+50
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ No modules.
412412
| <a name="input_preferred_maintenance_window"></a> [preferred\_maintenance\_window](#input\_preferred\_maintenance\_window) | The weekly time range during which system maintenance can occur, in (UTC) | `string` | `"sun:05:00-sun:06:00"` | no |
413413
| <a name="input_publicly_accessible"></a> [publicly\_accessible](#input\_publicly\_accessible) | Determines whether instances are publicly accessible. Default `false` | `bool` | `null` | no |
414414
| <a name="input_putin_khuylo"></a> [putin\_khuylo](#input\_putin\_khuylo) | Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo! | `bool` | `true` | no |
415+
| <a name="input_region"></a> [region](#input\_region) | Region where the resource(s) will be managed. Defaults to the Region set in the provider configuration | `string` | `null` | no |
415416
| <a name="input_replication_source_identifier"></a> [replication\_source\_identifier](#input\_replication\_source\_identifier) | ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica | `string` | `null` | no |
416417
| <a name="input_restore_to_point_in_time"></a> [restore\_to\_point\_in\_time](#input\_restore\_to\_point\_in\_time) | Map of nested attributes for cloning Aurora cluster | `map(string)` | `{}` | no |
417418
| <a name="input_s3_import"></a> [s3\_import](#input\_s3\_import) | Configuration map used to restore from a Percona Xtrabackup in S3 (only MySQL is supported) | `map(string)` | `{}` | no |

main.tf

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ locals {
2525
resource "aws_db_subnet_group" "this" {
2626
count = local.create && var.create_db_subnet_group ? 1 : 0
2727

28+
region = var.region
29+
2830
name = local.internal_db_subnet_group_name
2931
description = "For Aurora cluster ${var.name}"
3032
subnet_ids = var.subnets
@@ -39,6 +41,8 @@ resource "aws_db_subnet_group" "this" {
3941
resource "aws_rds_cluster" "this" {
4042
count = local.create ? 1 : 0
4143

44+
region = var.region
45+
4246
allocated_storage = var.allocated_storage
4347
allow_major_version_upgrade = var.allow_major_version_upgrade
4448
apply_immediately = var.apply_immediately
@@ -172,6 +176,8 @@ resource "aws_rds_cluster" "this" {
172176
resource "aws_rds_cluster_instance" "this" {
173177
for_each = { for k, v in var.instances : k => v if local.create && !local.is_serverless }
174178

179+
region = var.region
180+
175181
apply_immediately = try(each.value.apply_immediately, var.apply_immediately)
176182
auto_minor_version_upgrade = try(each.value.auto_minor_version_upgrade, var.auto_minor_version_upgrade)
177183
availability_zone = try(each.value.availability_zone, null)
@@ -215,6 +221,8 @@ resource "aws_rds_cluster_instance" "this" {
215221
resource "aws_rds_cluster_endpoint" "this" {
216222
for_each = { for k, v in var.endpoints : k => v if local.create && !local.is_serverless }
217223

224+
region = var.region
225+
218226
cluster_endpoint_identifier = each.value.identifier
219227
cluster_identifier = aws_rds_cluster.this[0].id
220228
custom_endpoint_type = each.value.type
@@ -234,6 +242,8 @@ resource "aws_rds_cluster_endpoint" "this" {
234242
resource "aws_rds_cluster_role_association" "this" {
235243
for_each = { for k, v in var.iam_roles : k => v if local.create }
236244

245+
region = var.region
246+
237247
db_cluster_identifier = aws_rds_cluster.this[0].id
238248
feature_name = each.value.feature_name
239249
role_arn = each.value.role_arn
@@ -291,6 +301,8 @@ resource "aws_iam_role_policy_attachment" "rds_enhanced_monitoring" {
291301
resource "aws_appautoscaling_target" "this" {
292302
count = local.create && var.autoscaling_enabled && !local.is_serverless ? 1 : 0
293303

304+
region = var.region
305+
294306
max_capacity = var.autoscaling_max_capacity
295307
min_capacity = var.autoscaling_min_capacity
296308
resource_id = "cluster:${aws_rds_cluster.this[0].cluster_identifier}"
@@ -309,6 +321,8 @@ resource "aws_appautoscaling_target" "this" {
309321
resource "aws_appautoscaling_policy" "this" {
310322
count = local.create && var.autoscaling_enabled && !local.is_serverless ? 1 : 0
311323

324+
region = var.region
325+
312326
name = var.autoscaling_policy_name
313327
policy_type = "TargetTrackingScaling"
314328
resource_id = "cluster:${aws_rds_cluster.this[0].cluster_identifier}"
@@ -337,6 +351,8 @@ resource "aws_appautoscaling_policy" "this" {
337351
resource "aws_security_group" "this" {
338352
count = local.create && var.create_security_group ? 1 : 0
339353

354+
region = var.region
355+
340356
name = var.security_group_use_name_prefix ? null : local.security_group_name
341357
name_prefix = var.security_group_use_name_prefix ? "${local.security_group_name}-" : null
342358
vpc_id = var.vpc_id
@@ -352,6 +368,8 @@ resource "aws_security_group" "this" {
352368
resource "aws_security_group_rule" "this" {
353369
for_each = { for k, v in var.security_group_rules : k => v if local.create && var.create_security_group }
354370

371+
region = var.region
372+
355373
# required
356374
type = try(each.value.type, "ingress")
357375
from_port = try(each.value.from_port, local.port)
@@ -375,6 +393,8 @@ resource "aws_security_group_rule" "this" {
375393
resource "aws_rds_cluster_parameter_group" "this" {
376394
count = local.create && var.create_db_cluster_parameter_group ? 1 : 0
377395

396+
region = var.region
397+
378398
name = var.db_cluster_parameter_group_use_name_prefix ? null : local.cluster_parameter_group_name
379399
name_prefix = var.db_cluster_parameter_group_use_name_prefix ? "${local.cluster_parameter_group_name}-" : null
380400
description = var.db_cluster_parameter_group_description
@@ -404,6 +424,8 @@ resource "aws_rds_cluster_parameter_group" "this" {
404424
resource "aws_db_parameter_group" "this" {
405425
count = local.create && var.create_db_parameter_group ? 1 : 0
406426

427+
region = var.region
428+
407429
name = var.db_parameter_group_use_name_prefix ? null : local.db_parameter_group_name
408430
name_prefix = var.db_parameter_group_use_name_prefix ? "${local.db_parameter_group_name}-" : null
409431
description = var.db_parameter_group_description
@@ -434,6 +456,8 @@ resource "aws_db_parameter_group" "this" {
434456
resource "aws_cloudwatch_log_group" "this" {
435457
for_each = toset([for log in var.enabled_cloudwatch_logs_exports : log if local.create && var.create_cloudwatch_log_group && !var.cluster_use_name_prefix])
436458

459+
region = var.region
460+
437461
name = "/aws/rds/cluster/${var.name}/${each.value}"
438462
retention_in_days = var.cloudwatch_log_group_retention_in_days
439463
kms_key_id = var.cloudwatch_log_group_kms_key_id
@@ -450,6 +474,8 @@ resource "aws_cloudwatch_log_group" "this" {
450474
resource "aws_rds_cluster_activity_stream" "this" {
451475
count = local.create && var.create_db_cluster_activity_stream ? 1 : 0
452476

477+
region = var.region
478+
453479
resource_arn = aws_rds_cluster.this[0].arn
454480
mode = var.db_cluster_activity_stream_mode
455481
kms_key_id = var.db_cluster_activity_stream_kms_key_id
@@ -471,6 +497,8 @@ resource "aws_rds_cluster_activity_stream" "this" {
471497
resource "aws_secretsmanager_secret_rotation" "this" {
472498
count = local.create && var.manage_master_user_password && var.manage_master_user_password_rotation ? 1 : 0
473499

500+
region = var.region
501+
474502
secret_id = aws_rds_cluster.this[0].master_user_secret[0].secret_arn
475503
rotate_immediately = var.master_user_password_rotate_immediately
476504

@@ -488,6 +516,8 @@ resource "aws_secretsmanager_secret_rotation" "this" {
488516
resource "aws_rds_shard_group" "this" {
489517
count = local.create && var.create_shard_group ? 1 : 0
490518

519+
region = var.region
520+
491521
compute_redundancy = var.compute_redundancy
492522
db_cluster_identifier = aws_rds_cluster.this[0].id
493523
db_shard_group_identifier = var.db_shard_group_identifier

modules/dsql/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ No modules.
6666
| <a name="input_create_cluster_peering"></a> [create\_cluster\_peering](#input\_create\_cluster\_peering) | Whether to create cluster peering | `bool` | `false` | no |
6767
| <a name="input_deletion_protection_enabled"></a> [deletion\_protection\_enabled](#input\_deletion\_protection\_enabled) | Whether deletion protection is enabled in this cluster | `bool` | `null` | no |
6868
| <a name="input_kms_encryption_key"></a> [kms\_encryption\_key](#input\_kms\_encryption\_key) | The ARN of the AWS KMS key that encrypts data in the DSQL Cluster, or `AWS_OWNED_KMS_KEY` | `string` | `null` | no |
69+
| <a name="input_region"></a> [region](#input\_region) | Region where the resource(s) will be managed. Defaults to the Region set in the provider configuration | `string` | `null` | no |
6970
| <a name="input_tags"></a> [tags](#input\_tags) | A map of tags to be associated with the AWS DSQL Cluster resource | `map(string)` | `{}` | no |
7071
| <a name="input_timeouts"></a> [timeouts](#input\_timeouts) | Create timeout configuration for the cluster | `any` | `{}` | no |
7172
| <a name="input_witness_region"></a> [witness\_region](#input\_witness\_region) | Witness region for the multi-region clusters. Setting this makes this cluster a multi-region cluster. Changing it recreates the cluster | `string` | `null` | no |

modules/dsql/main.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
resource "aws_dsql_cluster" "this" {
22
count = var.create ? 1 : 0
33

4+
region = var.region
5+
46
deletion_protection_enabled = var.deletion_protection_enabled
57
kms_encryption_key = var.kms_encryption_key
68

@@ -17,6 +19,8 @@ resource "aws_dsql_cluster" "this" {
1719
resource "aws_dsql_cluster_peering" "this" {
1820
count = var.create && var.create_cluster_peering ? 1 : 0
1921

22+
region = var.region
23+
2024
clusters = var.clusters
2125
identifier = aws_dsql_cluster.this[0].identifier
2226
witness_region = var.witness_region

modules/dsql/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ variable "create" {
44
default = true
55
}
66

7+
variable "region" {
8+
description = "Region where the resource(s) will be managed. Defaults to the Region set in the provider configuration"
9+
type = string
10+
default = null
11+
}
12+
713
variable "deletion_protection_enabled" {
814
description = "Whether deletion protection is enabled in this cluster"
915
type = bool

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ variable "create" {
44
default = true
55
}
66

7+
variable "region" {
8+
description = "Region where the resource(s) will be managed. Defaults to the Region set in the provider configuration"
9+
type = string
10+
default = null
11+
}
12+
713
variable "name" {
814
description = "Name used across resources created"
915
type = string

wrappers/dsql/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module "wrapper" {
88
create_cluster_peering = try(each.value.create_cluster_peering, var.defaults.create_cluster_peering, false)
99
deletion_protection_enabled = try(each.value.deletion_protection_enabled, var.defaults.deletion_protection_enabled, null)
1010
kms_encryption_key = try(each.value.kms_encryption_key, var.defaults.kms_encryption_key, null)
11+
region = try(each.value.region, var.defaults.region, null)
1112
tags = try(each.value.tags, var.defaults.tags, {})
1213
timeouts = try(each.value.timeouts, var.defaults.timeouts, {})
1314
witness_region = try(each.value.witness_region, var.defaults.witness_region, null)

wrappers/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ module "wrapper" {
120120
preferred_maintenance_window = try(each.value.preferred_maintenance_window, var.defaults.preferred_maintenance_window, "sun:05:00-sun:06:00")
121121
publicly_accessible = try(each.value.publicly_accessible, var.defaults.publicly_accessible, null)
122122
putin_khuylo = try(each.value.putin_khuylo, var.defaults.putin_khuylo, true)
123+
region = try(each.value.region, var.defaults.region, null)
123124
replication_source_identifier = try(each.value.replication_source_identifier, var.defaults.replication_source_identifier, null)
124125
restore_to_point_in_time = try(each.value.restore_to_point_in_time, var.defaults.restore_to_point_in_time, {})
125126
s3_import = try(each.value.s3_import, var.defaults.s3_import, {})

0 commit comments

Comments
 (0)