mysql
- primary
module "db" {
source = "../../"
identifier = local.name
engine = "mysql"
engine_version = "8.0"
family = "mysql8.0" # DB parameter group
major_engine_version = "8.0" # DB option group
instance_class = "db.t4g.large"
allocated_storage = 20
max_allocated_storage = 100
db_name = "completeMysql"
username = "complete_mysql"
port = 3306
multi_az = true
db_subnet_group_name = module.vpc.database_subnet_group
vpc_security_group_ids = [module.security_group.security_group_id]
skip_final_snapshot = true
deletion_protection = false
#여기서부턴 너무 상세 옵션 (시나리오에 따라 다를듯)
maintenance_window = "Mon:00:00-Mon:03:00"
backup_window = "03:00-06:00"
enabled_cloudwatch_logs_exports = ["general"]
create_cloudwatch_log_group = true
blue_green_update = {
enabled = true
}
performance_insights_enabled = true
performance_insights_retention_period = 7 #성능 인사이트 데이터 보존 기간
create_monitoring_role = true
monitoring_interval = 60 #클라우드와치 메트릭 수집 간격
#데이터베이스 매개변수 설정
parameters = [
{
name = "character_set_client"
value = "utf8mb4"
},
{
name = "character_set_server"
value = "utf8mb4"
}
]
tags = local.tags
db_instance_tags = {
"Sensitive" = "high"
}
db_option_group_tags = {
"Sensitive" = "low"
}
db_parameter_group_tags = {
"Sensitive" = "low"
}
db_subnet_group_tags = {
"Sensitive" = "high"
}
}
mysql
- replica
module "replica" {
source = "../../"
identifier = "${local.name}-replica"
replicate_source_db = module.master.db_instance_id
create_random_password = false
engine = local.engine
engine_version = local.engine_version
family = local.family
major_engine_version = local.major_engine_version
instance_class = local.instance_class
allocated_storage = local.allocated_storage
max_allocated_storage = local.max_allocated_storage
port = local.port
multi_az = false
vpc_security_group_ids = [module.security_group.security_group_id]
maintenance_window = "Tue:00:00-Tue:03:00"
backup_window = "03:00-06:00"
enabled_cloudwatch_logs_exports = ["general"]
backup_retention_period = 0
skip_final_snapshot = true
deletion_protection = false
tags = local.tags
}
다른 디비도 포트번호랑 엔진 빼고는 크게 안 다른듯 한데..
oracle
module "db" {
source = "../../"
identifier = "demodb-oracle"
engine = "oracle-ee"
engine_version = "19"
family = "oracle-ee-19" # DB parameter group
major_engine_version = "19" # DB option group
instance_class = "db.t3.large"
license_model = "bring-your-own-license"
allocated_storage = 20
max_allocated_storage = 100
db_name = "ORACLE"
username = "complete_oracle"
port = 1521
multi_az = true
db_subnet_group_name = module.vpc.database_subnet_group
vpc_security_group_ids = [module.security_group.security_group_id]
maintenance_window = "Mon:00:00-Mon:03:00"
backup_window = "03:00-06:00"
enabled_cloudwatch_logs_exports = ["alert", "audit"]
create_cloudwatch_log_group = true
backup_retention_period = 1
skip_final_snapshot = true
deletion_protection = false
performance_insights_enabled = true
performance_insights_retention_period = 7
create_monitoring_role = true
#Oracle db 인스턴스의 문자집합 설정 (db에서 처리되는 문자 데이터의 인코딩 방식 결정)
#See here for support character sets <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.OracleCharacterSets.html>
character_set_name = "AL32UTF8" # UTF-8
nchar_character_set_name = "AL16UTF16" # UTF-16
tags = local.tags
}
postgre
module "db" {
source = "../../"
identifier = local.name
# All available versions: <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts>
engine = "postgres"
engine_version = "14"
family = "postgres14" # DB parameter group
major_engine_version = "14" # DB option group
instance_class = "db.t4g.large"
allocated_storage = 20
max_allocated_storage = 100
# user cannot be used as it is a reserved word used by the engine"
db_name = "completePostgresql"
username = "complete_postgresql"
port = 5432
multi_az = true
db_subnet_group_name = module.vpc.database_subnet_group
vpc_security_group_ids = [module.security_group.security_group_id]
maintenance_window = "Mon:00:00-Mon:03:00"
backup_window = "03:00-06:00"
enabled_cloudwatch_logs_exports = ["postgresql", "upgrade"]
create_cloudwatch_log_group = true
backup_retention_period = 1
skip_final_snapshot = true
deletion_protection = false
performance_insights_enabled = true
performance_insights_retention_period = 7
create_monitoring_role = true
monitoring_interval = 60
monitoring_role_name = "example-monitoring-role-name"
monitoring_role_use_name_prefix = true
monitoring_role_description = "Description for monitoring role"
parameters = [
{
name = "autovacuum"
value = 1
},
{
name = "client_encoding"
value = "utf8"
}
]
tags = local.tags
db_option_group_tags = {
"Sensitive" = "low"
}
db_parameter_group_tags = {
"Sensitive" = "low"
}
}
module "db" {
source = "terraform-aws-modules/rds/aws"
# Disable creation of RDS instance(s)
create_db_instance = false
# Disable creation of option group - provide an option group or default AWS default
create_db_option_group = false
# Disable creation of parameter group - provide a parameter group or default to AWS default
create_db_parameter_group = false
# Enable creation of subnet group (disabled by default)
create_db_subnet_group = true
# Enable creation of monitoring IAM role
++추가로 공식 모듈은 없는듯 하지만 elasticache(redis) 까지는 지원해야 하지 않을까? (자체 모듈로 하던지..)