elbow 0.0.1 → 0.0.2
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/README.md +28 -2
- data/lib/elbow/capistrano.rb +8 -5
- data/lib/elbow/version.rb +1 -1
- metadata +2 -8
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Elbow
|
2
2
|
|
3
|
-
|
3
|
+
Elbow is a Capistrano plugin for deploying to an AWS Elastic Load Balancer (ELB)
|
4
|
+
|
5
|
+
In the cloud, your web instances are forever changing. This Gem allows you to define in
|
6
|
+
your cap file that a host is using an ELB and it will detect the EC2 instances and deploy
|
7
|
+
your app to each of them.
|
4
8
|
|
5
9
|
## Installation
|
6
10
|
|
@@ -18,7 +22,29 @@ Or install it yourself as:
|
|
18
22
|
|
19
23
|
## Usage
|
20
24
|
|
21
|
-
|
25
|
+
In your `deploy.rb`
|
26
|
+
|
27
|
+
require 'elbow/capistrano'
|
28
|
+
|
29
|
+
`elbow` requires your aws credentials, set them in your `deploy.rb`
|
30
|
+
|
31
|
+
set :aws_access_key_id, 'YOUR_ACCESS_KEY_ID'
|
32
|
+
set :aws_secret_access_key, 'YOUR_SECRET_ACCESS_KEY'
|
33
|
+
|
34
|
+
Tell `elbow` that a host is using an ELB by specifying the `elastic_load_balancer`
|
35
|
+
configuration in in your `deploy.rb`. The first argument is the host name followed
|
36
|
+
by a list of roles.
|
37
|
+
|
38
|
+
elastic_load_balancer example.com, :app, :web
|
39
|
+
|
40
|
+
The host name is expected to be a CNAME for the ELB public DNS, as such a DNS looked is
|
41
|
+
performed against the host name.
|
42
|
+
|
43
|
+
By default the ELB is assumed to be in the AWS region `us-east-1`. You can use a
|
44
|
+
different region by setting the following in your `deploy.rb`
|
45
|
+
|
46
|
+
set :aws_region, 'ap-southeast-2'
|
47
|
+
|
22
48
|
|
23
49
|
## Contributing
|
24
50
|
|
data/lib/elbow/capistrano.rb
CHANGED
@@ -9,11 +9,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
9
9
|
all_cnames= packet.answer.reject { |p| !p.instance_of? Net::DNS::RR::CNAME }
|
10
10
|
cname = all_cnames.find { |c| c.name == "#{name}."}.cname[0..-2]
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
aws_region= fetch(:aws_region, 'us-east-1')
|
13
|
+
AWS.config(:access_key_id => fetch(:aws_access_key_id),
|
14
|
+
:secret_access_key => fetch(:aws_secret_access_key),
|
15
|
+
:ec2_endpoint => "ec2.#{aws_region}.amazonaws.com",
|
16
|
+
:elb_endpoint => "elasticloadbalancing.#{aws_region}.amazonaws.com")
|
17
|
+
|
18
|
+
load_balancer = AWS::ELB.new.load_balancers.find { |elb| elb.dns_name.downcase == cname.downcase }
|
19
|
+
raise "EC2 Load Balancer not found for #{name} in region #{aws_region}" if load_balancer.nil?
|
17
20
|
|
18
21
|
load_balancer.instances.each do |instance|
|
19
22
|
hostname = instance.dns_name
|
data/lib/elbow/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elbow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
@@ -71,18 +71,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
71
|
- - ! '>='
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: '0'
|
74
|
-
segments:
|
75
|
-
- 0
|
76
|
-
hash: -3654321242792836432
|
77
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
75
|
none: false
|
79
76
|
requirements:
|
80
77
|
- - ! '>='
|
81
78
|
- !ruby/object:Gem::Version
|
82
79
|
version: '0'
|
83
|
-
segments:
|
84
|
-
- 0
|
85
|
-
hash: -3654321242792836432
|
86
80
|
requirements: []
|
87
81
|
rubyforge_project:
|
88
82
|
rubygems_version: 1.8.23
|