awsome 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/awsome.rb +1 -0
- data/lib/awsome/ec2/instance.rb +8 -16
- data/lib/awsome/executor.rb +1 -5
- data/lib/awsome/instance_requirement.rb +2 -2
- data/lib/awsome/r53.rb +25 -0
- metadata +18 -1
data/lib/awsome.rb
CHANGED
data/lib/awsome/ec2/instance.rb
CHANGED
@@ -33,28 +33,16 @@ module Awsome
|
|
33
33
|
Awsome::Ssh.ssh(@properties['public_dns_name'], *args)
|
34
34
|
end
|
35
35
|
|
36
|
+
def associate_cnames(*cnames)
|
37
|
+
cnames.each { |cname| associate_cname(cname) }
|
38
|
+
end
|
39
|
+
|
36
40
|
def associate_ips(*elastic_ips)
|
37
41
|
elastic_ips.each do |ip|
|
38
42
|
Awsome::Ec2.associate_address(@properties['instance_id'], ip)
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
42
|
-
def install_hosts_entries(ip_address, *hostnames)
|
43
|
-
sed = []
|
44
|
-
cmd = []
|
45
|
-
|
46
|
-
# we will remove all hosts entries for the given "ip_address"
|
47
|
-
sed << "sed '/^#{ip_address}/d'"
|
48
|
-
|
49
|
-
# we will remove all hosts entries for each of the given "hostnames"
|
50
|
-
sed += hostnames.collect { |h| "sed '/ #{h} /d'" }
|
51
|
-
|
52
|
-
cmd << "cat /etc/hosts | #{sed.join(' | ')} | sudo tee /etc/hosts.temp"
|
53
|
-
cmd << "echo '#{ip_address} #{hostnames.join(' ')} # GENERATED' | sudo tee -a /etc/hosts.temp" unless hostnames.empty?
|
54
|
-
cmd << "sudo mv /etc/hosts.temp /etc/hosts"
|
55
|
-
ssh(cmd)
|
56
|
-
end
|
57
|
-
|
58
46
|
def reattach_volumes(*volumes)
|
59
47
|
volumes.each do |info|
|
60
48
|
Awsome::Ec2.detach_volume(info['id'], info['dir'], info['preumount'])
|
@@ -90,6 +78,10 @@ module Awsome
|
|
90
78
|
@properties = instance.properties.clone
|
91
79
|
end
|
92
80
|
|
81
|
+
def associate_cname(cname)
|
82
|
+
Awsome::R53.redefine_cname(cname[:zone], cname[:name], @properties['private_dns_name'])
|
83
|
+
end
|
84
|
+
|
93
85
|
def has_ssh?
|
94
86
|
Awsome::Ssh.has_ssh?(@properties['public_dns_name'])
|
95
87
|
end
|
data/lib/awsome/executor.rb
CHANGED
@@ -57,11 +57,7 @@ module Awsome
|
|
57
57
|
instance.deregister_from_elbs
|
58
58
|
instance.remove_packages(*requirement.packages_to_remove(instance))
|
59
59
|
instance.install_packages(*requirement.packages_to_install(instance))
|
60
|
-
|
61
|
-
instances_to_use do |other_instance, other_requirement|
|
62
|
-
other_instance.install_hosts_entries(instance.properties['private_dns_name'], *requirement.hostnames)
|
63
|
-
end
|
64
|
-
|
60
|
+
instance.associate_cnames(*requirement.cnames)
|
65
61
|
instance.associate_ips(*requirement.elastic_ips)
|
66
62
|
instance.register_with_elbs(*requirement.elbs)
|
67
63
|
end
|
data/lib/awsome/r53.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'route53'
|
2
|
+
|
3
|
+
module Awsome
|
4
|
+
module R53
|
5
|
+
def self.connection
|
6
|
+
@@connection ||= Route53::Connection.new(Awsome.config.aws_access_key, Awsome.config.aws_secret_key)
|
7
|
+
end
|
8
|
+
def self.zones
|
9
|
+
self.connection.get_zones
|
10
|
+
end
|
11
|
+
def self.find_zone(zone_name)
|
12
|
+
self.zones.find { |z| z.name == zone_name }
|
13
|
+
end
|
14
|
+
def self.find_cname(zone_name, name)
|
15
|
+
find_zone(zone_name).get_records('CNAME').find { |r| r.name == name }
|
16
|
+
end
|
17
|
+
def self.redefine_cname(zone_name, name, value)
|
18
|
+
if record = find_cname(zone_name, name)
|
19
|
+
record.update(nil, nil, nil, [value], nil)
|
20
|
+
else
|
21
|
+
Route53::DNSRecord.new(name, 'CNAME', 300, [value], find_zone(zone_name)).create
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awsome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: route53
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
description: AWS library targeted specifically for continuous integration.
|
31
47
|
email: sebastian@foodocs.com
|
32
48
|
executables:
|
@@ -44,6 +60,7 @@ files:
|
|
44
60
|
- lib/awsome/requirements_options.rb
|
45
61
|
- lib/awsome/elb.rb
|
46
62
|
- lib/awsome/debian.rb
|
63
|
+
- lib/awsome/r53.rb
|
47
64
|
- lib/awsome/ec2/instance.rb
|
48
65
|
- lib/awsome/instance_requirement.rb
|
49
66
|
- bin/awsome
|