Terraform module to provision AWS RDS
instances
The module will create:
- DB instance (MySQL, Postgres, SQL Server, Oracle)
- DB Parameter Group
- DB Subnet Group
- DB Security Group
- DNS Record in Route53 for the DB endpoint
stage
- The deployment stage (e.g.prod
,staging
,dev
)namespace
- The namespace of the application the DB instance belongs to (e.g.global
,shared
, or the name of your company likecloudposse
)name
- The name of the application the DB instance belongs todns_zone_id
- The ID of the DNS Zone in Route53 where a new DNS record will be created for the DB host namehost_name
- The DB host name created in Route53security_group_ids
- The IDs of the security groups from which to allowingress
traffic to the DB instancedatabase_name
- (Optional) The name of the database to create when the DB instance is createddatabase_user
- (Required unless asnapshot_identifier
orreplicate_source_db
is provided) Username for the master DB userdatabase_password
- (Required unless a snapshot_identifier or replicate_source_db is provided) Password for the master DB userdatabase_port
- Database port (e.g.3306
forMySQL
). Used in the DB Security Group to allow access to the DB instance from the providedsecurity_group_ids
multi_az
- Defaultfalse
. Set totrue
for a multi-AZ deployment (recommended for production)storage_type
- One ofstandard
(magnetic),gp2
(general purpose SSD), orio1
(provisioned IOPS SSD). Defaultstandard
(magnetic)iops
- The amount of provisioned IOPS. Setting this implies a storage_type ofio1
. Default is0
if rds storage type is notio1
allocated_storage
- The number of GBs to allocate for DB storage. Must be an integer, e.g.10
storage_encrypted
- (Optional) Specifies whether the DB instance is encrypted. The default is false if not specified.engine
- Engine type, such asmysql
orpostgres
engine_version
- DB Engine version, e.g.9.5.4
forPostgres
instance_class
- Instance class, e.g.db.t2.micro
db_parameter_group
- DB Parameter Group, e.g.mysql5.6
for MySQL,postgres9.5
forPostgres
publicly_accessible
- Determines if the DB instance can be publicly accessed from the Internet. Defaultfalse
subnet_ids
- List of subnets IDs in the VPC, e.g.["sb-1234567890", "sb-0987654321"]
vpc_id
- VPC ID the DB instance will be connected toauto_minor_version_upgrade
- Automatically upgrade minor version of the DB (eg. from Postgres 9.5.3 to Postgres 9.5.4). Defaulttrue
allow_major_version_upgrade
- Allow upgrading of major version of database. Defaultfalse
. Important: if you are using a snapshot for creating an instance, this option should be set totrue
(if engine versions specified in the manifest and in the snapshot are different)apply_immediately
- Specifies whether any database modifications are applied immediately, or during the next maintenance window. Defaultfalse
maintenance_window
- The window to perform maintenance in. 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 (default0
). Must be> 0
to enable backupsbackup_window
- When to perform DB snapshots. Default"22:00-03:00"
. Can't overlap with the maintenance windowdb_parameter
- A list of DB parameters to apply. Note that parameters may differ from a family to an othersnapshot_identifier
- Specifies whether or not to create this database from a snapshot. This correlates to the snapshot ID you'd find in the RDS console, e.g:rds:production-2015-06-26-06-05
final_snapshot_identifier
- Specifies whether or not to create a final snapshot for this database when destroing. This option must be set ifskip_final_snapshot
=false
. E.g.:"dbname-final-snapshot-${md5(timestamp())}"
parameter_group_name
- (Optional) Name of the DB parameter group to associate (e.g.mysql-5-6
)
instance_id
- ID of the instanceinstance_address
- Address of the instanceinstance_endpoint
- DNS Endpoint of the instancesubnet_group_id
- ID of the Subnet Groupsecurity_group_id
- ID of the Security Groupparameter_group_id
- ID of the Parameter Grouphostname
- DNS host name of the instance
module "rds_instance" {
source = "git::https://github.com/cloudposse/terraform-aws-rds.git?ref=master"
namespace = "cp"
stage = "prod"
name = "app"
dns_zone_id = "Z89FN1IW975KPE"
host_name = "db"
security_group_ids = ["sg-xxxxxxxx"]
database_name = "wordpress"
database_user = "admin"
database_password = "xxxxxxxxxxxx"
database_port = 3306
multi_az = "true"
storage_type = "gp2"
allocated_storage = "100"
storage_encrypted = "true"
engine = "mysql"
engine_version = "5.7.17"
instance_class = "db.t2.medium"
db_parameter_group = "mysql5.6"
parameter_group_name = "mysql-5-6"
publicly_accessible = "false"
subnet_ids = ["sb-xxxxxxxxx", "sb-xxxxxxxxx"]
vpc_id = "vpc-xxxxxxxx"
snapshot_identifier = "rds:production-2015-06-26-06-05"
auto_minor_version_upgrade = "true"
allow_major_version_upgrade = "false"
apply_immediately = "false"
maintenance_window = "Mon:03:00-Mon:04:00"
skip_final_snapshot = "false"
copy_tags_to_snapshot = "true"
backup_retention_period = 7
backup_window = "22:00-03:00"
db_parameter = [
{ name = "myisam_sort_buffer_size" value = "1048576" },
{ name = "sort_buffer_size" value = "2097152" },
]
}
Got a question?
File a GitHub issue, send us an email or reach out to us on Gitter.
Please use the issue tracker to report any bugs or file feature requests.
If you are interested in being a contributor and want to get involved in developing terraform-aws-rds
, we would love to hear from you! Shoot us an email.
In general, PRs are welcome. We follow the typical "fork-and-pull" Git workflow.
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that we can review your changes
NOTE: Be sure to merge the latest from "upstream" before making a pull request!
APACHE 2.0 © 2018 Cloud Posse, LLC
See LICENSE for full details.
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
terraform-aws-rds
is maintained and funded by Cloud Posse, LLC.
Like it? Please let us know at hello@cloudposse.com
We love Open Source Software!
See our other projects or hire us to help build your next cloud platform.
Erik Osterman |
Andriy Knysh |
Igor Rodionov |
---|