cap-elb 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +14 -0
- data/Rakefile +1 -0
- data/cap-elb.gemspec +17 -12
- data/lib/cap-elb/version.rb +1 -1
- data/lib/cap-elb.rb +54 -3
- data/spec/.gemtest +0 -0
- data/spec/elb_test.rb +0 -0
- metadata +51 -45
data/README.markdown
ADDED
data/Rakefile
CHANGED
data/cap-elb.gemspec
CHANGED
@@ -3,18 +3,23 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
require "cap-elb/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
s.name = "cap-elb"
|
7
|
+
s.version = Cap::Elb::VERSION
|
8
|
+
s.authors = ["Dan Miley"]
|
9
|
+
s.email = ["dan.miley@gmail.com"]
|
10
|
+
s.homepage = "http://github.com/danmiley/cap-elb"
|
11
|
+
s.summary = %q{Capistrano can perform tasks on Amazon ELB instances}
|
12
|
+
s.description = %q{Capistrano can perform tasks on Amazon ELB instances; various arguments to allow instance tags to determine whether task should be applied on the given tag}
|
13
|
+
|
14
|
+
s.rubyforge_project = "cap-elb"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency "right_aws", "2.1.0"
|
22
|
+
s.add_development_dependency "rspec", "~> 2.6"
|
13
23
|
|
14
|
-
s.rubyforge_project = "cap-elb"
|
15
24
|
|
16
|
-
s.files = `git ls-files`.split("\n")
|
17
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
s.require_paths = ["lib"]
|
20
25
|
end
|
data/lib/cap-elb/version.rb
CHANGED
data/lib/cap-elb.rb
CHANGED
@@ -1,7 +1,58 @@
|
|
1
1
|
require "cap-elb/version"
|
2
|
+
require 'right_aws'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
unless Capistrano::Configuration.respond_to?(:instance)
|
5
|
+
abort "capistrano/elb requires Capistrano 2"
|
6
|
+
end
|
7
|
+
|
8
|
+
module Capistrano
|
9
|
+
class Configuration
|
10
|
+
module LoadBalancers
|
11
|
+
# Associate a group of EC2 instances behind a load balancer with a role. In order to use this, you
|
12
|
+
# must use the Load Balancer feature in Amazon EC2 to group your servers
|
13
|
+
# by role.
|
14
|
+
#
|
15
|
+
# First, specify the load balancer name, then the roles and params:
|
16
|
+
#
|
17
|
+
# group :webserver, :web
|
18
|
+
# group :app_myappname, :app
|
19
|
+
# group "MySQL Servers", :db, :port => 22000
|
20
|
+
def loadbalancer (which, *args)
|
21
|
+
|
22
|
+
# list of all the instances assoc'ed with this account
|
23
|
+
@ec2_api ||= RightAws::Ec2.new(fetch(:aws_access_key_id), fetch(:aws_secret_access_key), fetch(:aws_params, {}))
|
24
|
+
|
25
|
+
# fetch a raw list all the load balancers
|
26
|
+
@elb_api ||= RightAws::ElbInterface.new(fetch(:aws_access_key_id), fetch(:aws_secret_access_key))
|
27
|
+
# only get the named load balancer
|
28
|
+
named_elb_instance = @elb_api.describe_load_balancers.delete_if{ |i| i[:load_balancer_name] != which.to_s }
|
29
|
+
|
30
|
+
print "named elb instnaces" + named_elb_instance.to_s
|
31
|
+
|
32
|
+
elb_ec2_instances = named_elb_instance[0][:instances] rescue {}
|
33
|
+
|
34
|
+
# print "named elb ec2 instnaces" + elb_ec2_instances.to_s
|
35
|
+
print "here are our ARGSXXX" + args[1].to_s
|
36
|
+
|
37
|
+
# this is the target state we extract from param, unless that param is present in the instance, we dont update
|
38
|
+
run_state = args[1][:state] rescue 'run'
|
39
|
+
|
40
|
+
#now, we have a hash of either zero or one ELBs, assuming unique names
|
41
|
+
@ec2_api.describe_instances.delete_if{ |i| i[:aws_state] != "running"}.each do |instance|
|
42
|
+
# unless this ec2 instance is in the LB, nuke it
|
43
|
+
if elb_ec2_instances.include?(instance[:aws_instance_id]) && instance[:tags]['state'] == run_state
|
44
|
+
server(instance[:dns_name], *args)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
include LoadBalancers
|
6
51
|
end
|
7
52
|
end
|
53
|
+
|
54
|
+
# module Cap
|
55
|
+
# module Elb
|
56
|
+
# # Your code goes here...
|
57
|
+
# end
|
58
|
+
# end
|
data/spec/.gemtest
ADDED
File without changes
|
data/spec/elb_test.rb
ADDED
File without changes
|
metadata
CHANGED
@@ -1,73 +1,79 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: cap-elb
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Dan Miley
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
12
|
+
date: 2011-10-25 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: right_aws
|
16
|
+
requirement: &2152611080 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - =
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.1.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2152611080
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2152610560 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.6'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2152610560
|
36
|
+
description: Capistrano can perform tasks on Amazon ELB instances; various arguments
|
37
|
+
to allow instance tags to determine whether task should be applied on the given
|
38
|
+
tag
|
39
|
+
email:
|
24
40
|
- dan.miley@gmail.com
|
25
41
|
executables: []
|
26
|
-
|
27
42
|
extensions: []
|
28
|
-
|
29
43
|
extra_rdoc_files: []
|
30
|
-
|
31
|
-
files:
|
44
|
+
files:
|
32
45
|
- .gitignore
|
33
46
|
- Gemfile
|
47
|
+
- README.markdown
|
34
48
|
- Rakefile
|
35
49
|
- cap-elb.gemspec
|
36
50
|
- lib/cap-elb.rb
|
37
51
|
- lib/cap-elb/version.rb
|
38
|
-
|
39
|
-
|
52
|
+
- spec/.gemtest
|
53
|
+
- spec/elb_test.rb
|
54
|
+
homepage: http://github.com/danmiley/cap-elb
|
40
55
|
licenses: []
|
41
|
-
|
42
56
|
post_install_message:
|
43
57
|
rdoc_options: []
|
44
|
-
|
45
|
-
require_paths:
|
58
|
+
require_paths:
|
46
59
|
- lib
|
47
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
61
|
none: false
|
49
|
-
requirements:
|
50
|
-
- -
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
|
53
|
-
|
54
|
-
- 0
|
55
|
-
version: "0"
|
56
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
67
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
version: "0"
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
65
72
|
requirements: []
|
66
|
-
|
67
73
|
rubyforge_project: cap-elb
|
68
|
-
rubygems_version: 1.
|
74
|
+
rubygems_version: 1.8.5
|
69
75
|
signing_key:
|
70
76
|
specification_version: 3
|
71
77
|
summary: Capistrano can perform tasks on Amazon ELB instances
|
72
|
-
test_files:
|
73
|
-
|
78
|
+
test_files:
|
79
|
+
- spec/elb_test.rb
|