module Sitefull::Provider::Amazon
Constants
- DEFAULT_REGION
- INSTANCE_RUNNING_STATE
- MACHINE_TYPES
- REQUIRED_OPTIONS
- WAIT
Public Instance Methods
connection()
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 21 def connection @connection ||= Aws::EC2::Client.new(region: options[:region], credentials: credentials) end
create_firewall_rules()
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 50 def create_firewall_rules setup_security_group end
create_instance(_name, machine_type, image, network_id, key)
click to toggle source
Uses docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html#run_instances-instance_method
# File lib/sitefull-cloud/provider/amazon.rb, line 55 def create_instance(_name, machine_type, image, network_id, key) instance = connection.run_instances(image_id: image, instance_type: machine_type, subnet_id: network_id, key_name: key.name, security_group_ids: [security_group.group_id], min_count: 1, max_count: 1).instances.first sleep WAIT unless instance(instance.instance_id).state.name == INSTANCE_RUNNING_STATE instance.instance_id end
create_key(name)
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 45 def create_key(name) connection.import_key_pair(key_name: name, public_key_material: "ssh-rsa #{key_data[:public_key]}") OpenStruct.new(key_data) end
create_network()
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 38 def create_network setup_vpc setup_internet_gateway setup_routing subnet.subnet_id end
images(os)
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 33 def images(os) filters = [{ name: 'name', values: ["#{os}*", "#{os.downcase}*"] }, { name: 'is-public', values: ['true'] }, { name: 'virtualization-type', values: ['hvm'] }] connection.describe_images(filters: filters).images.select { |i| i.image_owner_alias.nil? }.map { |i| OpenStruct.new(id: i.image_id, name: i.name) } end
instance_data(instance_id)
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 63 def instance_data(instance_id) OpenStruct.new(id: instance_id, public_ip: instance(instance_id).public_ip_address) end
machine_types(_)
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 29 def machine_types(_) MACHINE_TYPES.map { |mt| OpenStruct.new(id: mt, name: mt) } end
process(options = {})
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 16 def process(options = {}) options[:region] ||= DEFAULT_REGION options end
regions()
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 25 def regions @regions ||= connection.describe_regions.regions.map { |r| OpenStruct.new(id: r.region_name, name: r.region_name) } end
valid?()
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 67 def valid? !connection.nil? end
Private Instance Methods
instance(instance_id)
click to toggle source
# File lib/sitefull-cloud/provider/amazon.rb, line 73 def instance(instance_id) connection.describe_instances(instance_ids: [instance_id]).reservations.first.instances.first end