Module: Meroku::Aws

Includes:
Shared
Included in:
Node
Defined in:
lib/meroku/aws.rb

Overview

Mostly wrappers around aws library functions

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Shared

ec2_client

Class Method Details

.running_filter(tag) ⇒ Object



84
85
86
87
88
89
# File 'lib/meroku/aws.rb', line 84

def self.running_filter(tag)
  [
    { name: 'tag:Name', values: [tag] },
    { name: 'instance-state-name', values: %w[running pending] }
  ]
end

.terminate_all(tag: nil) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/meroku/aws.rb', line 53

def self.terminate_all(tag: nil)
  Meroku::Shared.ec2_client.describe_instances(
    filters: running_filter(tag)
  ).reservations.map do |r|
    id = r.instances.first.instance_id
    puts "Will terminate #{id}"
    Meroku::Shared.ec2_client.terminate_instances(instance_ids: [id])
  end
end

Instance Method Details

#allocation_idObject

Our elastic ip allocation



64
65
66
# File 'lib/meroku/aws.rb', line 64

def allocation_id
  'eipalloc-139f7823'
end

#associate_addressObject



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/meroku/aws.rb', line 32

def associate_address
  sleep 15
  Meroku::Shared.ec2_client.associate_address(
    allocation_id: allocation_id, instance_id: instance_id
  )
  # TODO: stub this in tests
  print '*'
  sleep 25
  print '*'
  TCPSocket.new '34.239.241.218', 22
  # Socket.tcp("www.meroku.com", 22, connect_timeout: 60) {}
  puts '*'
end

#bucketObject

Private S3 Bucket The only security here is not no one knows the bucket name, which is a uuid



49
50
51
# File 'lib/meroku/aws.rb', line 49

def bucket
  "http://s3.amazonaws.com/#{Meroku::Shared.secrets.meroku_secret}/"
end

#default_instance_paramsObject



8
9
10
11
12
13
14
15
16
17
# File 'lib/meroku/aws.rb', line 8

def default_instance_params
  {
    image_id: 'ami-841f46ff',
    min_count: 1,
    max_count: 1,
    key_name: 'meroku.id_rsa',
    instance_type: 't2.micro',
    tag_specifications: [tag]
  }
end

#ip_addressObject



68
69
70
# File 'lib/meroku/aws.rb', line 68

def ip_address
  '34.239.241.218'
end

#make_instanceObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/meroku/aws.rb', line 19

def make_instance
  @instance_id =
    Meroku::Shared \
    .ec2_client  \
    .run_instances(default_instance_params) \
    .instances.fetch(0).instance_id
  puts 'waiting'
  Meroku::Shared.ec2_client.wait_until(
    :instance_running,
    instance_ids: [@instance_id]
  )
end

#tagObject



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/meroku/aws.rb', line 72

def tag
  {
    resource_type: 'instance',
    tags: [
      {
        key: 'Name',
        value: 'node'
      }
    ]
  }
end