tf_aws_rds
tf_aws_rds copied to clipboard
[DEPRECATED] Use https://github.com/terraform-aws-modules/terraform-aws-rds
tf_aws_rds
This module is deprecated and terraform-aws-modules/terraform-aws-rds module published on the Terraform registry should be used instead.
This repository will not have active support any more.
A Terraform Template for RDS
This module makes the following assumptions:
- You want your RDS instance in a VPC
- You have subnets in a VPC for two AZs
- Multi-AZ is optional.
Input Variables
rds_instance_identifier- Custom name of the DB instance (NOT a database name)rds_is_multi_az- Defaults to false. Set to true for a multi-az instance.rds_storage_type- Defaults to standard (magnetic)rds_iops- "The amount of provisioned IOPS. Setting this implies a storage_type of 'io1', default is 0 if rds storage type is not io1"rds_allocated_storage- The number of GBs to allocate. Input must be an integer, e.g.10rds_engine_type- Engine type, such asmysqlorpostgresrds_engine_version- eg.9.5.4in case of postgresrds_instance_class- instance size, eg.db.t2.microdatabase_name- name of the dabatasedatabase_user- user name (admin user)database_password- password - must be longer than 8 charactersdb_parameter_group- Defaults tomysql5.6, for postgrespostgres9.5use_external_parameter_group- Defaults tofalse, iftrueuse parameter group specified byparameter_group_nameinstead of a built-in oneparameter_group_name- name ofaws_db_parameter_groupto use, ifuse_external_parameter_groupis setsubnets- List of subnets IDs in a list form, e.g.["sb-1234567890", "sb-0987654321"]database_port- Database port (needed for a security group)publicly_accessible- Defaults tofalseprivate_cidr- List of CIDR netblocks for database security group, e.g.["10.0.1.0/24", "10.0.2.0/24]rds_vpc_id- VPC ID DB will be connected toallow_major_version_upgrade- Allow upgrading of major version of database (eg. from Postgres 9.5.x to Postgres 9.6.x), default: falseauto_minor_version_upgrade- Automatically upgrade minor version of the DB (eg. from Postgres 9.5.3 to Postgres 9.5.4), default: trueapply_immediately- Specifies whether any database modifications are applied immediately, or during the next maintenance window, default: falsemaintenance_window- The window to perform maintenance in. Syntax: 'ddd:hh24:mi-ddd:hh24:mi' UTC, default: "Mon:03:00-Mon:04:00"skip_final_snapshot- iftrue(default), DB won't be backed up before deletioncopy_tags_to_snapshot- copy all tags from RDS database to snapshot (defaulttrue)backup_retention_period- backup retention period in days (default: 0), must be> 0to enable backupsbackup_window- when to perform DB snapshot, default "22:00-03:00"; can't overlap with maintenance windowmonitoring_interval- To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. Valid Values: 0, 1, 5, 10, 15, 30, 60.tags- A mapping of tags to assign to the DB instance
Outputs
rds_instance_id- The ID of the RDS instancerds_instance_address- The Address of the RDS instancesubnet_group_id- The ID of the Subnet Group
Usage
You can use these in your terraform template with the following steps.
1.) If you define subnets as follows (it's an example of one might do that)
resource "aws_subnet" "example" {
count = "${length(var.availability_zones)}"
vpc_id = "${aws_vpc.public.id}"
cidr_block = "10.0.${count.index}.0/24"
map_public_ip_on_launch = true
availability_zone = "${var.region}${element(var.availability_zones, count.index)}"
tags {
Name = "${var.region}${element(var.availability_zones, count.index)}"
}
}
From availability_zones and region variables defined as follows:
variable "region" {
type = "string"
default = "eu-central-1"
}
variable "availability_zones" {
type = "list"
default = ["a", "b"]
}
You will also need CIDR:
variable "private_cidr" {
type = "list"
default = ["10.0.0.0/16"]
}
2.) Adding a module resource to your template, e.g. main.tf
module "my_rds_instance" {
source = "github.com/terraform-community-modules/tf_aws_rds"
# RDS Instance Inputs
rds_instance_identifier = "${var.rds_instance_identifier}"
rds_allocated_storage = "${var.rds_allocated_storage}"
rds_engine_type = "${var.rds_engine_type}"
rds_instance_class = "${var.rds_instance_class}"
rds_engine_version = "${var.rds_engine_version}"
db_parameter_group = "${var.db_parameter_group}"
database_name = "${var.database_name}"
database_user = "${var.database_user}"
database_password = "${var.database_password}"
database_port = "${var.database_port}"
# Upgrades
allow_major_version_upgrade = "${var.allow_major_version_upgrade}"
auto_minor_version_upgrade = "${var.auto_minor_version_upgrade}"
apply_immediately = "${var.apply_immediately}"
maintenance_window = "${var.maintenance_window}"
# Snapshots and backups
skip_final_snapshot = "${var.skip_final_snapshot}"
copy_tags_to_snapshot = "${var.copy_tags_to_snapshot}"
# DB Subnet Group Inputs
subnets = ["${aws_subnet.example.*.id}"] # see above
rds_vpc_id = "${module.vpc}"
private_cidr = ["${var.private_cidr}"]
tags {
terraform = "true"
env = "${terraform.env}"
}
}
2.) Setting values for the following variables, either through terraform.tfvars or -var arguments on the CLI
rds_instance_identifierrds_is_multi_azrds_storage_typerds_iopsrds_allocated_storagerds_engine_typerds_engine_versionrds_instance_classdatabase_namedatabase_userdatabase_passworddb_parameter_groupsubnetsdatabase_portpublicly_accessibleprivate_cidrrds_vpc_idallow_major_version_upgradeauto_minor_version_upgradeapply_immediatelymaintenance_windowskip_final_snapshotcopy_tags_to_snapshotbackup_retention_periodbackup_windowmonitoring_intervaltags
Maintainers
Contributors
- Grzegorz Adamowicz
- Trung Nguyen
- Marek Kwasecki
- Kevin Duane
- Keith Grennan
- Lee Provoost
- Vikas Sakode
- Carina Digital
- Bill Wang
- Robin Bowes
License
Apache 2 Licensed. See LICENSE for full details.