deprec 2.2.0 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +9 -1
- data/docs/README.rails +19 -13
- data/lib/deprec/TODO.txt +6 -0
- data/lib/deprec/callbacks/asset_pipeline.rb +68 -0
- data/lib/deprec/capistrano_extensions.rb +0 -10
- data/lib/deprec/rake.rb +10 -0
- data/lib/deprec/rake/db.rake +37 -0
- data/lib/deprec/rake/environments.rake +9 -0
- data/lib/deprec/recipes/deprec.rb +8 -1
- data/lib/deprec/recipes/passenger.rb +8 -0
- data/lib/deprec/recipes/users.rb +18 -5
- data/lib/deprec/templates/haproxy/haproxy.cfg.erb +23 -5
- data/lib/deprec/templates/passenger/apache_vhost.erb +50 -26
- metadata +7 -2
data/CHANGELOG
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# deprec changelog
|
2
2
|
|
3
|
-
= 2.2.1 (Jul
|
3
|
+
= 2.2.1 (Jul 15, 2011)
|
4
|
+
|
5
|
+
* deprec now provides rake tasks
|
6
|
+
|
7
|
+
Just add this to your Rakefile
|
8
|
+
|
9
|
+
require 'deprec/rake'
|
10
|
+
|
11
|
+
= 2.2.0 (Jul 10, 2011)
|
4
12
|
|
5
13
|
* First release since rewrite of http://deprec.org
|
6
14
|
* Tidy up of various recipes
|
data/docs/README.rails
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Install Ruby on Rails app with deprec
|
2
|
+
=====================================
|
3
3
|
|
4
|
-
|
4
|
+
The rack recipes should work with any rack app.
|
5
5
|
|
6
|
-
|
7
|
-
depify .
|
8
|
-
# Edit config/deploy.rb
|
9
|
-
cap deprec:rails:install_stack
|
6
|
+
*Quickstart*
|
10
7
|
|
11
|
-
|
12
|
-
# database server that has already been installed.
|
13
|
-
cap deprec:db:install
|
8
|
+
$ cap deprec:rack:install_stack
|
14
9
|
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
$ cd your_rails_app
|
11
|
+
$ depify .
|
12
|
+
# Edit config/deploy.rb and config/deploy/uat.rb
|
13
|
+
|
14
|
+
# WARNING! Don't run the following command if you are using a shared
|
15
|
+
# database server that has already been installed.
|
16
|
+
$ cap deprec:db:install
|
17
|
+
|
18
|
+
$ cap deploy:setup HOSTS=mbailey@uat
|
19
|
+
|
20
|
+
$ cap deprec:rack:config HOSTS=mbailey@uat
|
21
|
+
|
22
|
+
# ssh to git@github.com from uat and accept hostkey
|
23
|
+
$ cap deploy
|
data/lib/deprec/TODO.txt
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# Copyright 2011 Chris Griego
|
2
|
+
#
|
3
|
+
# Capistrano::Configuration.instance(:must_exist).load do
|
4
|
+
# require 'capistrano/recipes/deploy'
|
5
|
+
|
6
|
+
def _cset(name, *args, &block)
|
7
|
+
unless exists?(name)
|
8
|
+
set(name, *args, &block)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
_cset :asset_env, "RAILS_GROUPS=assets"
|
13
|
+
_cset :rails_env, "production"
|
14
|
+
|
15
|
+
# rails-3.1 does not use asset timestamps
|
16
|
+
set :normalize_asset_timestamps, false
|
17
|
+
|
18
|
+
after 'deploy:update_code', 'deploy:assets:symlink'
|
19
|
+
after 'deploy:update_code', 'deploy:assets:precompile'
|
20
|
+
|
21
|
+
namespace :deploy do
|
22
|
+
namespace :assets do
|
23
|
+
desc <<-DESC
|
24
|
+
[internal] This task will set up a symlink to the shared directory \
|
25
|
+
for the assets directory. Assets are shared across deploys to avoid \
|
26
|
+
mid-deploy mismatches between old application html asking for assets \
|
27
|
+
and getting a 404 file not found error.
|
28
|
+
DESC
|
29
|
+
task :symlink, :roles => :web, :except => { :no_release => true } do
|
30
|
+
run <<-CMD
|
31
|
+
rm -rf #{latest_release}/public/assets &&
|
32
|
+
mkdir -p #{latest_release}/public &&
|
33
|
+
mkdir -p #{shared_path}/assets &&
|
34
|
+
ln -s #{shared_path}/assets #{latest_release}/public/assets
|
35
|
+
CMD
|
36
|
+
end
|
37
|
+
|
38
|
+
desc <<-DESC
|
39
|
+
Run the asset precompilation rake task. You can specify the full path \
|
40
|
+
to the rake executable by setting the rake variable. You can also \
|
41
|
+
specify additional environment variables to pass to rake via the \
|
42
|
+
asset_env variable. The defaults are:
|
43
|
+
|
44
|
+
set :rake, "rake"
|
45
|
+
set :rails_env, "production"
|
46
|
+
set :asset_env, "RAILS_GROUPS=assets"
|
47
|
+
DESC
|
48
|
+
task :precompile, :roles => :web, :except => { :no_release => true } do
|
49
|
+
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile"
|
50
|
+
end
|
51
|
+
|
52
|
+
desc <<-DESC
|
53
|
+
Run the asset clean rake task. Use with caution, this will delete \
|
54
|
+
all of your compiled assets. You can specify the full path \
|
55
|
+
to the rake executable by setting the rake variable. You can also \
|
56
|
+
specify additional environment variables to pass to rake via the \
|
57
|
+
asset_env variable. The defaults are:
|
58
|
+
|
59
|
+
set :rake, "rake"
|
60
|
+
set :rails_env, "production"
|
61
|
+
set :asset_env, "RAILS_GROUPS=assets"
|
62
|
+
DESC
|
63
|
+
task :clean, :roles => :web, :except => { :no_release => true } do
|
64
|
+
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:clean"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -390,16 +390,6 @@ module Deprec2
|
|
390
390
|
end
|
391
391
|
end
|
392
392
|
|
393
|
-
# deprecated...I don't see any need for this
|
394
|
-
# Set the value if not already set
|
395
|
-
# This method is accessible to all recipe files
|
396
|
-
def self.default(name, *args, &block)
|
397
|
-
puts "********** deprecation warning **********"
|
398
|
-
puts "Could you use set() instead of default()?"
|
399
|
-
puts "*****************************************"
|
400
|
-
set(name, *args, &block) unless exists?(name)
|
401
|
-
end
|
402
|
-
|
403
393
|
private
|
404
394
|
|
405
395
|
##
|
data/lib/deprec/rake.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'find'
|
2
|
+
namespace :deprec do
|
3
|
+
|
4
|
+
namespace :db do
|
5
|
+
|
6
|
+
# Task written by Craig Ambrose <craigambrose.com>
|
7
|
+
desc "Backup the database to a file. Options: DIR=backup_dir RAILS_ENV=production MAX=20"
|
8
|
+
task :backup => :environment do
|
9
|
+
unless defined? RAILS_ENV
|
10
|
+
RAILS_ENV = ENV['RAILS_ENV'] ||= 'development'
|
11
|
+
end
|
12
|
+
max_backups = (ENV['MAX'] || 20).to_i
|
13
|
+
datestamp = Time.now.strftime("%Y%m%d-%H%M%S")
|
14
|
+
backup_dir = ENV['DIR'] || "db/backups"
|
15
|
+
backup_file = File.join(backup_dir, "#{RAILS_ENV}-#{datestamp}.sql.gz")
|
16
|
+
FileUtils.mkdir_p(backup_dir)
|
17
|
+
db_config = ActiveRecord::Base.configurations[RAILS_ENV]
|
18
|
+
pass = ''
|
19
|
+
pass = '-p' + db_config['password'] if db_config['password']
|
20
|
+
sh "mysqldump -u #{db_config['username']} #{pass} #{db_config['database']} -Q --add-drop-table -O add-locks=FALSE -O lock-tables=FALSE | gzip -c > #{backup_file}"
|
21
|
+
puts "Created backup: #{backup_file}"
|
22
|
+
dir = Dir.new(backup_dir)
|
23
|
+
all_backups = dir.entries[2..-1].sort.reverse
|
24
|
+
unwanted_backups = all_backups[max_backups..-1] || []
|
25
|
+
for unwanted_backup in unwanted_backups
|
26
|
+
FileUtils.rm_rf(File.join(backup_dir, unwanted_backup))
|
27
|
+
puts "deleted #{unwanted_backup}"
|
28
|
+
end
|
29
|
+
puts "Deleted #{unwanted_backups.length} backups, #{all_backups.length - unwanted_backups.length} backups available"
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "Restore database"
|
33
|
+
task :restore => :environment do
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# This coolness is from Chris Wanstrath
|
2
|
+
# http://errtheblog.com/posts/31-rake-around-the-rosie
|
3
|
+
|
4
|
+
%w(development production staging testing).each do |env|
|
5
|
+
desc "Runs the following task in the #{env} environment"
|
6
|
+
task env.to_sym do
|
7
|
+
RAILS_ENV = ENV['RAILS_ENV'] = env
|
8
|
+
end
|
9
|
+
end
|
@@ -3,11 +3,18 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
3
3
|
|
4
4
|
# Set the value if not already set
|
5
5
|
# This method is accessible to all recipe files
|
6
|
-
|
6
|
+
# Defined and used by capistrano/deploy tasks
|
7
|
+
def _cset(name, *args, &block)
|
7
8
|
unless exists?(name)
|
8
9
|
set(name, *args, &block)
|
9
10
|
end
|
10
11
|
end
|
12
|
+
|
13
|
+
# deprecated
|
14
|
+
alias :default :_cset
|
15
|
+
|
16
|
+
# _cset :rake, 'rake'
|
17
|
+
_cset :rake, 'rakes'
|
11
18
|
|
12
19
|
# Deprec checks here for local versions of config templates before it's own
|
13
20
|
set :local_template_dir, File.join('config','templates')
|
@@ -19,6 +19,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
19
19
|
set :passenger_pool_idle_time, 300
|
20
20
|
set :passenger_rails_autodetect, 'on'
|
21
21
|
set :passenger_rails_spawn_method, 'smart' # smart | conservative
|
22
|
+
set :passenger_redirect_to_canonical_hostname, true
|
23
|
+
set(:passenger_server_alii) {
|
24
|
+
if domain =~ /^www\./
|
25
|
+
domain.sub 'www.', ''
|
26
|
+
else
|
27
|
+
"www.#{domain}"
|
28
|
+
end
|
29
|
+
}
|
22
30
|
|
23
31
|
desc "Install Passenger"
|
24
32
|
task :install, :roles => :app do
|
data/lib/deprec/recipes/users.rb
CHANGED
@@ -3,13 +3,25 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
3
3
|
namespace :deprec do
|
4
4
|
namespace :users do
|
5
5
|
|
6
|
-
set(:users_target_user) {
|
7
|
-
|
8
|
-
|
6
|
+
set(:users_target_user) {
|
7
|
+
Capistrano::CLI.ui.ask "Enter userid" do |q|
|
8
|
+
q.default = current_user;
|
9
|
+
end
|
10
|
+
}
|
11
|
+
set(:users_target_group) {
|
12
|
+
Capistrano::CLI.ui.ask "Enter group name for new user" do |q|
|
13
|
+
q.default = users_target_user;
|
14
|
+
end
|
15
|
+
}
|
16
|
+
set(:users_make_admin) {
|
17
|
+
Capistrano::CLI.ui.ask "Should this be an admin account?" do |q|
|
18
|
+
q.default = 'no';
|
19
|
+
end
|
20
|
+
}
|
9
21
|
|
10
22
|
desc "Create account"
|
11
23
|
task :add do
|
12
|
-
[users_target_user, users_make_admin] # get input
|
24
|
+
[users_target_user, users_target_group, users_make_admin] # get input
|
13
25
|
new_password = get_new_password
|
14
26
|
|
15
27
|
# Grab a list of all users with keys
|
@@ -19,7 +31,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
19
31
|
|
20
32
|
Array(users_target_user).each do |user|
|
21
33
|
|
22
|
-
deprec2.
|
34
|
+
deprec2.groupadd(users_target_group)
|
35
|
+
deprec2.useradd(user, :group => group, :shell => '/bin/bash')
|
23
36
|
deprec2.invoke_with_input("passwd #{user}", /UNIX password/, new_password)
|
24
37
|
|
25
38
|
if users_make_admin.match(/y/i)
|
@@ -10,13 +10,16 @@ global
|
|
10
10
|
pidfile /var/run/haproxy.pid
|
11
11
|
daemon
|
12
12
|
|
13
|
+
|
13
14
|
defaults
|
14
|
-
|
15
|
+
# Stats page at /haproxy?stats
|
15
16
|
stats enable
|
16
|
-
stats auth
|
17
|
-
|
18
|
-
option httpclose
|
17
|
+
stats auth admin:secret
|
18
|
+
|
19
19
|
mode http
|
20
|
+
option forwardfor # Adds X-Forwarded-For header to http reqs
|
21
|
+
option httpclose # Needed for forwardfor
|
22
|
+
balance roundrobin
|
20
23
|
retries 3
|
21
24
|
option redispatch
|
22
25
|
maxconn 2000
|
@@ -24,8 +27,23 @@ defaults
|
|
24
27
|
clitimeout 50000
|
25
28
|
srvtimeout 50000
|
26
29
|
|
27
|
-
|
30
|
+
|
31
|
+
frontend web *:80
|
32
|
+
|
33
|
+
acl www hdr_beg(host) -i www
|
34
|
+
|
35
|
+
acl ip_local src 192.168.0.0/24
|
36
|
+
|
37
|
+
use_backend example_lb if www ip_local
|
38
|
+
|
39
|
+
default_backend localhost
|
40
|
+
|
41
|
+
|
42
|
+
backend example_lb
|
28
43
|
option httpchk HEAD /check.txt HTTP/1.0
|
29
44
|
server web1 127.0.0.1:80 weight 6 maxconn 12 check # cookie A
|
30
45
|
server web2 127.0.0.1:80 weight 10 maxconn 12 check # cookie B
|
31
46
|
|
47
|
+
|
48
|
+
backend localhost
|
49
|
+
server LOCALHOST 127.0.0.1:80
|
@@ -1,28 +1,52 @@
|
|
1
|
-
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
ServerAlias <%=
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
<IfModule passenger_module>
|
2
|
+
<VirtualHost *:80>
|
3
|
+
|
4
|
+
ServerName <%= domain %>
|
5
|
+
<%- Array(passenger_server_alii).each do |server_alias| -%>
|
6
|
+
ServerAlias <%= server_alias %>
|
7
|
+
<%- end -%>
|
8
|
+
|
9
|
+
<%- if passenger_redirect_to_canonical_hostname -%>
|
10
|
+
# Redirect to canonical hostname
|
11
|
+
RewriteEngine On
|
12
|
+
RewriteCond %{HTTP_HOST} !^<%= domain.gsub('.','\.') %> [NC]
|
13
|
+
RewriteCond %{HTTP_HOST} !^$
|
14
|
+
RewriteRule ^/?(.*) http://<%= domain %>/$1 [L,R=301,NE]
|
15
|
+
<%- end -%>
|
16
|
+
|
17
|
+
DocumentRoot <%= passenger_document_root %>
|
18
|
+
<Directory <%= passenger_document_root %>>
|
19
|
+
Allow from all
|
20
|
+
Options -MultiViews
|
21
|
+
</Directory>
|
22
|
+
|
23
|
+
CustomLog <%= apache_log_dir %>/<%= application %>-access.log combined
|
24
|
+
ErrorLog <%= apache_log_dir %>/<%= application %>-error.log
|
11
25
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
</IfModule>
|
26
|
+
RackEnv <%= rack_env %>
|
27
|
+
RailsEnv <%= rack_env %>
|
28
|
+
|
29
|
+
# Enable caching of assets containing a fingerprint
|
30
|
+
# Browsers need never check for newer versions of an
|
31
|
+
# asset because the fingerprint would be different.
|
32
|
+
<FilesMatch "/assets/[^.]+-[a-z0-9]{32}\.">
|
33
|
+
# Add far-future expiration dates
|
34
|
+
<IfModule mod_expires.c>
|
35
|
+
ExpiresActive On
|
36
|
+
ExpiresDefault "access plus 10 years"
|
37
|
+
</IfModule>
|
38
|
+
# Disable ETags
|
39
|
+
<IfModule mod_expires.c>
|
40
|
+
Header unset "ETag"
|
41
|
+
</IfModule>
|
42
|
+
</FilesMatch>
|
28
43
|
|
44
|
+
# Check for maintenance file and redirect all requests
|
45
|
+
RewriteEngine On
|
46
|
+
RewriteCond %{REQUEST_URI} !\.(css|jpg|png|gif)$
|
47
|
+
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
|
48
|
+
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
|
49
|
+
RewriteRule ^.*$ /system/maintenance.html [L]
|
50
|
+
|
51
|
+
</VirtualHost>
|
52
|
+
</IfModule>
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: deprec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.2.
|
5
|
+
version: 2.2.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mike Bailey
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-14 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capistrano
|
@@ -59,6 +59,8 @@ files:
|
|
59
59
|
- docs/nagios.txt
|
60
60
|
- lib/deprec_cmd_completion.sh
|
61
61
|
- lib/deprec_minus_rails.rb
|
62
|
+
- lib/deprec/rake.rb
|
63
|
+
- lib/deprec/TODO.txt
|
62
64
|
- lib/deprec/recipes.rb
|
63
65
|
- lib/deprec/capistrano_extensions.rb
|
64
66
|
- lib/deprec/recipes/deprecated.rb
|
@@ -253,7 +255,10 @@ files:
|
|
253
255
|
- lib/deprec/templates/bash/bash_global
|
254
256
|
- lib/deprec/templates/ddclient/ddclient.erb
|
255
257
|
- lib/deprec/templates/ddclient/ddclient.conf.erb
|
258
|
+
- lib/deprec/callbacks/asset_pipeline.rb
|
256
259
|
- lib/deprec/recipes_minus_rails.rb
|
260
|
+
- lib/deprec/rake/db.rake
|
261
|
+
- lib/deprec/rake/environments.rake
|
257
262
|
- lib/vmbuilder_plugins/all.rb
|
258
263
|
- lib/vmbuilder_plugins/apt.rb
|
259
264
|
- lib/vmbuilder_plugins/emerge.rb
|