Skip to content

Commit ed2c48a

Browse files
committed
Add ALB Target Group steps to capify tasks
1 parent c1f3791 commit ed2c48a

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

lib/capify-ec2/capistrano.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,19 @@ def capify_ec2
122122
roles.clear
123123

124124
load_balancers_to_reregister = [] # Set to empty again here, to ensure it always starts off empty for every iteration.
125+
target_groups_to_reregister = []
125126
is_load_balanced = false
126127
load_balancer_names = false
128+
target_group_names = nil
127129

128130
server_roles.each do |a_role|
129131
role a_role, server_dns, all_options[a_role][server_dns]
130132
is_load_balanced = true if all_options[a_role][server_dns][:load_balanced]
131133

134+
if all_options[a_role][server_dns].key?('target_group_names')
135+
target_group_names = all_options[a_role][server_dns][:target_group_names]
136+
end
137+
132138
if all_options[a_role][server_dns][:elb_names]
133139
load_balancer_names = all_options[a_role][server_dns][:elb_names]
134140
end
@@ -138,6 +144,10 @@ def capify_ec2
138144
puts "[Capify-EC2] (#{index+1} of #{all_servers.length}) Beginning deployment to #{instance_dns_with_name_tag(server_dns)} with #{server_roles.count > 1 ? 'roles' : 'role'} '#{server_roles.join(', ')}'...".bold
139145

140146
if is_load_balanced && !dry_run
147+
if target_group_names
148+
target_groups_to_reregister = capify_ec2.deregister_instance_from_target_groups_by_dns(server_dns, target_group_names)
149+
end
150+
141151
if load_balancer_names
142152
load_balancers_to_reregister = capify_ec2.deregister_instance_from_named_elbs_by_dns(server_dns, load_balancer_names)
143153
else
@@ -192,6 +202,20 @@ def capify_ec2
192202
end
193203
end
194204

205+
for target_group_to_reregister in target_group_to_reregister do
206+
threads << Thread.new(target_group_to_reregister) do |tg|
207+
puts "[Capify-EC2] Starting registration of ALB Target Group '#{tg.id}'"
208+
209+
reregistered = capify_ec2.reregister_instance_with_target_group_by_dns(server_dns, tg, 60)
210+
if reregistered
211+
puts "[Capify-EC2] Instance registration with ALB Target Group '#{tg.id}' successful.".green.bold
212+
else
213+
puts "[Capify-EC2] Instance registration with ALB Target Group '#{tg.id}' failed!".red.bold
214+
raise CapifyEC2RollingDeployError.new("ALB Target Group registration timeout exceeded", server_dns)
215+
end
216+
end
217+
end
218+
195219
for t in threads do
196220
t.join
197221
end
@@ -204,18 +228,27 @@ def capify_ec2
204228
failed_deploys << e.dns
205229
puts "[Capify-EC2]"
206230
puts "[Capify-EC2] Deployment aborted due to error: #{e}!".red.bold
231+
207232
puts "[Capify-EC2]" if load_balancer_to_reregister
208233
puts "[Capify-EC2] Note: Instance '#{instance_dns_with_name_tag(e.dns)}' was removed from the ELB '#{load_balancer_to_reregister.id}' and should be manually checked and reregistered.".red.bold if load_balancer_to_reregister
209234

235+
puts "[Capify-EC2]" if target_group_to_reregister
236+
puts "[Capify-EC2] Note: Instance '#{instance_dns_with_name_tag(e.dns)}' was removed from the ALB Target Group '#{target_group_to_reregister.id}' and should be manually checked and reregistered.".red.bold if target_group_to_reregister
237+
238+
210239
rolling_deploy_status(all_servers, successful_deploys, failed_deploys)
211240
exit 1
212241
rescue => e
213242
failed_deploys << roles.values.first.servers.first.host
214243
puts "[Capify-EC2]"
215244
puts "[Capify-EC2] Deployment aborted due to error: #{e}!".red.bold
245+
216246
puts "[Capify-EC2]" if load_balancer_to_reregister
217247
puts "[Capify-EC2] Note: Instance '#{instance_dns_with_name_tag(roles.values.first.servers.first.host)}' was removed from the ELB '#{load_balancer_to_reregister.id}' and should be manually checked and reregistered.".red.bold if load_balancer_to_reregister
218248

249+
puts "[Capify-EC2]" if target_group_to_reregister
250+
puts "[Capify-EC2] Note: Instance '#{instance_dns_with_name_tag(roles.values.first.servers.first.host)}' was removed from the ALB Target Group '#{target_group_to_reregister.id}' and should be manually checked and reregistered.".red.bold if target_group_to_reregister
251+
219252
rolling_deploy_status(all_servers, successful_deploys, failed_deploys)
220253
exit 1
221254
else

0 commit comments

Comments
 (0)