Class: Akashi::Ec2::Instance
- Defined in:
- lib/akashi/ec2/instance.rb
Class Method Summary collapse
- .create(ami:, instance_class:, security_group:, subnet:, allocated_storage:) ⇒ Object
- .next_number(subnet:) ⇒ Object
Methods inherited from Base
Methods inherited from Base
all, base_class, collection, find, find_by, #initialize, object_class, where
Constructor Details
This class inherits a constructor from Akashi::Base
Class Method Details
.create(ami:, instance_class:, security_group:, subnet:, allocated_storage:) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/akashi/ec2/instance.rb', line 9 def create(ami:, instance_class:, security_group:, subnet:, allocated_storage:) 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, block_device_mappings: [ { device_name: ami.root_device_name, ebs: { volume_size: allocated_storage, delete_on_termination: true, volume_type: "standard", }, }, ], ) 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:) ⇒ Object
37 38 39 |
# File 'lib/akashi/ec2/instance.rb', line 37 def next_number(subnet:) "%03d" % (where(subnet_id: subnet.id).count + 1) end |