Skip to content

Commit b7a122c

Browse files
authored
Merge pull request #5 from AndreyMulin/master
RDS Storage type and parameters
2 parents a2a3fac + 6950e08 commit b7a122c

File tree

2 files changed

+54
-34
lines changed

2 files changed

+54
-34
lines changed

rds.tf

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ resource "aws_db_instance" "default" {
99
skip_final_snapshot = true
1010
allocated_storage = local.disk_size
1111
max_allocated_storage = 1000
12-
storage_type = "gp2"
12+
storage_type = local.storage_type
1313
storage_encrypted = true
1414
multi_az = local.multi_az
1515
backup_window = local.backup_window
@@ -23,8 +23,11 @@ resource "aws_db_instance" "default" {
2323
enabled_cloudwatch_logs_exports = local.logs_set
2424
monitoring_interval = local.enhanced_monitoring_interval
2525
performance_insights_enabled = local.performance_insights_enabled
26-
iam_database_authentication_enabled = true
26+
iam_database_authentication_enabled = local.iam_database_authentication_enabled
2727
tags = local.tags
28+
lifecycle {
29+
ignore_changes = [password]
30+
}
2831
}
2932

3033
resource "aws_db_instance" "parameterized" {
@@ -39,7 +42,7 @@ resource "aws_db_instance" "parameterized" {
3942
skip_final_snapshot = true
4043
allocated_storage = local.disk_size
4144
max_allocated_storage = 1000
42-
storage_type = "gp2"
45+
storage_type = local.storage_type
4346
storage_encrypted = true
4447
multi_az = local.multi_az
4548
backup_window = local.backup_window
@@ -53,6 +56,9 @@ resource "aws_db_instance" "parameterized" {
5356
enabled_cloudwatch_logs_exports = local.logs_set
5457
monitoring_interval = local.enhanced_monitoring_interval
5558
performance_insights_enabled = local.performance_insights_enabled
56-
iam_database_authentication_enabled = true
59+
iam_database_authentication_enabled = local.iam_database_authentication_enabled
5760
tags = local.tags
61+
lifecycle {
62+
ignore_changes = [password]
63+
}
5864
}

variables.tf

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -97,47 +97,61 @@ variable "deletion_protection" {
9797
description = "The database can't be deleted when this value is set to true."
9898
default = false
9999
}
100+
variable "storage_type" {
101+
description = "One of 'standard', 'gp2', 'gp3' (new generation of general purpose SSD), or 'io1'."
102+
default = "gp3"
103+
}
104+
variable "identifier" {
105+
description = "The name of the RDS instance"
106+
default = ""
107+
}
108+
variable "iam_database_authentication_enabled" {
109+
description = "Specifies whether or mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled"
110+
default = true
111+
}
100112

101113
locals {
102-
name = var.name
103-
id = lower(replace(var.name, " ", "-"))
104-
subnet_group_name = lower(replace(var.name, " ", "-"))
105-
username = var.username == "" ? random_pet.username.id : var.username
106-
password = var.password == "" ? random_password.password.result : var.password
107-
database = var.database == "" ? random_pet.db_name.id : var.database
108-
parameter_group_name = var.parameter_group_name
109-
rds_with_param_group = local.parameter_group_name == "" ? 0 : 1
110-
rds_without_param_group = local.parameter_group_name == "" ? 1 : 0
111-
parameter_prefix = var.parameter_prefix == "" ? "" : "${var.parameter_prefix}/${local.id}"
112-
store_parameters = var.parameter_prefix == "" ? 0 : 1
113-
instance_type = var.instance_type
114-
engine_version = var.engine_version
115-
family = "mysql${var.engine_version}"
116-
disk_size = var.disk_size
117-
multi_az = var.multi_az
118-
backup_window = var.backup_window
119-
backup_retention_period = var.backup_retention_period
120-
publicly_accessible = var.publicly_accessible
121-
apply_immediately = var.apply_immediately
122-
deletion_protection = var.deletion_protection
123-
trusted_cidr_blocks = var.trusted_cidr_blocks
124-
db_subnets = var.db_subnets
125-
vpc_id = data.aws_subnet.default.vpc_id
126-
address = local.parameter_group_name == "" ? join("", aws_db_instance.default.*.address) : join("", aws_db_instance.parameterized.*.address)
127-
hosted_zone_id = local.parameter_group_name == "" ? join("", aws_db_instance.default.*.hosted_zone_id) : join("", aws_db_instance.parameterized.*.hosted_zone_id)
128-
rds_id = local.parameter_group_name == "" ? join("", aws_db_instance.default.*.id) : join("", aws_db_instance.parameterized.*.id)
129-
logs_set = compact([
114+
name = var.name
115+
id = length(var.identifier) > 0 ? var.identifier : lower(replace(var.name, " ", "-"))
116+
subnet_group_name = lower(replace(var.name, " ", "-"))
117+
username = var.username == "" ? random_pet.username.id : var.username
118+
password = var.password == "" ? random_password.password.result : var.password
119+
database = var.database == "" ? random_pet.db_name.id : var.database
120+
parameter_group_name = var.parameter_group_name
121+
rds_with_param_group = local.parameter_group_name == "" ? 0 : 1
122+
rds_without_param_group = local.parameter_group_name == "" ? 1 : 0
123+
parameter_prefix = var.parameter_prefix == "" ? "" : "${var.parameter_prefix}/${local.id}"
124+
store_parameters = var.parameter_prefix == "" ? 0 : 1
125+
instance_type = var.instance_type
126+
engine_version = var.engine_version
127+
family = "mysql${var.engine_version}"
128+
disk_size = var.disk_size
129+
multi_az = var.multi_az
130+
backup_window = var.backup_window
131+
backup_retention_period = var.backup_retention_period
132+
publicly_accessible = var.publicly_accessible
133+
apply_immediately = var.apply_immediately
134+
deletion_protection = var.deletion_protection
135+
trusted_cidr_blocks = var.trusted_cidr_blocks
136+
db_subnets = var.db_subnets
137+
vpc_id = data.aws_subnet.default.vpc_id
138+
address = local.parameter_group_name == "" ? join("", aws_db_instance.default.*.address) : join("", aws_db_instance.parameterized.*.address)
139+
hosted_zone_id = local.parameter_group_name == "" ? join("", aws_db_instance.default.*.hosted_zone_id) : join("", aws_db_instance.parameterized.*.hosted_zone_id)
140+
rds_id = local.parameter_group_name == "" ? join("", aws_db_instance.default.*.id) : join("", aws_db_instance.parameterized.*.id)
141+
storage_type = var.storage_type
142+
iam_database_authentication_enabled = var.iam_database_authentication_enabled
143+
logs_set = compact([
130144
var.enable_audit_log ? "audit" : "",
131145
var.enable_error_log ? "error" : "",
132146
var.enable_general_log ? "general" : "",
133147
var.enable_slowquery_log ? "slowquery" : "",
134148
])
135149
enhanced_monitoring_interval = var.enhanced_monitoring_interval
136150
performance_insights_enabled = var.performance_insights_enabled
137-
tags = merge({
151+
tags = merge({
138152
Name = var.name,
139153
Module = "RDS MySQL"
140-
ModuleVersion = "v0.4.0"
154+
ModuleVersion = "v0.5.0"
141155
ModuleSource = "https://github.com/jetbrains-infra/terraform-aws-rds-mysql"
142156
}, var.tags)
143157
}

0 commit comments

Comments
 (0)