RDS with terraform
Meant for self reference.
This is a gist of launching an RDS mysql instance with terraform. It uses module from here: https://github.com/terraform-aws-modules/terraform-aws-rds
resource "aws_security_group" "sample-mysql" {
name = "sample-mysql"
description = "Allows services to talk to sample mysql"
vpc_id = "vpc-xxxx"
ingress {
from_port = 3306
to_port = 3306
protocol = "TCP"
self = true
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
module "dbsample" {
source = "terraform-aws-modules/rds/aws"
version = "~> 2.0"
identifier = "sample"
engine = "mysql"
engine_version = "5.7.25"
instance_class = "db.t2.small"
allocated_storage = 10
name = "sample"
username = "randomRootUserName"
password = "Random#mysqlPassw0rd"
port = "3306"
vpc_security_group_ids = ["${aws_security_group.sample-mysql.id}"]
maintenance_window = "Mon:00:00-Mon:03:00"
backup_window = "03:00-06:00"
tags = {
Environment = "production"
}
storage_encrypted = true
multi_az = true
# DB Subnet IDs
subnet_ids = ["subnet-xx", "subnet-yy", "subnet-zz"]
# Snapshot name upon DB deletion
final_snapshot_identifier = "sampleSnapshot"
major_engine_version = "5.7"
family = "mysql5.7"
parameters = [
{
name = "character_set_client"
value = "utf8"
},
{
name = "character_set_server"
value = "utf8"
}
]
}