class Vanagon::Engine::Ec2
Attributes
ami[RW]
instance_type[RW]
key[RW]
key_name[RW]
shutdown_behavior[RW]
subnet_id[RW]
userdata[RW]
Public Class Methods
new(platform, target = nil, **opts)
click to toggle source
Calls superclass method
Vanagon::Engine::Base::new
# File lib/vanagon/engine/ec2.rb, line 13 def initialize(platform, target = nil, **opts) super @ami = @platform.aws_ami @target_user = @platform.target_user @subnet_id = @platform.aws_subnet_id @userdata = @platform.aws_user_data @region = @platform.aws_region || 'us-east-1' @key_name = @platform.aws_key_name @key = @platform.aws_key @instance_type = @platform.aws_instance_type || "t1.micro" @required_attributes = ["ssh_port", "aws_ami", "aws_key_name"] @shutdown_behavior = @platform.aws_shutdown_behavior @ec2 = ::Aws::EC2::Client.new(region: @region) @resource = ::Aws::EC2::Resource.new(client: @ec2) end
Public Instance Methods
get_userdata()
click to toggle source
# File lib/vanagon/engine/ec2.rb, line 35 def get_userdata unless @userdata.nil? Base64.encode64(ERB.new(@userdata).result(binding)) end end
instance()
click to toggle source
# File lib/vanagon/engine/ec2.rb, line 56 def instance @instance ||= instances.first end
instances()
click to toggle source
# File lib/vanagon/engine/ec2.rb, line 41 def instances @instances ||= @resource.create_instances({ image_id: ami, min_count: 1, max_count: 1, key_name: key_name, instance_type: instance_type, subnet_id: subnet_id, user_data: get_userdata, monitoring: { enabled: false, } }) end
name()
click to toggle source
# File lib/vanagon/engine/ec2.rb, line 31 def name 'ec2' end
select_target()
click to toggle source
# File lib/vanagon/engine/ec2.rb, line 60 def select_target VanagonLogger.info "Instance created id: #{instance.id}" VanagonLogger.info "Created instance waiting for status ok" @ec2.wait_until(:instance_status_ok, instance_ids: [instance.id]) VanagonLogger.info "Instance running" @target = instance.private_ip_address rescue ::Aws::Waiters::Errors::WaiterFailed => error fail "Failed to wait for ec2 instance to start got error #{error}" end
teardown()
click to toggle source
# File lib/vanagon/engine/ec2.rb, line 70 def teardown VanagonLogger.info "Destroying instance on AWS id: #{instance.id}" instances.batch_terminate! end