dew 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/dew +3 -3
- data/config/cucumber.yaml +4 -4
- data/features/create-ami.feature +1 -0
- data/lib/dew.rb +5 -0
- data/lib/dew/base_command.rb +0 -2
- data/lib/dew/cloud.rb +2 -2
- data/lib/dew/commands/deploy.rb +33 -9
- data/lib/dew/commands/deploy/templates/apache.conf.erb +2 -2
- data/lib/dew/models.rb +0 -1
- data/lib/dew/models/account.rb +3 -11
- data/lib/dew/models/server.rb +0 -2
- data/lib/dew/version.rb +1 -1
- data/spec/dew/cloud_spec.rb +4 -3
- data/spec/dew/models/account_spec.rb +2 -6
- data/spec/dew/models/deploy/puge_spec.rb +1 -1
- metadata +3 -5
data/bin/dew
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
require 'dew'
|
3
3
|
|
4
4
|
class DewCommand < DewBaseCommand
|
5
|
-
option ['-r', '--region'], "REGION", "AWS region", :default => 'ap-southeast-1'
|
6
|
-
option ['-a', '--account'], "ACCOUNT", "AWS account", :default => 'development'
|
5
|
+
option ['-r', '--region'], "REGION", "AWS region", :default => ENV['DEW_REGION'] || 'ap-southeast-1'
|
6
|
+
option ['-a', '--account'], "ACCOUNT", "AWS account", :default => ENV['DEW_ACCOUNT'] || 'development'
|
7
7
|
option ['-q', '--quiet'], :flag, "Quiet mode, disables logging", :default => false
|
8
|
-
option ['-v', '--verbose'], :flag, "Verbose mode, print debug output", :default =>
|
8
|
+
option ['-v', '--verbose'], :flag, "Verbose mode, print debug output", :default => ENV['DEW_VERBOSE']
|
9
9
|
option '--debug', :flag, "Show stacktraces on error", :default => false
|
10
10
|
option '--version', :flag, "Prints the dew version" do
|
11
11
|
puts "dew version #{Dew::VERSION}"
|
data/config/cucumber.yaml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
default: features -t~@wip -t~@slow
|
2
|
-
slow: features -t~@wip -t@slow
|
3
|
-
wip: features -t@wip
|
4
|
-
all: features -t~@wip
|
1
|
+
default: features -t~@wip -t~@slow -t~@disabled
|
2
|
+
slow: features -t~@wip -t@slow -t~@disabled
|
3
|
+
wip: features -t@wip -t~@disabled
|
4
|
+
all: features -t~@wip -t~@disabled
|
data/features/create-ami.feature
CHANGED
data/lib/dew.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
require 'clamp'
|
2
|
+
require 'gofer'
|
1
3
|
require 'inform'
|
2
4
|
require 'highline/import'
|
5
|
+
require 'opensrs'
|
3
6
|
require 'dew/version'
|
4
7
|
require 'dew/commands'
|
5
8
|
require 'dew/models'
|
@@ -7,3 +10,5 @@ require 'dew/controllers'
|
|
7
10
|
require 'dew/cloud'
|
8
11
|
require 'dew/view'
|
9
12
|
require 'dew/password'
|
13
|
+
require 'fog' # require fog last - slows down all other require calls
|
14
|
+
|
data/lib/dew/base_command.rb
CHANGED
data/lib/dew/cloud.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'opensrs'
|
1
|
+
# require 'opensrs'
|
2
2
|
|
3
3
|
class Cloud
|
4
4
|
|
@@ -72,7 +72,7 @@ class Cloud
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def dns
|
75
|
-
@dns ||= OpenSRS::Server.new(account.opensrs_credentials)
|
75
|
+
# @dns ||= OpenSRS::Server.new(account.opensrs_credentials)
|
76
76
|
end
|
77
77
|
|
78
78
|
private
|
data/lib/dew/commands/deploy.rb
CHANGED
@@ -52,12 +52,20 @@ class DeployCommand < Clamp::Command
|
|
52
52
|
env.remove_server_from_elb(server) if env.has_elb?
|
53
53
|
|
54
54
|
@ssh = server.ssh
|
55
|
+
is_redhat = ssh.exist?('/etc/redhat-release')
|
56
|
+
if is_redhat
|
57
|
+
Inform.info("RedHat server detected")
|
58
|
+
end
|
55
59
|
initial = !ssh.exist?(application_name)
|
56
60
|
|
57
61
|
Inform.info("%{app} doesn't exist - initial install", :app => application_name) if initial
|
58
62
|
|
59
63
|
Inform.info("Stopping apache") do
|
60
|
-
|
64
|
+
if is_redhat
|
65
|
+
ssh.run "sudo /etc/init.d/httpd stop"
|
66
|
+
else
|
67
|
+
ssh.run "sudo apache2ctl stop"
|
68
|
+
end
|
61
69
|
end
|
62
70
|
|
63
71
|
Inform.info("Obtaining version %{v} of %{app}", :v => revision, :app => application_name) do
|
@@ -70,17 +78,20 @@ class DeployCommand < Clamp::Command
|
|
70
78
|
ssh.run "git clone git@github.com:playup/#{application_name}.git #{application_name}"
|
71
79
|
else
|
72
80
|
Inform.debug("Updating %{app} repository", :app => application_name)
|
73
|
-
check_and_remove_rvmrc
|
81
|
+
check_and_remove_rvmrc unless is_redhat
|
74
82
|
ssh.run "cd #{application_name}; git fetch -q"
|
75
83
|
end
|
76
84
|
|
77
|
-
check_and_remove_rvmrc
|
85
|
+
check_and_remove_rvmrc unless is_redhat
|
78
86
|
Inform.debug("Checking out version %{version}", :version => revision)
|
79
87
|
ssh.run "cd #{application_name} && git checkout -q -f #{revision}"
|
80
|
-
check_and_remove_rvmrc
|
88
|
+
check_and_remove_rvmrc unless is_redhat
|
81
89
|
end
|
82
|
-
|
90
|
+
|
83
91
|
cd_and_rvm = "cd #{application_name} && . /usr/local/rvm/scripts/rvm && rvm use ruby-1.9.2 && RAILS_ENV=#{rails_env} "
|
92
|
+
if is_redhat
|
93
|
+
cd_and_rvm = "cd #{application_name} && RAILS_ENV=#{rails_env} "
|
94
|
+
end
|
84
95
|
|
85
96
|
Inform.info("Updating/installing gems") do
|
86
97
|
ssh.run cd_and_rvm + "bundle install --without development"
|
@@ -109,7 +120,11 @@ class DeployCommand < Clamp::Command
|
|
109
120
|
end
|
110
121
|
end
|
111
122
|
|
123
|
+
|
112
124
|
if use_ssl?
|
125
|
+
if is_redhat
|
126
|
+
raise "SSL not yet supported for redhat"
|
127
|
+
end
|
113
128
|
Inform.info "Enabling Mod SSL" do
|
114
129
|
ssh.run "sudo a2enmod ssl"
|
115
130
|
end
|
@@ -123,6 +138,9 @@ class DeployCommand < Clamp::Command
|
|
123
138
|
end
|
124
139
|
|
125
140
|
if gamej_proxy
|
141
|
+
if is_redhat
|
142
|
+
raise "gamej proxy not yet supported for redhat"
|
143
|
+
end
|
126
144
|
Inform.info "Enabling Mod Proxy" do
|
127
145
|
ssh.run "sudo a2enmod proxy"
|
128
146
|
ssh.run "sudo a2enmod proxy_http"
|
@@ -130,6 +148,7 @@ class DeployCommand < Clamp::Command
|
|
130
148
|
end
|
131
149
|
|
132
150
|
Inform.info("Starting application") do
|
151
|
+
conf_dest = is_redhat ? "/etc/httpd/conf.d/#{application_name}.conf" : "/etc/apache2/sites-available/#{application_name}"
|
133
152
|
if ssh.exist?('/etc/apache2/sites-enabled/000-default')
|
134
153
|
Inform.debug("Disabling default apache site")
|
135
154
|
ssh.run "sudo a2dissite default"
|
@@ -140,19 +159,24 @@ class DeployCommand < Clamp::Command
|
|
140
159
|
:use_ssl? => use_ssl?,
|
141
160
|
:server_name => server_name,
|
142
161
|
:rails_env => rails_env,
|
162
|
+
:log_dir => is_redhat ? '/var/log/httpd' : '/var/log/apache2',
|
143
163
|
:application_name => application_name,
|
144
164
|
:working_directory => "/home/ubuntu/#{application_name}",
|
145
165
|
:gamej_proxy => gamej_proxy
|
146
166
|
).instance_eval {binding})
|
147
167
|
ssh.write passenger_config, "/tmp/apache.conf"
|
148
|
-
ssh.run "sudo cp /tmp/apache.conf
|
149
|
-
ssh.run "sudo chmod 0644
|
150
|
-
unless ssh.exist?('/etc/apache2/sites-enabled/#{application_name}')
|
168
|
+
ssh.run "sudo cp /tmp/apache.conf #{conf_dest}"
|
169
|
+
ssh.run "sudo chmod 0644 #{conf_dest}" # yeah, I don't know why it gets written as 0600
|
170
|
+
unless is_redhat || ssh.exist?('/etc/apache2/sites-enabled/#{application_name}')
|
151
171
|
Inform.debug("Enabling site in apache")
|
152
172
|
ssh.run "sudo a2ensite #{application_name}"
|
153
173
|
end
|
154
174
|
Inform.debug("Restarting apache")
|
155
|
-
|
175
|
+
if is_redhat
|
176
|
+
ssh.run "sudo /etc/init.d/httpd start"
|
177
|
+
else
|
178
|
+
ssh.run "sudo apache2ctl start"
|
179
|
+
end
|
156
180
|
end
|
157
181
|
|
158
182
|
unless server_name || !use_passenger?
|
@@ -28,13 +28,13 @@
|
|
28
28
|
AddType text/x-component .htc
|
29
29
|
</Directory>
|
30
30
|
|
31
|
-
ErrorLog
|
31
|
+
ErrorLog <%= log_dir %>/<%= application_name %>-error.log
|
32
32
|
|
33
33
|
# Possible values include: debug, info, notice, warn, error, crit,
|
34
34
|
# alert, emerg.
|
35
35
|
LogLevel warn
|
36
36
|
|
37
|
-
CustomLog
|
37
|
+
CustomLog <%= log_dir %>/<%= application_name %>-access.log combined
|
38
38
|
|
39
39
|
<% if gamej_proxy %>
|
40
40
|
<Location /api>
|
data/lib/dew/models.rb
CHANGED
data/lib/dew/models/account.rb
CHANGED
@@ -27,23 +27,15 @@ class Account
|
|
27
27
|
def has_dns?
|
28
28
|
@yaml.include?('dns')
|
29
29
|
end
|
30
|
-
|
31
|
-
def
|
32
|
-
@yaml['dns']['
|
33
|
-
end
|
34
|
-
|
35
|
-
def dns_password
|
36
|
-
@yaml['dns']['password']
|
30
|
+
|
31
|
+
def dns_key
|
32
|
+
@yaml['dns']['key']
|
37
33
|
end
|
38
34
|
|
39
35
|
def dns_domain
|
40
36
|
@yaml['dns']['domain']
|
41
37
|
end
|
42
38
|
|
43
|
-
def dns_prefix
|
44
|
-
@yaml['dns']['prefix']
|
45
|
-
end
|
46
|
-
|
47
39
|
def initialize(yaml)
|
48
40
|
@yaml = yaml
|
49
41
|
end
|
data/lib/dew/models/server.rb
CHANGED
data/lib/dew/version.rb
CHANGED
data/spec/dew/cloud_spec.rb
CHANGED
@@ -95,9 +95,10 @@ describe :Cloud do
|
|
95
95
|
it { Cloud.has_dns?.should be_true }
|
96
96
|
|
97
97
|
it "should provide an OpenSRS DNS handle" do
|
98
|
-
|
99
|
-
|
100
|
-
|
98
|
+
pending
|
99
|
+
# Cloud.account.should_receive(:opensrs_credentials).and_return('opensrs creds')
|
100
|
+
# OpenSRS::Server.should_receive(:new).with('opensrs creds').and_return('server')
|
101
|
+
# Cloud.dns.should == 'server'
|
101
102
|
end
|
102
103
|
end
|
103
104
|
end
|
@@ -38,17 +38,13 @@ describe Account do
|
|
38
38
|
let (:yaml) {
|
39
39
|
"
|
40
40
|
dns:
|
41
|
-
username: bob
|
42
41
|
domain: mydomain.com
|
43
|
-
|
44
|
-
prefix: env
|
42
|
+
key: a1b2c3d4e5
|
45
43
|
"
|
46
44
|
}
|
47
45
|
it { subject.has_dns?.should be_true }
|
48
|
-
it { subject.
|
46
|
+
it { subject.dns_key.should == 'a1b2c3d4e5' }
|
49
47
|
it { subject.dns_domain.should == 'mydomain.com' }
|
50
|
-
it { subject.dns_password.should == 'steve' }
|
51
|
-
it { subject.dns_prefix.should == 'env' }
|
52
48
|
end
|
53
49
|
end
|
54
50
|
|
@@ -5,7 +5,7 @@ describe Deploy::Puge do
|
|
5
5
|
let (:tag) { 'puge-1.16.1' }
|
6
6
|
let (:rails_env) { 'development' }
|
7
7
|
let (:gofer) { double('Gofer').as_null_object }
|
8
|
-
let (:servers) { (0..1).map { |i| double("Server #{i}").as_null_object} }
|
8
|
+
let (:servers) { (0..1).map { |i| double("Server #{i}", :id => nil).as_null_object} }
|
9
9
|
let (:environment) {double('Environment', :servers => servers, :database => database)}
|
10
10
|
let (:opts) { { 'tag' => tag, 'rails_env' => rails_env } }
|
11
11
|
let (:run_on_servers) { servers }
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: dew
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- PlayUp Devops
|
@@ -10,8 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
14
|
-
default_executable:
|
13
|
+
date: 2011-07-13 00:00:00 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: inform
|
@@ -244,7 +243,6 @@ files:
|
|
244
243
|
- features/support/hooks.rb
|
245
244
|
- config/cucumber.yaml
|
246
245
|
- bin/dew
|
247
|
-
has_rdoc: true
|
248
246
|
homepage: http://github.com/playup/dew
|
249
247
|
licenses: []
|
250
248
|
|
@@ -268,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
266
|
requirements: []
|
269
267
|
|
270
268
|
rubyforge_project:
|
271
|
-
rubygems_version: 1.
|
269
|
+
rubygems_version: 1.8.3
|
272
270
|
signing_key:
|
273
271
|
specification_version: 3
|
274
272
|
summary: Uses fog to access the cloud
|