|
7 | 7 | Condition("CreateReaderRecord", FnAnd([FnEquals(Ref("EnableReader"), 'true'), Condition('CreateHostRecord')]))
|
8 | 8 |
|
9 | 9 | aurora_tags = []
|
10 |
| - aurora_tags << { Key: 'Name', Value: FnSub("${EnvironmentName}-#{component_name}") } |
| 10 | + tags = external_parameters.fetch(:tags, {}) |
| 11 | + aurora_tags << { Key: 'Name', Value: FnSub("${EnvironmentName}-#{external_parameters[:component_name]}") } |
11 | 12 | aurora_tags << { Key: 'Environment', Value: Ref(:EnvironmentName) }
|
12 | 13 | aurora_tags << { Key: 'EnvironmentType', Value: Ref(:EnvironmentType) }
|
13 |
| - aurora_tags.push(*tags.map {|k,v| {Key: k, Value: FnSub(v)}}).uniq { |h| h[:Key] } if defined? tags |
| 14 | + aurora_tags.push(*tags.map {|k,v| {Key: k, Value: FnSub(v)}}).uniq { |h| h[:Key] } |
14 | 15 |
|
15 | 16 | ingress = []
|
| 17 | + security_group_rules = external_parameters.fetch(:security_group_rules, []) |
16 | 18 | security_group_rules.each do |rule|
|
17 | 19 | sg_rule = {
|
18 | 20 | FromPort: cluster_port,
|
|
28 | 30 | sg_rule['Description'] = FnSub(rule['desc'])
|
29 | 31 | end
|
30 | 32 | ingress << sg_rule
|
31 |
| - end if defined?(security_group_rules) |
| 33 | + end |
32 | 34 |
|
33 | 35 | EC2_SecurityGroup(:SecurityGroup) do
|
34 | 36 | VpcId Ref('VPCId')
|
|
55 | 57 | Tags aurora_tags
|
56 | 58 | }
|
57 | 59 |
|
| 60 | + cluster_parameters = external_parameters.fetch(:cluster_parameters, nil) |
| 61 | + |
58 | 62 | RDS_DBClusterParameterGroup(:DBClusterParameterGroup) {
|
59 | 63 | Description FnSub("Aurora postgres #{component_name} cluster parameters for the ${EnvironmentName} environment")
|
60 | 64 | Family family
|
61 |
| - Parameters cluster_parameters if defined? cluster_parameters |
| 65 | + Parameters cluster_parameters unless cluster_parameters.nil? |
62 | 66 | Tags aurora_tags
|
63 | 67 | }
|
64 | 68 |
|
|
84 | 88 | instance_password = FnJoin('', [ '{{resolve:ssm-secure:', FnSub(master_login['password_ssm_param']), ':1}}' ])
|
85 | 89 | end
|
86 | 90 |
|
| 91 | + engine_version = external_parameters.fetch(:engine_version, nil) |
| 92 | + database_name = external_parameters.fetch(:database_name, nil) |
| 93 | + storage_encrypted = external_parameters.fetch(:storage_encrypted, nil) |
| 94 | + kms = external_parameters.fetch(:kms, false) |
| 95 | + cluster_maintenance_window = external_parameters.fetch(:cluster_maintenance_window, nil) |
| 96 | + |
87 | 97 | RDS_DBCluster(:DBCluster) {
|
88 | 98 | Engine 'aurora-postgresql'
|
89 |
| - EngineVersion engine_version if defined? engine_version |
| 99 | + EngineVersion engine_version unless engine_version.nil? |
90 | 100 | DBClusterParameterGroupName Ref(:DBClusterParameterGroup)
|
91 |
| - SnapshotIdentifier Ref(:SnapshotID) |
| 101 | + PreferredMaintenanceWindow cluster_maintenance_window unless cluster_maintenance_window.nil? |
92 | 102 | SnapshotIdentifier FnIf('UseSnapshotID',Ref(:SnapshotID), Ref('AWS::NoValue'))
|
93 | 103 | MasterUsername FnIf('UseUsernameAndPassword', instance_username, Ref('AWS::NoValue'))
|
94 | 104 | MasterUserPassword FnIf('UseUsernameAndPassword', instance_password, Ref('AWS::NoValue'))
|
95 | 105 | DBSubnetGroupName Ref(:DBClusterSubnetGroup)
|
96 | 106 | VpcSecurityGroupIds [ Ref(:SecurityGroup) ]
|
97 |
| - DatabaseName FnSub(database_name) if defined? database_name |
98 |
| - StorageEncrypted storage_encrypted if defined? storage_encrypted |
99 |
| - KmsKeyId Ref('KmsKeyId') if (defined? kms) && (kms) |
100 |
| - Port cluster_port |
| 107 | + DatabaseName FnSub(database_name) unless database_name.nil? |
| 108 | + StorageEncrypted storage_encrypted unless storage_encrypted.nil? |
| 109 | + KmsKeyId Ref('KmsKeyId') if kms |
| 110 | + Port external_parameters[:cluster_port] |
101 | 111 | Tags aurora_tags
|
102 | 112 | }
|
103 | 113 |
|
| 114 | + instance_parameters = external_parameters.fetch(:instance_parameters, nil) |
| 115 | + |
104 | 116 | RDS_DBParameterGroup(:DBInstanceParameterGroup) {
|
105 | 117 | Description FnSub("Aurora postgres #{component_name} instance parameters for the ${EnvironmentName} environment")
|
106 | 118 | Family family
|
107 |
| - Parameters instance_parameters if defined? instance_parameters |
| 119 | + Parameters instance_parameters unless instance_parameters.nil? |
108 | 120 | Tags aurora_tags
|
109 | 121 | }
|
110 | 122 |
|
| 123 | + minor_upgrade = external_parameters.fetch(:minor_upgrade, nil) |
| 124 | + maint_window = external_parameters.fetch(:maint_window, nil) # key kept for backwards compatibility |
| 125 | + writer_maintenance_window = external_parameters.fetch(:writer_maintenance_window, maint_window) |
| 126 | + |
111 | 127 | RDS_DBInstance(:DBClusterInstanceWriter) {
|
112 | 128 | DBSubnetGroupName Ref(:DBClusterSubnetGroup)
|
113 | 129 | DBParameterGroupName Ref(:DBInstanceParameterGroup)
|
114 | 130 | DBClusterIdentifier Ref(:DBCluster)
|
115 | 131 | Engine 'aurora-postgresql'
|
116 |
| - EngineVersion engine_version if defined? engine_version |
117 |
| - AutoMinorVersionUpgrade minor_upgrade if defined? minor_upgrade |
118 |
| - PreferredMaintenanceWindow maint_window if defined? maint_window |
| 132 | + EngineVersion engine_version unless engine_version.nil? |
| 133 | + AutoMinorVersionUpgrade minor_upgrade unless minor_upgrade.nil? |
| 134 | + PreferredMaintenanceWindow writer_maintenance_window unless writer_maintenance_window.nil? |
119 | 135 | PubliclyAccessible 'false'
|
120 | 136 | DBInstanceClass Ref(:WriterInstanceType)
|
121 | 137 | Tags aurora_tags
|
122 | 138 | }
|
123 | 139 |
|
| 140 | + reader_maintenance_window = external_parameters.fetch(:reader_maintenance_window, nil) |
| 141 | + |
124 | 142 | RDS_DBInstance(:DBClusterInstanceReader) {
|
125 | 143 | Condition(:EnableReader)
|
126 | 144 | DBSubnetGroupName Ref(:DBClusterSubnetGroup)
|
127 | 145 | DBParameterGroupName Ref(:DBInstanceParameterGroup)
|
128 | 146 | DBClusterIdentifier Ref(:DBCluster)
|
129 | 147 | Engine 'aurora-postgresql'
|
130 |
| - EngineVersion engine_version if defined? engine_version |
| 148 | + EngineVersion engine_version unless engine_version.nil? |
| 149 | + AutoMinorVersionUpgrade minor_upgrade unless minor_upgrade.nil? |
| 150 | + PreferredMaintenanceWindow reader_maintenance_window unless reader_maintenance_window.nil? |
131 | 151 | PubliclyAccessible 'false'
|
132 | 152 | DBInstanceClass Ref(:ReaderInstanceType)
|
133 | 153 | Tags aurora_tags
|
|
136 | 156 | Route53_RecordSet(:DBClusterReaderRecord) {
|
137 | 157 | Condition(:CreateReaderRecord)
|
138 | 158 | HostedZoneName FnJoin('', [ Ref('EnvironmentName'), '.', Ref('DnsDomain'), '.'])
|
139 |
| - Name FnJoin('', [ hostname_read_endpoint, '.', Ref('EnvironmentName'), '.', Ref('DnsDomain'), '.' ]) |
| 159 | + Name FnJoin('', [ external_parameters[:hostname_read_endpoint], '.', Ref('EnvironmentName'), '.', Ref('DnsDomain'), '.' ]) |
140 | 160 | Type 'CNAME'
|
141 | 161 | TTL '60'
|
142 | 162 | ResourceRecords [ FnGetAtt('DBCluster','ReadEndpoint.Address') ]
|
|
145 | 165 | Route53_RecordSet(:DBHostRecord) {
|
146 | 166 | Condition(:CreateHostRecord)
|
147 | 167 | HostedZoneName FnJoin('', [ Ref('EnvironmentName'), '.', Ref('DnsDomain'), '.'])
|
148 |
| - Name FnJoin('', [ hostname, '.', Ref('EnvironmentName'), '.', Ref('DnsDomain'), '.' ]) |
| 168 | + Name FnJoin('', [ external_parameters[:hostname], '.', Ref('EnvironmentName'), '.', Ref('DnsDomain'), '.' ]) |
149 | 169 | Type 'CNAME'
|
150 | 170 | TTL '60'
|
151 | 171 | ResourceRecords [ FnGetAtt('DBCluster','Endpoint.Address') ]
|
|
0 commit comments