class Akashi::Ec2::Instance

Public Class Methods

create(ami:, instance_class:, security_group:, subnet:) click to toggle source
# File lib/akashi/ec2/instance.rb, line 9
def create(ami:, instance_class:, security_group:, subnet:)
  name = "#{subnet.name}-#{next_number(subnet: subnet)}"

  response = Akashi::Aws.ec2.instances.create(
    image_id:                    ami.id,
    key_name:                    Akashi.name,
    security_group_ids:          [ security_group.id ],
    subnet_id:                   subnet.id,
    instance_type:               instance_class,
    associate_public_ip_address: true,
  )

  new(response.id).tap do |instance|
    instance.name = name
    puts "Created an EC2 Instance (#{instance.id}) on a Subnet (#{subnet.id})."
  end
end
next_number(subnet:) click to toggle source
# File lib/akashi/ec2/instance.rb, line 27
def next_number(subnet:)
  "%03d" % (where(subnet_id: subnet.id).count + 1)
end