diff --git a/examples/complete/README.md b/examples/complete/mysql/README.md similarity index 100% rename from examples/complete/README.md rename to examples/complete/mysql/README.md diff --git a/examples/complete/main.tf b/examples/complete/mysql/main.tf similarity index 98% rename from examples/complete/main.tf rename to examples/complete/mysql/main.tf index 3ffbffdc..755cd965 100644 --- a/examples/complete/main.tf +++ b/examples/complete/mysql/main.tf @@ -22,7 +22,7 @@ data "aws_security_group" "default" { # DB ##### module "db" { - source = "../../" + source = "../../../" identifier = "demodb" diff --git a/examples/complete/outputs.tf b/examples/complete/mysql/outputs.tf similarity index 100% rename from examples/complete/outputs.tf rename to examples/complete/mysql/outputs.tf diff --git a/examples/complete/postgres/README.md b/examples/complete/postgres/README.md new file mode 100644 index 00000000..68cf20d5 --- /dev/null +++ b/examples/complete/postgres/README.md @@ -0,0 +1,19 @@ +Complete RDS example +==================== + +Configuration in this directory creates set of RDS resources including DB instance, DB subnet group and DB parameter group. + +Data sources are used to discover existing VPC resources (VPC, subnet and security group). + +Usage +===== + +To run this example you need to execute: + +```bash +$ terraform init +$ terraform plan +$ terraform apply +``` + +Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. diff --git a/examples/complete/postgres/main.tf b/examples/complete/postgres/main.tf new file mode 100644 index 00000000..c61082ab --- /dev/null +++ b/examples/complete/postgres/main.tf @@ -0,0 +1,57 @@ +provider "aws" { + region = "us-west-1" +} + +############################################################## +# Data sources to get VPC, subnets and security group details +############################################################## +data "aws_vpc" "default" { + default = true +} + +data "aws_subnet_ids" "all" { + vpc_id = "${data.aws_vpc.default.id}" +} + +data "aws_security_group" "default" { + vpc_id = "${data.aws_vpc.default.id}" + name = "default" +} + +##### +# DB +##### +module "db" { + source = "../../../" + + identifier = "demodb" + + engine = "postgres" + engine_version = "9.6.3" + instance_class = "db.t2.large" + allocated_storage = 5 + storage_encrypted = false + # kms_key_id = "arm:aws:kms:::key/" + + name = "demodb" + username = "demouser" + password = "YourPwdShouldBeLongAndSecure!" + port = "5432" + + vpc_security_group_ids = ["${data.aws_security_group.default.id}"] + + maintenance_window = "Mon:00:00-Mon:03:00" + backup_window = "03:00-06:00" + backup_retention_period = 0 // disable backups to create DB faster + + tags = { + Owner = "user" + Environment = "dev" + } + + # DB subnet group + subnet_ids = ["${data.aws_subnet_ids.all.ids}"] + + # DB parameter group + family = "postgres9.6" +} diff --git a/examples/complete/postgres/outputs.tf b/examples/complete/postgres/outputs.tf new file mode 100644 index 00000000..f5c4a719 --- /dev/null +++ b/examples/complete/postgres/outputs.tf @@ -0,0 +1,82 @@ +# DB instance +output "this_db_instance_address" { + description = "The address of the RDS instance" + value = "${module.db.this_db_instance_address}" +} + +output "this_db_instance_arn" { + description = "The ARN of the RDS instance" + value = "${module.db.this_db_instance_arn}" +} + +output "this_db_instance_availability_zone" { + description = "The availability zone of the RDS instance" + value = "${module.db.this_db_instance_availability_zone}" +} + +output "this_db_instance_endpoint" { + description = "The connection endpoint" + value = "${module.db.this_db_instance_endpoint}" +} + +output "this_db_instance_hosted_zone_id" { + description = "The canonical hosted zone ID of the DB instance (to be used in a Route 53 Alias record)" + value = "${module.db.this_db_instance_hosted_zone_id}" +} + +output "this_db_instance_id" { + description = "The RDS instance ID" + value = "${module.db.this_db_instance_id}" +} + +output "this_db_instance_resource_id" { + description = "The RDS Resource ID of this instance" + value = "${module.db.this_db_instance_resource_id}" +} + +output "this_db_instance_status" { + description = "The RDS instance status" + value = "${module.db.this_db_instance_status}" +} + +output "this_db_instance_name" { + description = "The database name" + value = "${module.db.this_db_instance_name}" +} + +output "this_db_instance_username" { + description = "The master username for the database" + value = "${module.db.this_db_instance_username}" +} + +output "this_db_instance_password" { + description = "The database password (this password may be old, because Terraform doesn't track it after initial creation)" + value = "${module.db.this_db_instance_password}" +} + +output "this_db_instance_port" { + description = "The database port" + value = "${module.db.this_db_instance_port}" +} + +# DB subnet group +output "this_db_subnet_group_id" { + description = "The db subnet group name" + value = "${module.db.this_db_subnet_group_id}" +} + +output "this_db_subnet_group_arn" { + description = "The ARN of the db subnet group" + value = "${module.db.this_db_subnet_group_arn}" +} + +# DB parameter group +output "this_db_parameter_group_id" { + description = "The db parameter group id" + value = "${module.db.this_db_parameter_group_id}" +} + +output "this_db_parameter_group_arn" { + description = "The ARN of the db parameter group" + value = "${module.db.this_db_parameter_group_arn}" +}