visfleet-deprec 2.1.4 → 2.1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/TODO +2 -0
- data/lib/deprec/recipes/rails.rb +10 -4
- data/lib/deprec/recipes/rails.rb.orig +337 -0
- data/lib/deprec/recipes/ruby/mri.rb +1 -1
- metadata +20 -7
data/CHANGELOG
CHANGED
data/TODO
ADDED
data/lib/deprec/recipes/rails.rb
CHANGED
@@ -83,14 +83,20 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
83
83
|
end
|
84
84
|
|
85
85
|
task :install_deps do
|
86
|
-
|
86
|
+
apps = case db_server_type
|
87
|
+
when :mysql then 'libmysqlclient15-dev'
|
88
|
+
when :postgresql then 'libpq-dev'
|
89
|
+
when :sqlite then 'sqlite3 libsqlite3-ruby libsqlite3-dev'
|
90
|
+
else 'libmysqlclient15-dev sqlite3 libsqlite3-ruby libsqlite3-dev libpq-dev'
|
91
|
+
end
|
92
|
+
apt.install( {:base => apps}, :stable )
|
87
93
|
end
|
88
94
|
|
89
95
|
# install some required ruby gems
|
90
96
|
task :install_gems do
|
91
|
-
gem2.install 'sqlite3-ruby'
|
92
|
-
gem2.install 'mysql'
|
93
|
-
gem2.install 'ruby-pg'
|
97
|
+
gem2.install 'sqlite3-ruby' if db_server_type == :sqlite
|
98
|
+
gem2.install 'mysql' if db_server_type == :mysql
|
99
|
+
gem2.install 'ruby-pg' if db_server_type == :postgresql
|
94
100
|
gem2.install 'rails'
|
95
101
|
gem2.install 'rake'
|
96
102
|
gem2.install 'rspec'
|
@@ -0,0 +1,337 @@
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
3
|
+
|
4
|
+
set :app_user_prefix, 'app_'
|
5
|
+
set(:app_user) { app_user_prefix + application }
|
6
|
+
set :app_group_prefix, 'app_'
|
7
|
+
set(:app_group) { app_group_prefix + application }
|
8
|
+
set(:app_user_homedir) { deploy_to }
|
9
|
+
set :database_yml_in_scm, true
|
10
|
+
set :app_symlinks, nil
|
11
|
+
set :rails_env, 'production'
|
12
|
+
set :gems_for_project, nil # Array of gems to be installed for app
|
13
|
+
set :packages_for_project, nil # Array of packages to be installed for app
|
14
|
+
set :shared_dirs, nil # Array of directories that should be created under shared/
|
15
|
+
# and linked to in the project
|
16
|
+
|
17
|
+
# Hook into the default capistrano deploy tasks
|
18
|
+
before 'deploy:setup', :except => { :no_release => true } do
|
19
|
+
top.deprec.rails.setup_user_perms
|
20
|
+
top.deprec.rails.create_app_user_and_group
|
21
|
+
top.deprec.rails.setup_paths
|
22
|
+
top.deprec.rails.setup_shared_dirs
|
23
|
+
top.deprec.rails.install_packages_for_project
|
24
|
+
top.deprec.rails.install_gem_sources_for_project
|
25
|
+
top.deprec.rails.install_gems_for_project
|
26
|
+
end
|
27
|
+
|
28
|
+
after 'deploy:setup', :except => { :no_release => true } do
|
29
|
+
top.deprec.rails.create_config_dir
|
30
|
+
top.deprec.rails.config_gen
|
31
|
+
top.deprec.rails.config
|
32
|
+
top.deprec.rails.activate_services
|
33
|
+
top.deprec.rails.set_perms_on_shared_and_releases
|
34
|
+
top.deprec.web.reload
|
35
|
+
top.deprec.rails.setup_database
|
36
|
+
end
|
37
|
+
|
38
|
+
after 'deploy:symlink', :roles => :app do
|
39
|
+
top.deprec.rails.symlink_shared_dirs
|
40
|
+
top.deprec.rails.symlink_database_yml unless database_yml_in_scm
|
41
|
+
top.deprec.rails.make_writable_by_app
|
42
|
+
top.deprec.passenger.set_owner_of_environment_rb if app_server_type.to_s == 'passenger'
|
43
|
+
end
|
44
|
+
|
45
|
+
after :deploy, "deploy:cleanup"
|
46
|
+
|
47
|
+
namespace :rake do
|
48
|
+
namespace :gems do
|
49
|
+
task :install, :roles => :app do
|
50
|
+
run "cd #{current_path} && #{sudo} rake gems:install"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
namespace :db do
|
55
|
+
task :migrate, :roles => :db do
|
56
|
+
run "cd #{current_path} && #{sudo} rake gems:install"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
namespace :deprec do
|
61
|
+
namespace :rails do
|
62
|
+
|
63
|
+
#
|
64
|
+
# If database.yml is not kept in scm and it is present in local
|
65
|
+
# config dir then push it out to server.
|
66
|
+
#
|
67
|
+
before 'deprec:rails:symlink_database_yml', :roles => :app do
|
68
|
+
push_database_yml unless database_yml_in_scm
|
69
|
+
end
|
70
|
+
|
71
|
+
task :setup_database, :roles => :db do
|
72
|
+
if ! roles[:db].servers.empty? # Some apps don't use database!
|
73
|
+
deprec2.read_database_yml
|
74
|
+
top.deprec.db.create_user
|
75
|
+
top.deprec.db.create_database
|
76
|
+
top.deprec.db.grant_user_access_to_database
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
task :install, :roles => :app do
|
81
|
+
install_deps
|
82
|
+
install_gems
|
83
|
+
end
|
84
|
+
|
85
|
+
task :install_deps do
|
86
|
+
apt.install( {:base => %w(libmysqlclient15-dev sqlite3 libsqlite3-ruby libsqlite3-dev libpq-dev)}, :stable )
|
87
|
+
end
|
88
|
+
|
89
|
+
# install some required ruby gems
|
90
|
+
task :install_gems do
|
91
|
+
gem2.install 'sqlite3-ruby'
|
92
|
+
gem2.install 'mysql'
|
93
|
+
gem2.install 'ruby-pg'
|
94
|
+
gem2.install 'rails'
|
95
|
+
gem2.install 'rake'
|
96
|
+
gem2.install 'rspec'
|
97
|
+
end
|
98
|
+
|
99
|
+
desc <<-DESC
|
100
|
+
Install full rails stack on a stock standard ubuntu server (7.10, 8.04)
|
101
|
+
DESC
|
102
|
+
task :install_stack do
|
103
|
+
|
104
|
+
top.deprec.ruby.install
|
105
|
+
top.deprec.rails.install
|
106
|
+
top.deprec.svn.install
|
107
|
+
top.deprec.git.install
|
108
|
+
top.deprec.web.install # Uses value of web_server_type
|
109
|
+
top.deprec.app.install # Uses value of app_server_type
|
110
|
+
top.deprec.monit.install
|
111
|
+
top.deprec.logrotate.install
|
112
|
+
|
113
|
+
# We not longer install database server as part of this task.
|
114
|
+
# There is too much danger that someone will wreck an existing
|
115
|
+
# shared database.
|
116
|
+
#
|
117
|
+
# Install database server with:
|
118
|
+
#
|
119
|
+
# cap deprec:db:install
|
120
|
+
end
|
121
|
+
|
122
|
+
task :install_rails_stack do
|
123
|
+
puts "deprecated: this task is now called install_stack"
|
124
|
+
install_stack
|
125
|
+
end
|
126
|
+
|
127
|
+
desc "Generate config files for rails app."
|
128
|
+
task :config_gen do
|
129
|
+
top.deprec.web.config_gen_project
|
130
|
+
top.deprec.app.config_gen_project
|
131
|
+
end
|
132
|
+
|
133
|
+
desc "Push out config files for rails app."
|
134
|
+
task :config do
|
135
|
+
top.deprec.web.config_project
|
136
|
+
top.deprec.app.config_project
|
137
|
+
end
|
138
|
+
|
139
|
+
task :create_config_dir, :roles => :app do
|
140
|
+
deprec2.mkdir("#{shared_path}/config", :group => group, :mode => 0775, :via => :sudo)
|
141
|
+
end
|
142
|
+
|
143
|
+
# XXX This should be restricted a bit to limit what app can write to. - Mike
|
144
|
+
desc "set group ownership and permissions on dirs app server needs to write to"
|
145
|
+
task :make_writable_by_app, :roles => :app do
|
146
|
+
dirs = "#{shared_path} #{current_path}/tmp #{current_path}/public"
|
147
|
+
sudo "chgrp -R #{app_group} #{dirs}"
|
148
|
+
sudo "chmod -R g+w #{dirs}"
|
149
|
+
|
150
|
+
# set owner and group of log files
|
151
|
+
# XXX Factor out mongrel
|
152
|
+
files = ["#{mongrel_log_dir}/mongrel.log", "#{mongrel_log_dir}/#{rails_env}.log"]
|
153
|
+
files.each { |file|
|
154
|
+
sudo "touch #{file}"
|
155
|
+
sudo "chown #{app_user} #{file}"
|
156
|
+
sudo "chgrp #{app_group} #{file}"
|
157
|
+
sudo "chmod g+w #{file}"
|
158
|
+
}
|
159
|
+
end
|
160
|
+
|
161
|
+
desc "Create deployment group and add current user to it"
|
162
|
+
task :setup_user_perms, :roles => [:app, :web] do
|
163
|
+
deprec2.groupadd(group)
|
164
|
+
deprec2.add_user_to_group(user, group)
|
165
|
+
deprec2.groupadd(app_group)
|
166
|
+
deprec2.add_user_to_group(user, app_group)
|
167
|
+
# we've just added ourself to a group - need to teardown connection
|
168
|
+
# so that next command uses new session where we belong in group
|
169
|
+
deprec2.teardown_connections
|
170
|
+
end
|
171
|
+
|
172
|
+
desc "Create user and group for application to run as"
|
173
|
+
task :create_app_user_and_group, :roles => :app do
|
174
|
+
deprec2.groupadd(app_group)
|
175
|
+
deprec2.useradd(app_user, :group => app_group, :homedir => false)
|
176
|
+
# Set the primary group for the user the application runs as (in case
|
177
|
+
# user already existed when previous command was run)
|
178
|
+
sudo "usermod --gid #{app_group} --home #{app_user_homedir} #{app_user}"
|
179
|
+
end
|
180
|
+
|
181
|
+
task :set_perms_on_shared_and_releases, :roles => :app do
|
182
|
+
releases = File.join(deploy_to, 'releases')
|
183
|
+
sudo "chgrp -R #{group} #{shared_path} #{releases}"
|
184
|
+
sudo "chmod -R g+w #{shared_path} #{releases}"
|
185
|
+
end
|
186
|
+
|
187
|
+
# Setup database server.
|
188
|
+
task :setup_db, :roles => :db, :only => { :primary => true } do
|
189
|
+
top.deprec.mysql.setup
|
190
|
+
end
|
191
|
+
|
192
|
+
# setup extra paths required for deployment
|
193
|
+
task :setup_paths, :roles => [:app, :web] do
|
194
|
+
deprec2.mkdir(deploy_to, :mode => 0775, :group => group, :via => :sudo)
|
195
|
+
deprec2.mkdir(shared_path, :mode => 0775, :group => group, :via => :sudo)
|
196
|
+
end
|
197
|
+
|
198
|
+
# Symlink list of files and dirs from shared to current
|
199
|
+
#
|
200
|
+
# XXX write up explanation
|
201
|
+
#
|
202
|
+
desc "Setup shared dirs"
|
203
|
+
task :setup_shared_dirs, :roles => [:app, :web] do
|
204
|
+
if shared_dirs
|
205
|
+
shared_dirs.each { |dir| deprec2.mkdir( "#{shared_path}/#{dir}", :via => :sudo ) }
|
206
|
+
end
|
207
|
+
end
|
208
|
+
#
|
209
|
+
desc "Symlink shared dirs."
|
210
|
+
task :symlink_shared_dirs, :roles => [:app, :web] do
|
211
|
+
if shared_dirs
|
212
|
+
shared_dirs.each do |dir|
|
213
|
+
path = File.split(dir)[0]
|
214
|
+
if path != '.'
|
215
|
+
deprec2.mkdir("#{current_path}/#{path}")
|
216
|
+
end
|
217
|
+
sudo "test -d #{current_path}/#{dir} && mv #{current_path}/#{dir} #{current_path}/#{dir}.moved_by_deprec; exit 0"
|
218
|
+
run "ln -nfs #{shared_path}/#{dir} #{current_path}/#{dir}"
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
task :install_packages_for_project, :roles => :app do
|
224
|
+
if packages_for_project
|
225
|
+
apt.install({ :base => packages_for_project }, :stable)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
task :install_gems_for_project, :roles => :app do
|
230
|
+
if gems_for_project
|
231
|
+
gems_for_project.each { |gem| gem2.install(gem) }
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
task :install_gem_sources_for_project, :roles => :app do
|
236
|
+
if gem_sources_for_project
|
237
|
+
gem_sources_for_project.each { |source| gem2.add_source(source) }
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
desc "Activate web, app and monit"
|
242
|
+
task :activate_services do
|
243
|
+
top.deprec.web.activate
|
244
|
+
top.deprec.app.activate
|
245
|
+
top.deprec.monit.activate
|
246
|
+
end
|
247
|
+
|
248
|
+
# database.yml stuff
|
249
|
+
#
|
250
|
+
# XXX DRY this up
|
251
|
+
# I don't know how to let :gen_db_yml check if values have been set.
|
252
|
+
#
|
253
|
+
# if (self.respond_to?("db_host_#{rails_env}".to_sym)) # doesn't seem to work
|
254
|
+
|
255
|
+
set :db_host_default, lambda { Capistrano::CLI.prompt 'Enter database host', 'localhost'}
|
256
|
+
set :db_host_staging, lambda { db_host_default }
|
257
|
+
set :db_host_production, lambda { db_host_default }
|
258
|
+
|
259
|
+
set :db_name_default, lambda { Capistrano::CLI.prompt 'Enter database name', "#{application}_#{rails_env}" }
|
260
|
+
set :db_name_staging, lambda { db_name_default }
|
261
|
+
set :db_name_production, lambda { db_name_default }
|
262
|
+
|
263
|
+
set :db_user_default, lambda { Capistrano::CLI.prompt 'Enter database user', 'root' }
|
264
|
+
set :db_user_staging, lambda { db_user_default }
|
265
|
+
set :db_user_production, lambda { db_user_default }
|
266
|
+
|
267
|
+
set :db_pass_default, lambda { Capistrano::CLI.prompt 'Enter database pass', '' }
|
268
|
+
set :db_pass_staging, lambda { db_pass_default }
|
269
|
+
set :db_pass_production, lambda { db_pass_default }
|
270
|
+
|
271
|
+
set :db_adaptor_default, lambda { Capistrano::CLI.prompt 'Enter database adaptor', 'mysql' }
|
272
|
+
set :db_adaptor_staging, lambda { db_adaptor_default }
|
273
|
+
set :db_adaptor_production, lambda { db_adaptor_default }
|
274
|
+
|
275
|
+
set :db_socket_default, lambda { Capistrano::CLI.prompt('Enter database socket', '')}
|
276
|
+
set :db_socket_staging, lambda { db_socket_default }
|
277
|
+
set :db_socket_production, lambda { db_socket_default }
|
278
|
+
|
279
|
+
task :generate_database_yml, :roles => :app do
|
280
|
+
database_configuration = render :template => <<-EOF
|
281
|
+
#{rails_env}:
|
282
|
+
adapter: #{self.send("db_adaptor_#{rails_env}")}
|
283
|
+
database: #{self.send("db_name_#{rails_env}")}
|
284
|
+
username: #{self.send("db_user_#{rails_env}")}
|
285
|
+
password: #{self.send("db_pass_#{rails_env}")}
|
286
|
+
host: #{self.send("db_host_#{rails_env}")}
|
287
|
+
socket: #{self.send("db_socket_#{rails_env}")}
|
288
|
+
EOF
|
289
|
+
run "mkdir -p #{deploy_to}/#{shared_dir}/config"
|
290
|
+
put database_configuration, "#{deploy_to}/#{shared_dir}/config/database.yml"
|
291
|
+
end
|
292
|
+
|
293
|
+
desc "Link in the production database.yml"
|
294
|
+
task :symlink_database_yml, :roles => :app do
|
295
|
+
run "#{sudo} ln -nfs #{shared_path}/config/database.yml #{current_path}/config/database.yml"
|
296
|
+
end
|
297
|
+
|
298
|
+
desc "Copy database.yml to shared/config/database.yml. Useful if not kept in scm"
|
299
|
+
task :push_database_yml, :roles => :app do
|
300
|
+
stage = exists?(:stage) ? fetch(:stage).to_s : ''
|
301
|
+
full_local_path = File.join('config', stage, 'database.yml')
|
302
|
+
if File.exists?(full_local_path)
|
303
|
+
std.su_put(File.read(full_local_path), "#{shared_path}/config/database.yml", '/tmp/')
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
end
|
308
|
+
|
309
|
+
namespace :database do
|
310
|
+
|
311
|
+
desc "Create database"
|
312
|
+
task :create, :roles => :app do
|
313
|
+
run "cd #{deploy_to}/current && rake db:create RAILS_ENV=#{rails_env}"
|
314
|
+
end
|
315
|
+
|
316
|
+
desc "Run database migrations"
|
317
|
+
task :migrate, :roles => :app do
|
318
|
+
run "cd #{deploy_to}/current && rake db:migrate RAILS_ENV=#{rails_env}"
|
319
|
+
end
|
320
|
+
|
321
|
+
desc "Run database migrations"
|
322
|
+
task :schema_load, :roles => :app do
|
323
|
+
run "cd #{deploy_to}/current && rake db:schema:load RAILS_ENV=#{rails_env}"
|
324
|
+
end
|
325
|
+
|
326
|
+
desc "Roll database back to previous migration"
|
327
|
+
task :rollback, :roles => :app do
|
328
|
+
run "cd #{deploy_to}/current && rake db:rollback RAILS_ENV=#{rails_env}"
|
329
|
+
end
|
330
|
+
|
331
|
+
end
|
332
|
+
|
333
|
+
end
|
334
|
+
|
335
|
+
end
|
336
|
+
|
337
|
+
|
@@ -6,7 +6,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
6
6
|
|
7
7
|
SRC_PACKAGES[:mri] = {
|
8
8
|
:md5sum => "18dcdfef761a745ac7da45b61776afa5 ruby-1.8.7-p174.tar.gz",
|
9
|
-
:url => "
|
9
|
+
:url => "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz",
|
10
10
|
:configure => "./configure --with-readline-dir=/usr/local;"
|
11
11
|
}
|
12
12
|
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visfleet-deprec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.4
|
4
|
+
version: 2.1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Bailey
|
8
|
+
- Rasheed Abdul-Aziz
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
12
|
|
12
|
-
date: 2009-10-
|
13
|
+
date: 2009-10-14 00:00:00 +13:00
|
13
14
|
default_executable: depify
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
@@ -22,8 +23,18 @@ dependencies:
|
|
22
23
|
- !ruby/object:Gem::Version
|
23
24
|
version: 2.5.0
|
24
25
|
version:
|
25
|
-
|
26
|
-
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: capistrano-ext
|
28
|
+
type: :runtime
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.2.1
|
35
|
+
version:
|
36
|
+
description: " This project provides libraries of Capistrano tasks and extensions to \n remove the repetative manual work associated with installing services \n on linux servers.\n \n This is Visfleet's augmented version.\n I've changed the email/homepage details to disassociate mbaily from our rubbish code.\n Apologies if this is poor form.\n\n Get the real version at http://github.com/mbailey/deprec\n\n Check the changlog for our efforts\n"
|
37
|
+
email: rasheed@visfleet.com
|
27
38
|
executables:
|
28
39
|
- depify
|
29
40
|
extensions: []
|
@@ -198,6 +209,7 @@ files:
|
|
198
209
|
- lib/deprec/recipes/sphinx.rb
|
199
210
|
- lib/deprec/recipes/svn.rb
|
200
211
|
- lib/deprec/recipes/ssh.rb
|
212
|
+
- lib/deprec/recipes/rails.rb.orig
|
201
213
|
- lib/deprec/recipes/gitosis.rb
|
202
214
|
- lib/deprec/recipes/xen.rb
|
203
215
|
- lib/deprec/recipes/deprecated.rb
|
@@ -213,8 +225,9 @@ files:
|
|
213
225
|
- LICENSE
|
214
226
|
- README
|
215
227
|
- THANKS
|
228
|
+
- TODO
|
216
229
|
has_rdoc: true
|
217
|
-
homepage: http://
|
230
|
+
homepage: http://labs.visfleet.com/
|
218
231
|
licenses: []
|
219
232
|
|
220
233
|
post_install_message:
|
@@ -236,10 +249,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
249
|
version:
|
237
250
|
requirements: []
|
238
251
|
|
239
|
-
rubyforge_project:
|
252
|
+
rubyforge_project:
|
240
253
|
rubygems_version: 1.3.5
|
241
254
|
signing_key:
|
242
255
|
specification_version: 3
|
243
|
-
summary: deployment recipes for capistrano
|
256
|
+
summary: Vsifleet deployment recipes for capistrano
|
244
257
|
test_files: []
|
245
258
|
|