Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tf_mod_aws_rds
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
steamhaus
tf_mod_aws_rds
Commits
26dde1aa
Commit
26dde1aa
authored
Aug 31, 2016
by
A-Gordon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial commit
parents
Pipeline
#114
passed with stage
in 7 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
208 additions
and
0 deletions
+208
-0
.gitlab-ci.yml
.gitlab-ci.yml
+12
-0
main.tf
main.tf
+196
-0
No files found.
.gitlab-ci.yml
0 → 100644
View file @
26dde1aa
image
:
alpine:latest
variables
:
TERRAFORM_URL
:
"
https://releases.hashicorp.com/terraform/0.7.1/terraform_0.7.1_linux_amd64.zip"
before_script
:
-
apk update && apk add ca-certificates && update-ca-certificates && apk add openssl
-
wget -O /tmp/terraform.zip $TERRAFORM_URL
-
unzip /tmp/terraform.zip -d /usr/local/bin
test
:
script
:
terraform validate
main.tf
0 → 100644
View file @
26dde1aa
#############################################################################################################
# Variables
#############################################################################################################
variable
"vpc_id"
{}
variable
"security_groups"
{
type
=
"list"
}
variable
"subnet_ids"
{
type
=
"list"
}
variable
"rds_instance_name"
{}
variable
"rds_engine"
{
default
=
"mysql"
}
variable
"rds_engine_version"
{
default
=
"5.6.27"
}
variable
"rds_allocated_storage"
{
description
=
"The allocated storage in GBs"
default
=
"100"
}
variable
"rds_storage_type"
{
default
=
"gp2"
}
variable
"rds_instance_class"
{
default
=
"db.t2.micro"
}
variable
"rds_username"
{}
variable
"rds_password"
{}
variable
"rds_multi_az"
{
default
=
"true"
}
variable
"rds_publicly_accessible"
{
default
=
"false"
}
variable
"backup_retention_period"
{
default
=
"7"
}
variable
"backup_window"
{
default
=
"00:00-01:00"
}
variable
"maintenance_window"
{
default
=
"Sun:01:00-Sun:02:00"
}
variable
"read_replica_count"
{
default
=
"0"
}
variable
"parameter_group"
{
default
=
"default.mysql5.6"
}
variable
"route53_zone"
{}
#############################################################################################################
# Security Group
#############################################################################################################
resource
"aws_security_group"
"rds"
{
vpc_id
=
"
${
var
.
vpc_id
}
"
description
=
"
${
var
.
rds_instance_name
}
RDS SG"
ingress
{
from_port
=
3306
to_port
=
3306
protocol
=
"tcp"
security_groups
=
[
"
${
var
.
security_groups
}
"
]
}
}
#############################################################################################################
# Subnet Group
#############################################################################################################
resource
"aws_db_subnet_group"
"default"
{
name
=
"
${
var
.
rds_instance_name
}
-subnet"
description
=
"RDS Subnet group for
${
var
.
rds_instance_name
}
"
subnet_ids
=
[
"
${
var
.
subnet_ids
}
"
]
}
#############################################################################################################
# RDS Instances
#############################################################################################################
resource
"aws_db_instance"
"default"
{
identifier
=
"
${
var
.
rds_instance_name
}
"
engine
=
"
${
var
.
rds_engine
}
"
engine_version
=
"
${
var
.
rds_engine_version
}
"
allocated_storage
=
"
${
var
.
rds_allocated_storage
}
"
storage_type
=
"
${
var
.
rds_storage_type
}
"
instance_class
=
"
${
var
.
rds_instance_class
}
"
username
=
"
${
var
.
rds_username
}
"
password
=
"
${
var
.
rds_password
}
"
multi_az
=
"
${
var
.
rds_multi_az
}
"
publicly_accessible
=
"
${
var
.
rds_publicly_accessible
}
"
vpc_security_group_ids
=
[
"
${
aws_security_group
.
rds
.
id
}
"
]
db_subnet_group_name
=
"
${
aws_db_subnet_group
.
default
.
name
}
"
parameter_group_name
=
"
${
var
.
parameter_group
}
"
backup_retention_period
=
"
${
var
.
backup_retention_period
}
"
backup_window
=
"
${
var
.
backup_window
}
"
maintenance_window
=
"
${
var
.
maintenance_window
}
"
}
resource
"aws_db_instance"
"read_replica"
{
identifier
=
"
${
var
.
rds_instance_name
}
-read-replica"
engine
=
"
${
var
.
rds_engine
}
"
engine_version
=
"
${
var
.
rds_engine_version
}
"
allocated_storage
=
"
${
var
.
rds_allocated_storage
}
"
storage_type
=
"
${
var
.
rds_storage_type
}
"
instance_class
=
"
${
var
.
rds_instance_class
}
"
username
=
"
${
var
.
rds_username
}
"
password
=
"
${
var
.
rds_password
}
"
multi_az
=
"
${
var
.
rds_multi_az
}
"
publicly_accessible
=
"
${
var
.
rds_publicly_accessible
}
"
vpc_security_group_ids
=
[
"
${
aws_security_group
.
rds
.
id
}
"
]
db_subnet_group_name
=
"
${
aws_db_subnet_group
.
default
.
name
}
"
parameter_group_name
=
"
${
var
.
parameter_group
}
"
backup_retention_period
=
"
${
var
.
backup_retention_period
}
"
backup_window
=
"
${
var
.
backup_window
}
"
maintenance_window
=
"
${
var
.
maintenance_window
}
"
replicate_source_db
=
"
${
aws_db_instance
.
default
.
name
}
"
count
=
"
${
var
.
read_replica_count
}
"
}
#############################################################################################################
# Route 53 Records
#############################################################################################################
resource
"aws_route53_record"
"private_rds_default"
{
zone_id
=
"
${
var
.
route53_zone
}
"
name
=
"mysql.
${
var
.
rds_instance_name
}
.aws"
type
=
"CNAME"
ttl
=
"60"
records
=
[
"
${
aws_db_instance
.
default
.
address
}
"
]
count
=
"
${
length
(
split
(
","
,
"var.route53_zone"
))
}
"
}
resource
"aws_route53_record"
"private_rds_read-replica"
{
zone_id
=
"
${
var
.
route53_zone
}
"
name
=
"readonly-mysql.
${
var
.
rds_instance_name
}
.aws"
type
=
"CNAME"
ttl
=
"60"
records
=
[
"
${
aws_db_instance
.
read_replica
.
address
}
"
]
count
=
"
${
length
(
split
(
","
,
"var.route53_zone"
))
*
var
.
read_replica_count
}
"
}
#############################################################################################################
# Outputs
#############################################################################################################
output
"rds_instance_id"
{
value
=
"
${
aws_db_instance
.
default
.
id
}
"
}
output
"rds_instance_address"
{
value
=
"
${
aws_db_instance
.
default
.
address
}
"
}
output
"read_replica_rds_instance_id"
{
value
=
"
${
aws_db_instance
.
read_replica
.
id
}
"
}
output
"read_replica_rds_instance_address"
{
value
=
"
${
aws_db_instance
.
read_replica
.
address
}
"
}
output
"subnet_group_id"
{
value
=
"
${
aws_db_subnet_group
.
default
.
id
}
"
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment