Skip to content

Commit 0e6a753

Browse files
authored
feat: improve how to use resource_group in modules (#37)
1 parent 463e332 commit 0e6a753

File tree

9 files changed

+108
-66
lines changed

9 files changed

+108
-66
lines changed

modules/elasticache-redis-cluster/outputs.tf

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,19 @@ output "endpoints" {
181181
configuration = aws_elasticache_replication_group.this.configuration_endpoint_address
182182
}
183183
}
184+
185+
output "resource_group" {
186+
description = "The resource group created to manage resources in this module."
187+
value = merge(
188+
{
189+
enabled = var.resource_group.enabled && var.module_tags_enabled
190+
},
191+
(var.resource_group.enabled && var.module_tags_enabled
192+
? {
193+
arn = module.resource_group[0].arn
194+
name = module.resource_group[0].name
195+
}
196+
: {}
197+
)
198+
)
199+
}

modules/elasticache-redis-cluster/resource-group.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
locals {
2-
resource_group_name = (var.resource_group_name != ""
3-
? var.resource_group_name
2+
resource_group_name = (var.resource_group.name != ""
3+
? var.resource_group.name
44
: join(".", [
55
local.metadata.package,
66
local.metadata.module,
@@ -12,12 +12,12 @@ locals {
1212

1313
module "resource_group" {
1414
source = "tedilabs/misc/aws//modules/resource-group"
15-
version = "~> 0.10.0"
15+
version = "~> 0.12.0"
1616

17-
count = (var.resource_group_enabled && var.module_tags_enabled) ? 1 : 0
17+
count = (var.resource_group.enabled && var.module_tags_enabled) ? 1 : 0
1818

1919
name = local.resource_group_name
20-
description = var.resource_group_description
20+
description = var.resource_group.description
2121

2222
query = {
2323
resource_tags = local.module_tags

modules/elasticache-redis-cluster/variables.tf

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -377,23 +377,21 @@ variable "module_tags_enabled" {
377377
# Resource Group
378378
###################################################
379379

380-
variable "resource_group_enabled" {
381-
description = "(Optional) Whether to create Resource Group to find and group AWS resources which are created by this module."
382-
type = bool
383-
default = true
384-
nullable = false
385-
}
386380

387-
variable "resource_group_name" {
388-
description = "(Optional) The name of Resource Group. A Resource Group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with `AWS` or `aws`."
389-
type = string
390-
default = ""
391-
nullable = false
392-
}
393381

394-
variable "resource_group_description" {
395-
description = "(Optional) The description of Resource Group."
396-
type = string
397-
default = "Managed by Terraform."
398-
nullable = false
382+
383+
variable "resource_group" {
384+
description = <<EOF
385+
(Optional) A configurations of Resource Group for this module. `resource_group` as defined below.
386+
(Optional) `enabled` - Whether to create Resource Group to find and group AWS resources which are created by this module. Defaults to `true`.
387+
(Optional) `name` - The name of Resource Group. A Resource Group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with `AWS` or `aws`. If not provided, a name will be generated using the module name and instance name.
388+
(Optional) `description` - The description of Resource Group. Defaults to `Managed by Terraform.`.
389+
EOF
390+
type = object({
391+
enabled = optional(bool, true)
392+
name = optional(string, "")
393+
description = optional(string, "Managed by Terraform.")
394+
})
395+
default = {}
396+
nullable = false
399397
}

modules/elasticache-redis-user-group/outputs.tf

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,19 @@ output "users" {
2222
description = "The list of user IDs that belong to the user group."
2323
value = values(aws_elasticache_user_group_association.this)[*].user_id
2424
}
25+
26+
output "resource_group" {
27+
description = "The resource group created to manage resources in this module."
28+
value = merge(
29+
{
30+
enabled = var.resource_group.enabled && var.module_tags_enabled
31+
},
32+
(var.resource_group.enabled && var.module_tags_enabled
33+
? {
34+
arn = module.resource_group[0].arn
35+
name = module.resource_group[0].name
36+
}
37+
: {}
38+
)
39+
)
40+
}

modules/elasticache-redis-user-group/resource-group.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
locals {
2-
resource_group_name = (var.resource_group_name != ""
3-
? var.resource_group_name
2+
resource_group_name = (var.resource_group.name != ""
3+
? var.resource_group.name
44
: join(".", [
55
local.metadata.package,
66
local.metadata.module,
@@ -12,12 +12,12 @@ locals {
1212

1313
module "resource_group" {
1414
source = "tedilabs/misc/aws//modules/resource-group"
15-
version = "~> 0.10.0"
15+
version = "~> 0.12.0"
1616

17-
count = (var.resource_group_enabled && var.module_tags_enabled) ? 1 : 0
17+
count = (var.resource_group.enabled && var.module_tags_enabled) ? 1 : 0
1818

1919
name = local.resource_group_name
20-
description = var.resource_group_description
20+
description = var.resource_group.description
2121

2222
query = {
2323
resource_tags = local.module_tags

modules/elasticache-redis-user-group/variables.tf

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,21 @@ variable "module_tags_enabled" {
3636
# Resource Group
3737
###################################################
3838

39-
variable "resource_group_enabled" {
40-
description = "(Optional) Whether to create Resource Group to find and group AWS resources which are created by this module."
41-
type = bool
42-
default = true
43-
nullable = false
44-
}
4539

46-
variable "resource_group_name" {
47-
description = "(Optional) The name of Resource Group. A Resource Group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with `AWS` or `aws`."
48-
type = string
49-
default = ""
50-
nullable = false
51-
}
5240

53-
variable "resource_group_description" {
54-
description = "(Optional) The description of Resource Group."
55-
type = string
56-
default = "Managed by Terraform."
57-
nullable = false
41+
42+
variable "resource_group" {
43+
description = <<EOF
44+
(Optional) A configurations of Resource Group for this module. `resource_group` as defined below.
45+
(Optional) `enabled` - Whether to create Resource Group to find and group AWS resources which are created by this module. Defaults to `true`.
46+
(Optional) `name` - The name of Resource Group. A Resource Group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with `AWS` or `aws`. If not provided, a name will be generated using the module name and instance name.
47+
(Optional) `description` - The description of Resource Group. Defaults to `Managed by Terraform.`.
48+
EOF
49+
type = object({
50+
enabled = optional(bool, true)
51+
name = optional(string, "")
52+
description = optional(string, "Managed by Terraform.")
53+
})
54+
default = {}
55+
nullable = false
5856
}

modules/elasticache-redis-user/outputs.tf

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,19 @@ output "password_required" {
2222
description = "Whether a password is required for this user."
2323
value = !aws_elasticache_user.this.no_password_required
2424
}
25+
26+
output "resource_group" {
27+
description = "The resource group created to manage resources in this module."
28+
value = merge(
29+
{
30+
enabled = var.resource_group.enabled && var.module_tags_enabled
31+
},
32+
(var.resource_group.enabled && var.module_tags_enabled
33+
? {
34+
arn = module.resource_group[0].arn
35+
name = module.resource_group[0].name
36+
}
37+
: {}
38+
)
39+
)
40+
}

modules/elasticache-redis-user/resource-group.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
locals {
2-
resource_group_name = (var.resource_group_name != ""
3-
? var.resource_group_name
2+
resource_group_name = (var.resource_group.name != ""
3+
? var.resource_group.name
44
: join(".", [
55
local.metadata.package,
66
local.metadata.module,
@@ -12,12 +12,12 @@ locals {
1212

1313
module "resource_group" {
1414
source = "tedilabs/misc/aws//modules/resource-group"
15-
version = "~> 0.10.0"
15+
version = "~> 0.12.0"
1616

17-
count = (var.resource_group_enabled && var.module_tags_enabled) ? 1 : 0
17+
count = (var.resource_group.enabled && var.module_tags_enabled) ? 1 : 0
1818

1919
name = local.resource_group_name
20-
description = var.resource_group_description
20+
description = var.resource_group.description
2121

2222
query = {
2323
resource_tags = local.module_tags

modules/elasticache-redis-user/variables.tf

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,21 @@ variable "module_tags_enabled" {
5151
# Resource Group
5252
###################################################
5353

54-
variable "resource_group_enabled" {
55-
description = "(Optional) Whether to create Resource Group to find and group AWS resources which are created by this module."
56-
type = bool
57-
default = true
58-
nullable = false
59-
}
6054

61-
variable "resource_group_name" {
62-
description = "(Optional) The name of Resource Group. A Resource Group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with `AWS` or `aws`."
63-
type = string
64-
default = ""
65-
nullable = false
66-
}
6755

68-
variable "resource_group_description" {
69-
description = "(Optional) The description of Resource Group."
70-
type = string
71-
default = "Managed by Terraform."
72-
nullable = false
56+
57+
variable "resource_group" {
58+
description = <<EOF
59+
(Optional) A configurations of Resource Group for this module. `resource_group` as defined below.
60+
(Optional) `enabled` - Whether to create Resource Group to find and group AWS resources which are created by this module. Defaults to `true`.
61+
(Optional) `name` - The name of Resource Group. A Resource Group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with `AWS` or `aws`. If not provided, a name will be generated using the module name and instance name.
62+
(Optional) `description` - The description of Resource Group. Defaults to `Managed by Terraform.`.
63+
EOF
64+
type = object({
65+
enabled = optional(bool, true)
66+
name = optional(string, "")
67+
description = optional(string, "Managed by Terraform.")
68+
})
69+
default = {}
70+
nullable = false
7371
}

0 commit comments

Comments
 (0)