capify-ec2 1.1.15 → 1.1.16.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,15 @@
1
+ ## 1.1.16 (Sep 23, 2011)
2
+
3
+ Features:
4
+
5
+ - Added 'option' handling. Allows users to move cap options ('cron,' 'db,' 'resque,' etc.) to 'Option' field at AWS.
6
+
7
+ ## 1.1.15 (Sep 02, 2011)
8
+
9
+ Bugfixes:
10
+
11
+ - Fixed problem with ec2:ssh task not terminating properly
12
+
1
13
  ## 1.1.14 (Aug 24, 2011)
2
14
 
3
15
  Bugfixes:
@@ -40,6 +40,14 @@ class CapifyEc2
40
40
  end
41
41
  roles
42
42
  end
43
+ def options
44
+ option = case_insensitive_tag("Option")
45
+ options = option.nil? ? [] : [option]
46
+ if (options_tag = case_insensitive_tag("Options"))
47
+ options += case_insensitive_tag("Options").split(/\s*,\s*/)
48
+ end
49
+ options
50
+ end
43
51
  end
44
52
  instances << instance
45
53
  end
@@ -113,9 +113,10 @@ Capistrano::Configuration.instance(:must_exist).load do
113
113
  end
114
114
 
115
115
  def define_role(role, instance)
116
- subroles = role[:options]
116
+ options = role[:options]
117
117
  new_options = {}
118
- subroles.each {|key, value| new_options[key] = true if value.to_s == instance.name}
118
+ options.each {|key, value| new_options[key] = true if value.to_s == instance.name}
119
+ instance.options.each {|option| new_options[option.to_sym] = true}
119
120
 
120
121
  if new_options
121
122
  role role[:name].to_sym, instance.dns_name, new_options
@@ -132,4 +133,5 @@ Capistrano::Configuration.instance(:must_exist).load do
132
133
  roles.reject! { true }
133
134
  end
134
135
 
136
+
135
137
  end
@@ -1,5 +1,5 @@
1
1
  module Capify
2
2
  module Ec2
3
- VERSION = "1.1.15"
3
+ VERSION = "1.1.16.pre"
4
4
  end
5
5
  end
data/readme.md CHANGED
@@ -5,7 +5,7 @@ capify-ec2 is used to generate capistrano namespaces using ec2 tags.
5
5
 
6
6
  eg: If you have three servers on amazon's ec2.
7
7
 
8
- server-1 Tag: Role => "web"
8
+ server-1 Tag: Role => "web", Options => "cron, resque"
9
9
  server-2 Tag: Role => "db"
10
10
  server-3 Tag: Roles => "web, db"
11
11
 
@@ -15,74 +15,91 @@ Installing
15
15
 
16
16
  In your deploy.rb:
17
17
 
18
- require "capify-ec2/capistrano"
19
- ec2_roles :web
18
+ ```ruby
19
+ require "capify-ec2/capistrano"
20
+ ec2_roles :web
21
+ ```
20
22
 
21
23
  Will generate
22
24
 
23
- task :server-1 do
24
- role :web, {server-1 public dns fetched from Amazon}
25
- end
25
+ ```ruby
26
+ task :server-1 do
27
+ role :web, {server-1 public dns fetched from Amazon}, :cron=>true, :resque=>true
28
+ end
26
29
 
27
- task :server-3 do
28
- role :web, {server-1 public dns fetched from Amazon}
29
- end
30
+ task :server-3 do
31
+ role :web, {server-1 public dns fetched from Amazon}
32
+ end
30
33
 
31
- task :web do
32
- role :web, {server-1 public dns fetched from Amazon}
33
- role :web, {server-3 public dns fetched from Amazon}
34
- end
34
+ task :web do
35
+ role :web, {server-1 public dns fetched from Amazon}, :cron=>true, :resque=>true
36
+ role :web, {server-3 public dns fetched from Amazon}
37
+ end
38
+ ```
35
39
 
36
40
  Additionally
37
41
 
38
- require "capify-ec2/capistrano"
39
- ec2_roles :db
42
+ ```ruby
43
+ require "capify-ec2/capistrano"
44
+ ec2_roles :db
45
+ ```
40
46
 
41
47
  Will generate
42
48
 
43
- task :server-2 do
44
- role :db, {server-2 public dns fetched from Amazon}
45
- end
49
+ ```ruby
50
+ task :server-2 do
51
+ role :db, {server-2 public dns fetched from Amazon}
52
+ end
46
53
 
47
- task :server-3 do
48
- role :db, {server-3 public dns fetched from Amazon}
49
- end
54
+ task :server-3 do
55
+ role :db, {server-3 public dns fetched from Amazon}
56
+ end
50
57
 
51
- task :db do
52
- role :db, {server-2 public dns fetched from Amazon}
53
- role :db, {server-3 public dns fetched from Amazon}
54
- end
58
+ task :db do
59
+ role :db, {server-2 public dns fetched from Amazon}
60
+ role :db, {server-3 public dns fetched from Amazon}
61
+ end
62
+ ```
55
63
 
56
64
  Running
57
65
 
58
- cap web date
66
+ ```ruby
67
+ cap web date
68
+ ```
59
69
 
60
70
  will run the date command on all server's tagged with the web role
61
71
 
62
72
  Running
63
73
 
64
- cap server-1 ec2:register-instance -s loadbalancer=elb-1
74
+ ```ruby
75
+ cap server-1 ec2:register-instance -s loadbalancer=elb-1
76
+ ```
65
77
 
