class Capistrano::Asg::AMI
Extend AWS Resource class to include AMI
methods
Public Class Methods
create() { |ami| ... }
click to toggle source
# File lib/capistrano/asg/ami.rb, line 7 def self.create(&_block) ami = new ami.cleanup do ami.save ami.tag 'deployed-with' => 'cap-asg' ami.tag 'cap-asg-deploy-group' => ami.autoscaling_group_name yield ami end end
Public Instance Methods
destroy(images = [])
click to toggle source
# File lib/capistrano/asg/ami.rb, line 26 def destroy(images = []) images.each do |i| info "Deleting old AMI: #{i.id}" snapshots = snapshots_attached_to i i.deregister delete_snapshots snapshots end end
save()
click to toggle source
# File lib/capistrano/asg/ami.rb, line 17 def save info "Creating EC2 AMI from EC2 Instance: #{base_ec2_instance.id}" ec2_instance = ec2_resource.instance(base_ec2_instance.id) @aws_counterpart = ec2_instance.create_image( name: name, no_reboot: fetch(:aws_no_reboot_on_create_ami, true) ) end
Private Instance Methods
delete_snapshots(snapshots)
click to toggle source
# File lib/capistrano/asg/ami.rb, line 52 def delete_snapshots(snapshots) snapshots.each do |snapshot| info "Deleting snapshot: #{snapshot.id}" snapshot.delete unless snapshot.nil? end end
name()
click to toggle source
# File lib/capistrano/asg/ami.rb, line 37 def name timestamp fetch(:aws_ami_name_prefix, "latest-#{environment}-AMI") end
snapshots_attached_to(image)
click to toggle source
# File lib/capistrano/asg/ami.rb, line 47 def snapshots_attached_to(image) ids = image.block_device_mappings.map(&:ebs).compact.map(&:snapshot_id) ec2_resource.snapshots(snapshot_ids: ids) end
trash()
click to toggle source
# File lib/capistrano/asg/ami.rb, line 41 def trash ec2_resource.images(owners: ['self']).to_a.select do |ami| deployed_with_asg? ami end end