|
1 | 1 |
|
2 | 2 | CloudFormation do |
| 3 | + |
| 4 | + loadbalancer_scheme = external_parameters[:loadbalancer_scheme] |
| 5 | + maximum_availability_zones = external_parameters[:maximum_availability_zones] |
| 6 | + loadbalancer_type = external_parameters[:loadbalancer_type] |
| 7 | + static_ips = external_parameters[:static_ips] |
| 8 | + |
3 | 9 | private = false |
4 | | - if defined?(loadbalancer_scheme) && loadbalancer_scheme == 'internal' |
| 10 | + if loadbalancer_scheme == 'internal' |
5 | 11 | private = true |
6 | 12 | end |
7 | 13 |
|
8 | 14 | az_conditions_resources('SubnetPublic', maximum_availability_zones) unless private |
9 | 15 | az_conditions_resources('SubnetCompute', maximum_availability_zones) if private |
10 | 16 | nlb_eip_conditions(maximum_availability_zones) if (loadbalancer_type == 'network') && !(private) && (static_ips) |
11 | 17 |
|
| 18 | + securityGroups = external_parameters[:securityGroups] |
| 19 | + ip_blocks = external_parameters[:ip_blocks] |
12 | 20 | EC2_SecurityGroup('SecurityGroupLoadBalancer') do |
13 | | - GroupDescription FnJoin(' ', [Ref('EnvironmentName'), component_name]) |
| 21 | + GroupDescription FnJoin(' ', [Ref('EnvironmentName'), external_parameters[:component_name]]) |
14 | 22 | VpcId Ref('VPCId') |
15 | 23 | SecurityGroupIngress sg_create_rules(securityGroups['loadbalancer'], ip_blocks) |
16 | 24 | end |
17 | 25 |
|
18 | 26 | atributes = [] |
19 | | - |
| 27 | + loadbalancer_attributes = external_parameters.fetch(:loadbalancer_attributes, {}) |
20 | 28 | loadbalancer_attributes.each do |key, value| |
21 | 29 | atributes << { Key: key, Value: value } unless value.nil? |
22 | | - end if defined? loadbalancer_attributes |
| 30 | + end |
23 | 31 |
|
24 | 32 | tags = [] |
25 | 33 | tags << { Key: "Environment", Value: Ref("EnvironmentName") } |
26 | 34 | tags << { Key: "EnvironmentType", Value: Ref("EnvironmentType") } |
27 | 35 |
|
| 36 | + loadbalancer_tags = external_parameters[:loadbalancer_tags] |
28 | 37 | loadbalancer_tags.each do |key, value| |
29 | 38 | tags << { Key: key, Value: value } |
30 | | - end if defined? loadbalancer_tags |
| 39 | + end |
31 | 40 |
|
32 | 41 | ElasticLoadBalancingV2_LoadBalancer('LoadBalancer') do |
33 | 42 |
|
|
51 | 60 | LoadBalancerAttributes atributes if atributes.any? |
52 | 61 | end |
53 | 62 |
|
| 63 | + targetgroups = external_parameters[:targetgroups] |
54 | 64 | targetgroups.each do |tg_name, tg| |
55 | 65 |
|
56 | 66 | atributes = [] |
|
96 | 106 |
|
97 | 107 | Output("#{tg_name}TargetGroup") { |
98 | 108 | Value(Ref("#{tg_name}TargetGroup")) |
99 | | - Export FnSub("${EnvironmentName}-#{component_name}-#{tg_name}TargetGroup") |
| 109 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-#{tg_name}TargetGroup") |
100 | 110 | } |
101 | | - end if defined? targetgroups |
| 111 | + end |
102 | 112 |
|
| 113 | + listeners = external_parameters.fetch(:listeners, {}) |
103 | 114 | listeners.each do |listener_name, listener| |
104 | 115 | next if listener.nil? |
105 | 116 |
|
|
160 | 171 |
|
161 | 172 | Output("#{listener_name}Listener") { |
162 | 173 | Value(Ref("#{listener_name}Listener")) |
163 | | - Export FnSub("${EnvironmentName}-#{component_name}-#{listener_name}Listener") |
| 174 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-#{listener_name}Listener") |
164 | 175 | } |
165 | | - end if defined? listeners |
| 176 | + end |
166 | 177 |
|
| 178 | + records = external_parameters.fetch(:records, []) |
167 | 179 | records.each do |record| |
168 | 180 | Route53_RecordSet("#{record.gsub('*','Wildcard').gsub('.','Dot')}LoadBalancerRecord") do |
169 | 181 | HostedZoneName FnJoin("", [ Ref("EnvironmentName"), ".", Ref('DnsDomain'), "."]) |
|
178 | 190 | HostedZoneId: FnGetAtt("LoadBalancer", "CanonicalHostedZoneID") |
179 | 191 | }) |
180 | 192 | end |
181 | | - end if defined? records |
| 193 | + end |
182 | 194 |
|
183 | 195 | Output("LoadBalancer") { |
184 | 196 | Value(Ref("LoadBalancer")) |
185 | | - Export FnSub("${EnvironmentName}-#{component_name}-LoadBalancer") |
| 197 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-LoadBalancer") |
186 | 198 | } |
187 | 199 | Output("SecurityGroupLoadBalancer") { |
188 | 200 | Value(Ref("SecurityGroupLoadBalancer")) |
189 | | - Export FnSub("${EnvironmentName}-#{component_name}-SecurityGroupLoadBalancer") |
| 201 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-SecurityGroupLoadBalancer") |
190 | 202 | } |
191 | 203 | Output("LoadBalancerDNSName") { |
192 | 204 | Value(FnGetAtt("LoadBalancer", "DNSName")) |
193 | | - Export FnSub("${EnvironmentName}-#{component_name}-DNSName") |
| 205 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-DNSName") |
194 | 206 | } |
195 | 207 | Output("LoadBalancerCanonicalHostedZoneID") { |
196 | 208 | Value(FnGetAtt("LoadBalancer", "CanonicalHostedZoneID")) |
197 | | - Export FnSub("${EnvironmentName}-#{component_name}-CanonicalHostedZoneID") |
| 209 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-CanonicalHostedZoneID") |
198 | 210 | } |
199 | 211 | Output("LoadBalancerFullName") { |
200 | 212 | Value(FnGetAtt("LoadBalancer", "LoadBalancerFullName")) |
201 | | - Export FnSub("${EnvironmentName}-#{component_name}-LoadBalancerFullName") |
| 213 | + Export FnSub("${EnvironmentName}-#{external_parameters[:component_name]}-LoadBalancerFullName") |
202 | 214 | } |
203 | 215 |
|
204 | 216 | end |
0 commit comments