66
78
  will register server-1 to be used by elb-1
67
79
 
68
80
  Running
69
81
 
70
- cap server-1 ec2:deregister-instance
82
+ ```ruby
83
+ cap server-1 ec2:deregister-instance
84
+ ```
71
85
 
72
86
  will remove server-1 from whatever instance it is currently
73
87
  registered against.
74
88
 
75
89
  Running
76
-
77
- cap ec2:status
78
90
 
91
+ ```ruby
92
+ cap ec2:status
93
+ ```
79
94
 
80
95
  will list the currently running servers and their associated details
81
96
  (public dns, instance id, roles etc)
82
97
 
83
98
  Running
84
99
 
85
- cap ec2:ssh #
100
+ ```ruby
101
+ cap ec2:ssh #
102
+ ```
86
103
 
87
104
  will launch ssh using the user and port specified in your configuration.
88
105
  The # argument is the index of the server to ssh into. Use the 'ec2:status'
@@ -91,37 +108,47 @@ command to see the list of servers with their indices.
91
108
  More options
92
109
  ====================================================
93
110
 
94
- ec2_roles {:name=>"web", :options=>{:cron=>"server-1"}}
111
+ In addition to specifying options (e.g. 'cron') at the server level, it is also possible to specify it at the project level.
112
+ Use with caution! This does not work with autoscaling.
113
+
114
+ ```ruby
115
+ ec2_roles {:name=>"web", :options=>{:cron=>"server-1"}}
116
+ ```
95
117
 
96
118
  Will generate
97
119
 
98
- task :server-1 do
99
- role :web, {server-1 public dns fetched from Amazon}, :cron=>true
100
- end
120
+ ```ruby
121
+ task :server-1 do
122
+ role :web, {server-1 public dns fetched from Amazon}, :cron=>true
123
+ end
101
124
 
102
- task :server-3 do
103
- role :web, {server-1 public dns fetched from Amazon}
104
- end
125
+ task :server-3 do
126
+ role :web, {server-1 public dns fetched from Amazon}
127
+ end
105
128
 
106
- task :web do
107
- role :web, {server-1 public dns fetched from Amazon}, :cron=>true
108
- role :web, {server-3 public dns fetched from Amazon}
109
- end
129
+ task :web do
130
+ role :web, {server-1 public dns fetched from Amazon}, :cron=>true
131
+ role :web, {server-3 public dns fetched from Amazon}
132
+ end
133
+ ```
110
134
 
111
135
  Which is cool if you want a task like this in deploy.rb
112
136
 
113
- task :update_cron => :web, :only=>{:cron} do
114
- Do something to a server with cron on it
115
- end
116
-
137
+ ```ruby
138
+ task :update_cron => :web, :only=>{:cron} do
139
+ Do something to a server with cron on it
140
+ end
117
141
 
118
142
  ec2_roles :name=>:web, :options=>{ :default => true }
143
+ ```
119
144
 
120
145
  Will make :web the default role so you can just type 'cap deploy'.
121
146
  Multiple roles can be defaults so:
122
147
 
148
+ ```ruby
123
149
  ec2_roles :name=>:web, :options=>{ :default => true }
124
150
  ec2_roles :name=>:app, :options=>{ :default => true }
151
+ ```
125
152
 
126
153
  would be the equivalent of 'cap app web deploy'
127
154
 
@@ -131,12 +158,14 @@ Ec2 config
131
158
  This gem requires 'config/ec2.yml' in your project.
132
159
  The yml file needs to look something like this:
133
160
 
134
- :aws_access_key_id: "YOUR ACCESS KEY"
135
- :aws_secret_access_key: "YOUR SECRET"
136
- :aws_params:
137
- :region: 'eu-west-1'
138
- :load_balanced: true
139
- :project_tag: "YOUR APP NAME"
161
+ ```ruby
162
+ :aws_access_key_id: "YOUR ACCESS KEY"
163
+ :aws_secret_access_key: "YOUR SECRET"
164
+ :aws_params:
165
+ :region: 'eu-west-1'
166
+ :load_balanced: true
167
+ :project_tag: "YOUR APP NAME"
168
+ ```
140
169
 
141
170
  The :aws_params are optional.
142
171
  If :load_balanced is set to true, the gem uses pre and post-deploy
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capify-ec2
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease: false
4
+ hash: 961915932
5
+ prerelease: true
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 15
10
- version: 1.1.15
9
+ - 16
10
+ - pre
11
+ version: 1.1.16.pre
11
12
  platform: ruby
12
13
  authors:
13
14
  - Noah Cantor
@@ -16,7 +17,7 @@ autorequire:
16
17
  bindir: bin
17
18
  cert_chain: []
18
19
 
19
- date: 2011-09-02 00:00:00 +01:00
20
+ date: 2011-09-23 00:00:00 +01:00
20
21
  default_executable:
21
22
  dependencies:
22
23
  - !ruby/object:Gem::Dependency
@@ -108,12 +109,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
109
  required_rubygems_version: !ruby/object:Gem::Requirement
109
110
  none: false
110
111
  requirements:
111
- - - ">="
112
+ - - ">"
112
113
  - !ruby/object:Gem::Version
113
- hash: 3
114
+ hash: 25
114
115
  segments:
115
- - 0
116
- version: "0"
116
+ - 1
117
+ - 3
118
+ - 1
119
+ version: 1.3.1
117
120
  requirements: []
118
121
 
119
122
  rubyforge_project: capify-ec2