From c962fede7fb5bfb30fde06313a566d9511fa88d3 Mon Sep 17 00:00:00 2001 From: Juanfra Date: Tue, 20 Dec 2022 18:26:53 -0300 Subject: [PATCH] add filter ami creation to only deployed instances --- lib/elbas/tasks/elbas.rake | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/elbas/tasks/elbas.rake b/lib/elbas/tasks/elbas.rake index 85d91cb..e1c7a4d 100644 --- a/lib/elbas/tasks/elbas.rake +++ b/lib/elbas/tasks/elbas.rake @@ -12,12 +12,25 @@ namespace :elbas do end task :deploy do + include Capistrano::DSL + deploy_servers = env.filter(env.servers).map(&:hostname) + fetch(:aws_autoscale_group_names).each do |aws_autoscale_group_name| info "Auto Scaling Group: #{aws_autoscale_group_name}" asg = Elbas::AWS::AutoscaleGroup.new aws_autoscale_group_name + instances_in_current_deploy = asg.instances.running.select do |instance| + hostname = instance.hostname + deploy_servers.include?(hostname) + end + + unless instances_in_current_deploy.any? + info "Auto Scaling Group #{aws_autoscale_group_name} skip AMI creation" + next + end + info "Creating AMI from a running instance..." - ami = Elbas::AWS::AMI.create asg.instances.running.sample + ami = Elbas::AWS::AMI.create instances_in_current_deploy.sample ami.tag 'ELBAS-Deploy-group', asg.name ami.tag 'ELBAS-Deploy-id', env.timestamp.to_i.to_s info "Created AMI: #{ami.id}"