@@ -6,19 +6,22 @@ variable "mysql_name" {
66 default = " mysql"
77}
88
9- variable "mysql_admin_name " {
9+ variable "mysql_admin_user " {
1010 type = " string"
1111 description = " MySQL admin user name"
12+ default = " "
1213}
1314
1415variable "mysql_admin_password" {
1516 type = " string"
1617 description = " MySQL password for the admin user"
18+ default = " "
1719}
1820
1921variable "mysql_db_name" {
2022 type = " string"
2123 description = " MySQL database name"
24+ default = " "
2225}
2326
2427# https://aws.amazon.com/rds/aurora/pricing
@@ -51,48 +54,129 @@ variable "mysql_cluster_allowed_cidr_blocks" {
5154 description = " List of CIDR blocks allowed to access the cluster"
5255}
5356
57+ resource "random_pet" "mysql_db_name" {
58+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
59+ separator = " _"
60+ }
61+
62+ resource "random_string" "mysql_admin_user" {
63+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
64+ length = 8
65+ number = false
66+ special = false
67+ }
68+
69+ resource "random_string" "mysql_admin_password" {
70+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
71+ length = 16
72+ special = true
73+ }
74+
75+ locals {
76+ mysql_cluster_enabled = " ${ var . mysql_cluster_enabled == " true" } "
77+ mysql_admin_user = " ${ length (var. mysql_admin_user ) > 0 ? var . mysql_admin_user : join (" " , random_string. mysql_admin_user . * . result )} "
78+ mysql_admin_password = " ${ length (var. mysql_admin_password ) > 0 ? var . mysql_admin_password : join (" " , random_string. mysql_admin_password . * . result )} "
79+ mysql_db_name = " ${ join (" " , random_pet. mysql_db_name . * . id )} "
80+ }
81+
5482module "aurora_mysql" {
55- source = " git::https://github.com/cloudposse/terraform-aws-rds-cluster.git?ref=tags/0.7.0"
56- namespace = " ${ var . namespace } "
57- stage = " ${ var . stage } "
58- name = " ${ var . mysql_name } "
59- engine = " aurora-mysql"
60- cluster_family = " aurora-mysql5.7"
61- instance_type = " ${ var . mysql_instance_type } "
62- cluster_size = " ${ var . mysql_cluster_size } "
63- admin_user = " ${ var . mysql_admin_name } "
64- admin_password = " ${ var . mysql_admin_password } "
65- db_name = " ${ var . mysql_db_name } "
66- db_port = " 3306"
67- vpc_id = " ${ module . vpc . vpc_id } "
68- subnets = [" ${ module . subnets . public_subnet_ids } " ] # Use module.subnets.private_subnet_ids if the cluster does not need to be publicly accessible
69- zone_id = " ${ var . zone_id } "
83+ source = " git::https://github.com/cloudposse/terraform-aws-rds-cluster.git?ref=tags/0.7.1"
84+ namespace = " ${ var . namespace } "
85+ stage = " ${ var . stage } "
86+ name = " ${ var . mysql_name } "
87+ engine = " aurora-mysql"
88+ cluster_family = " aurora-mysql5.7"
89+ instance_type = " ${ var . mysql_instance_type } "
90+ cluster_size = " ${ var . mysql_cluster_size } "
91+ admin_user = " ${ local . mysql_admin_user } "
92+ admin_password = " ${ local . mysql_admin_password } "
93+ db_name = " ${ local . mysql_db_name } "
94+ db_port = " 3306"
95+ vpc_id = " ${ module . vpc . vpc_id } "
96+
97+ # Use module.subnets.private_subnet_ids if the cluster does not need to be publicly accessible
98+ subnets = [" ${ module . subnets . public_subnet_ids } " ]
99+ zone_id = " ${ local . zone_id } "
70100 enabled = " ${ var . mysql_cluster_enabled } "
71101 publicly_accessible = " ${ var . mysql_cluster_publicly_accessible } "
72102 allowed_cidr_blocks = " ${ var . mysql_cluster_allowed_cidr_blocks } "
73103}
74104
105+ resource "aws_ssm_parameter" "aurora_mysql_database_name" {
106+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
107+ name = " ${ format (var. chamber_parameter_name , local. chamber_service , " aurora_mysql_database_name" )} "
108+ value = " ${ module . aurora_mysql . name } "
109+ description = " Aurora MySQL Database Name"
110+ type = " String"
111+ overwrite = " true"
112+ }
113+
114+ resource "aws_ssm_parameter" "aurora_mysql_master_username" {
115+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
116+ name = " ${ format (var. chamber_parameter_name , local. chamber_service , " aurora_mysql_master_username" )} "
117+ value = " ${ module . aurora_mysql . user } "
118+ description = " Aurora MySQL Username for the master DB user"
119+ type = " String"
120+ overwrite = " true"
121+ }
122+
123+ resource "aws_ssm_parameter" "aurora_mysql_master_password" {
124+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
125+ name = " ${ format (var. chamber_parameter_name , local. chamber_service , " aurora_mysql_master_password" )} "
126+ value = " ${ module . aurora_mysql . password } "
127+ description = " Aurora MySQL Password for the master DB user"
128+ type = " String"
129+ overwrite = " true"
130+ }
131+
132+ resource "aws_ssm_parameter" "aurora_mysql_master_hostname" {
133+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
134+ name = " ${ format (var. chamber_parameter_name , local. chamber_service , " aurora_mysql_master_hostname" )} "
135+ value = " ${ module . aurora_mysql . master_host } "
136+ description = " Aurora MySQL DB Master hostname"
137+ type = " String"
138+ overwrite = " true"
139+ }
140+
141+ resource "aws_ssm_parameter" "aurora_mysql_replicas_hostname" {
142+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
143+ name = " ${ format (var. chamber_parameter_name , local. chamber_service , " aurora_mysql_replicas_hostname" )} "
144+ value = " ${ module . aurora_mysql . replicas_host } "
145+ description = " Aurora MySQL DB Replicas hostname"
146+ type = " String"
147+ overwrite = " true"
148+ }
149+
150+ resource "aws_ssm_parameter" "aurora_mysql_cluster_name" {
151+ count = " ${ local . mysql_cluster_enabled ? 1 : 0 } "
152+ name = " ${ format (var. chamber_parameter_name , local. chamber_service , " aurora_mysql_cluster_name" )} "
153+ value = " ${ module . aurora_mysql . cluster_name } "
154+ description = " Aurora MySQL DB Cluster Identifier"
155+ type = " String"
156+ overwrite = " true"
157+ }
158+
75159output "aurora_mysql_database_name" {
76160 value = " ${ module . aurora_mysql . name } "
77- description = " Database name"
161+ description = " Aurora MySQL Database name"
78162}
79163
80164output "aurora_mysql_master_username" {
81165 value = " ${ module . aurora_mysql . user } "
82- description = " Username for the master DB user"
166+ description = " Aurora MySQL Username for the master DB user"
83167}
84168
85169output "aurora_mysql_master_hostname" {
86170 value = " ${ module . aurora_mysql . master_host } "
87- description = " DB Master hostname"
171+ description = " Aurora MySQL DB Master hostname"
88172}
89173
90174output "aurora_mysql_replicas_hostname" {
91175 value = " ${ module . aurora_mysql . replicas_host } "
92- description = " Replicas hostname"
176+ description = " Aurora MySQL Replicas hostname"
93177}
94178
95179output "aurora_mysql_cluster_name" {
96180 value = " ${ module . aurora_mysql . cluster_name } "
97- description = " Cluster Identifier"
181+ description = " Aurora MySQL Cluster Identifier"
98182}
0 commit comments