deprec 1.9.3 → 2.0.0
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/CHANGELOG +280 -0
- data/COPYING +19 -0
- data/LICENSE +339 -0
- data/README +152 -0
- data/THANKS +17 -0
- data/bin/depify +128 -0
- data/docs/EXAMPLE-installing_tracks.txt +41 -0
- data/docs/README.nagios +22 -0
- data/docs/README.rails +17 -0
- data/docs/config_gen_explained.txt +39 -0
- data/docs/{README.quickstart → deprec-1.x/deprec-1.x.quickstart} +4 -1
- data/docs/{building_edge_capistrano.txt → deprec-1.x/notes.txt} +6 -3
- data/docs/old/deprec_banner.gif +0 -0
- data/docs/windows_linux.txt +350 -0
- data/docs/xen/traffic_monitoring_with_vnstat.txt +95 -0
- data/docs/xen/xen-tools-notes.txt +31 -0
- data/docs/xen/xen_on_hardy.txt +39 -0
- data/lib/deprec.rb +8 -1
- data/lib/deprec/capistrano_extensions.rb +442 -0
- data/lib/deprec/recipes.rb +50 -233
- data/lib/deprec/recipes/aoe.rb +79 -0
- data/lib/deprec/recipes/app/mongrel.rb +213 -0
- data/lib/deprec/recipes/app/passenger.rb +197 -0
- data/lib/deprec/recipes/apt_mirror.rb +99 -0
- data/lib/deprec/recipes/ar_sendmail.rb +67 -0
- data/lib/deprec/recipes/canonical.rb +68 -0
- data/lib/deprec/recipes/db/mysql.rb +144 -0
- data/lib/deprec/recipes/db/postgresql.rb +104 -0
- data/lib/deprec/recipes/db/sqlite.rb +37 -0
- data/lib/deprec/recipes/ddclient.rb +51 -0
- data/lib/deprec/recipes/deprec.rb +199 -0
- data/lib/deprec/recipes/deprecated.rb +71 -0
- data/lib/deprec/recipes/example.rb +115 -0
- data/lib/deprec/recipes/git.rb +97 -0
- data/lib/deprec/recipes/gitosis.rb +48 -0
- data/lib/deprec/recipes/heartbeat.rb +138 -0
- data/lib/deprec/recipes/logrotate.rb +54 -0
- data/lib/deprec/recipes/lvm.rb +20 -0
- data/lib/deprec/recipes/memcache.rb +6 -2
- data/lib/deprec/recipes/monit.rb +143 -0
- data/lib/deprec/recipes/nagios.rb +305 -0
- data/lib/deprec/recipes/network.rb +93 -0
- data/lib/deprec/recipes/ntp.rb +103 -0
- data/lib/deprec/recipes/php.rb +58 -0
- data/lib/deprec/recipes/postfix.rb +115 -0
- data/lib/deprec/recipes/rails.rb +300 -55
- data/lib/deprec/recipes/ruby/mri.rb +55 -0
- data/lib/deprec/recipes/ruby/ree.rb +41 -0
- data/lib/deprec/recipes/sphinx.rb +86 -0
- data/lib/deprec/recipes/ssh.rb +85 -18
- data/lib/deprec/recipes/ssl.rb +55 -0
- data/lib/deprec/recipes/starling.rb +119 -0
- data/lib/deprec/recipes/svn.rb +163 -183
- data/lib/deprec/recipes/trac.rb +239 -62
- data/lib/deprec/recipes/ubuntu.rb +18 -100
- data/lib/deprec/recipes/users.rb +90 -0
- data/lib/deprec/recipes/utils.rb +58 -0
- data/lib/deprec/recipes/vnstat.rb +85 -0
- data/lib/deprec/recipes/web/apache.rb +119 -0
- data/lib/deprec/recipes/web/nginx.rb +172 -0
- data/lib/deprec/recipes/wordpress.rb +96 -0
- data/lib/deprec/recipes/wpmu.rb +103 -0
- data/lib/deprec/recipes/xen.rb +267 -0
- data/lib/deprec/recipes/xentools.rb +75 -0
- data/lib/deprec/templates/aoe/aoe-init +55 -0
- data/lib/deprec/templates/aoe/fence_aoemask +351 -0
- data/lib/deprec/templates/apache/namevirtualhosts.conf +5 -0
- data/lib/deprec/templates/apt/sources.list +18 -0
- data/lib/deprec/templates/apt_mirror/apt-mirror-cron +4 -0
- data/lib/deprec/templates/apt_mirror/mirror.list +33 -0
- data/lib/deprec/templates/ar_sendmail/logrotate.conf.erb +9 -0
- data/lib/deprec/templates/ar_sendmail/monit.conf.erb +5 -0
- data/lib/deprec/templates/ddclient/ddclient.conf.erb +11 -0
- data/lib/deprec/templates/ddclient/ddclient.erb +15 -0
- data/lib/deprec/templates/deprec/caprc.erb +14 -0
- data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
- data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
- data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
- data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
- data/lib/deprec/templates/mongrel/apache_vhost.erb +148 -0
- data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
- data/lib/deprec/{third_party/mongrel_cluster/resources/mongrel_cluster → templates/mongrel/mongrel_cluster-init-script} +19 -6
- data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
- data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
- data/lib/deprec/templates/mongrel/nginx_vhost.erb +41 -0
- data/lib/deprec/templates/monit/monit-init-script +104 -0
- data/lib/deprec/templates/monit/monitrc.erb +227 -0
- data/lib/deprec/templates/monit/nothing +0 -0
- data/lib/deprec/templates/mysql/create_databases.sql +20 -0
- data/lib/deprec/templates/mysql/database.yml.prod +6 -0
- data/lib/deprec/templates/mysql/database.yml.stage +6 -0
- data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
- data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
- data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
- data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
- data/lib/deprec/templates/nagios/check_linux_free_memory.pl +118 -0
- data/lib/deprec/templates/nagios/check_mongrel_cluster.rb +82 -0
- data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
- data/lib/deprec/templates/nagios/contacts.cfg.erb +57 -0
- data/lib/deprec/templates/nagios/hosts.cfg.erb +143 -0
- data/lib/deprec/templates/nagios/htpasswd.users +1 -0
- data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
- data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
- data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
- data/lib/deprec/templates/nagios/nrpe.cfg.erb +210 -0
- data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
- data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
- data/lib/deprec/templates/nagios/services.cfg.erb +79 -0
- data/lib/deprec/templates/nagios/templates.cfg.erb +9 -0
- data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
- data/lib/deprec/templates/network/hostname.erb +1 -0
- data/lib/deprec/templates/network/hosts.erb +2 -0
- data/lib/deprec/templates/network/interfaces.erb +18 -0
- data/lib/deprec/templates/network/resolv.conf.erb +6 -0
- data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
- data/lib/deprec/templates/nginx/mime.types.erb +70 -0
- data/lib/deprec/templates/nginx/nginx-init-script +62 -0
- data/lib/deprec/templates/nginx/nginx.conf.erb +125 -0
- data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
- data/lib/deprec/templates/nginx/nothing.conf +1 -0
- data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
- data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
- data/lib/deprec/templates/passenger/apache_vhost.erb +21 -0
- data/lib/deprec/templates/passenger/passenger.conf.erb +21 -0
- data/lib/deprec/templates/passenger/passenger.load.erb +3 -0
- data/lib/deprec/templates/postfix/aliases.erb +3 -0
- data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
- data/lib/deprec/templates/{postfix_main.conf → postfix/main.cf.erb} +6 -8
- data/lib/deprec/templates/postfix/master.cf.erb +77 -0
- data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
- data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
- data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
- data/lib/deprec/templates/ssl/make-ssl-cert +138 -0
- data/lib/deprec/templates/ssl/ssl-cert-snakeoil.key +15 -0
- data/lib/deprec/templates/ssl/ssl-cert-snakeoil.pem +19 -0
- data/lib/deprec/templates/starling/monit.conf.erb +14 -0
- data/lib/deprec/templates/starling/starling-init-script.erb +71 -0
- data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
- data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
- data/lib/deprec/templates/trac/nginx_vhost.conf.erb +26 -0
- data/lib/deprec/templates/trac/trac.ini.erb +169 -0
- data/lib/deprec/templates/trac/trac_deprec.png +0 -0
- data/lib/deprec/templates/trac/tracd-init.erb +43 -0
- data/lib/deprec/templates/trac/users.htdigest.erb +0 -0
- data/lib/deprec/templates/vnstat/config.php +57 -0
- data/lib/deprec/templates/wordpress/apache2_wordpress_vhost.conf.erb +31 -0
- data/lib/deprec/templates/wordpress/wp-config.php.erb +31 -0
- data/lib/deprec/templates/wpmu/apache_vhost.conf.erb +13 -0
- data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
- data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
- data/lib/deprec/templates/xen/xend-init.erb +57 -0
- data/lib/deprec/templates/xen/xendomains.erb +137 -0
- data/lib/deprec/templates/xentools/15-disable-hwclock +40 -0
- data/lib/deprec/templates/xentools/40-setup-networking +145 -0
- data/lib/deprec/templates/xentools/xen-tools.conf.erb +276 -0
- data/lib/deprec/templates/xentools/xm.tmpl.erb +138 -0
- data/lib/deprec_cmd_completion.sh +26 -0
- data/lib/vmbuilder_plugins/all.rb +20 -0
- data/lib/vmbuilder_plugins/apt.rb +93 -0
- data/lib/vmbuilder_plugins/emerge.rb +76 -0
- data/lib/{deprec/third_party/vmbuilder/plugins → vmbuilder_plugins}/gem.rb +10 -17
- data/lib/{deprec/third_party/vmbuilder/plugins → vmbuilder_plugins}/std.rb +69 -19
- metadata +204 -55
- data/bin/deprec +0 -35
- data/docs/README.slicehost +0 -14
- data/docs/README.svn_trac +0 -19
- data/lib/deprec/capistrano_extensions/actor_extensions.rb +0 -89
- data/lib/deprec/capistrano_extensions/cli_extensions.rb +0 -38
- data/lib/deprec/capistrano_extensions/deprec_extensions.rb +0 -137
- data/lib/deprec/generators/deprec/USAGE +0 -11
- data/lib/deprec/generators/deprec/deprec_generator.rb +0 -24
- data/lib/deprec/generators/deprec/templates/deploy.rb +0 -90
- data/lib/deprec/generators/loader.rb +0 -20
- data/lib/deprec/recipes/apache.rb +0 -91
- data/lib/deprec/recipes/cache_svn.rb +0 -74
- data/lib/deprec/recipes/vmware.rb +0 -114
- data/lib/deprec/templates/trac.ini.erb +0 -106
- data/lib/deprec/third_party/THIRD_PARTY_README +0 -12
- data/lib/deprec/third_party/mongrel_cluster/LICENSE +0 -506
- data/lib/deprec/third_party/mongrel_cluster/recipes.rb +0 -96
- data/lib/deprec/third_party/railsmachine/LICENSE +0 -506
- data/lib/deprec/third_party/railsmachine/recipes/apache.rb +0 -92
- data/lib/deprec/third_party/railsmachine/recipes/mysql.rb +0 -73
- data/lib/deprec/third_party/railsmachine/recipes/templates/httpd-ssl.conf +0 -80
- data/lib/deprec/third_party/railsmachine/recipes/templates/httpd.conf +0 -57
- data/lib/deprec/third_party/vmbuilder/plugins.rb +0 -8
- data/lib/deprec/third_party/vmbuilder/plugins/apt.rb +0 -144
- data/resources/capistrano_include_dotfiles.patch +0 -17
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
|
3
|
+
namespace :deprec do
|
|
4
|
+
namespace :network do
|
|
5
|
+
|
|
6
|
+
set(:network_number_of_ports) {
|
|
7
|
+
Capistrano::CLI.ui.ask "Number of network interfaces" do |q|
|
|
8
|
+
q.default = 1
|
|
9
|
+
end
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
default_network = ''
|
|
13
|
+
set(:network_interfaces) {
|
|
14
|
+
result = {}
|
|
15
|
+
network_number_of_ports.to_i.times do |iface|
|
|
16
|
+
default_network = "192.168.#{iface+1}"
|
|
17
|
+
result[iface] = {}
|
|
18
|
+
result[iface][:address] = Capistrano::CLI.ui.ask "address" do |q|
|
|
19
|
+
q.default = "#{default_network}.10"
|
|
20
|
+
end
|
|
21
|
+
default_network = result[iface][:address].split('.').slice(0,3).join('.')
|
|
22
|
+
result[iface][:netmask] = Capistrano::CLI.ui.ask "netmask" do |q|
|
|
23
|
+
q.default = "255.255.255.0"
|
|
24
|
+
end
|
|
25
|
+
result[iface][:broadcast] = Capistrano::CLI.ui.ask "broadcast" do |q|
|
|
26
|
+
q.default = "#{default_network}.255"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
result
|
|
30
|
+
}
|
|
31
|
+
set(:network_hostname) {
|
|
32
|
+
Capistrano::CLI.ui.ask "Enter the hostname for the server" do |q|
|
|
33
|
+
# q.validate = /add hostname validation here/
|
|
34
|
+
end
|
|
35
|
+
}
|
|
36
|
+
set(:network_gateway) {
|
|
37
|
+
Capistrano::CLI.ui.ask "default gateway" do |q|
|
|
38
|
+
q.default = "#{default_network}.1"
|
|
39
|
+
end
|
|
40
|
+
}
|
|
41
|
+
set(:network_dns_nameservers) {
|
|
42
|
+
Capistrano::CLI.ui.ask "dns nameservers (separated by spaces)" do |q|
|
|
43
|
+
q.default = '203.8.183.1 4.2.2.1'
|
|
44
|
+
end
|
|
45
|
+
}
|
|
46
|
+
set(:network_dns_search_path) {
|
|
47
|
+
Capistrano::CLI.ui.ask "dns search domains (separated by spaces)" do |q|
|
|
48
|
+
q.default = nil
|
|
49
|
+
end
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
SYSTEM_CONFIG_FILES[:network] = [
|
|
53
|
+
|
|
54
|
+
{:template => "interfaces.erb",
|
|
55
|
+
:path => '/etc/network/interfaces',
|
|
56
|
+
:mode => 0644,
|
|
57
|
+
:owner => 'root:root'},
|
|
58
|
+
|
|
59
|
+
{:template => "hosts.erb",
|
|
60
|
+
:path => '/etc/hosts',
|
|
61
|
+
:mode => 0644,
|
|
62
|
+
:owner => 'root:root'},
|
|
63
|
+
|
|
64
|
+
{:template => "hostname.erb",
|
|
65
|
+
:path => '/etc/hostname',
|
|
66
|
+
:mode => 0644,
|
|
67
|
+
:owner => 'root:root'},
|
|
68
|
+
|
|
69
|
+
{:template => "resolv.conf.erb",
|
|
70
|
+
:path => '/etc/resolv.conf',
|
|
71
|
+
:mode => 0644,
|
|
72
|
+
:owner => 'root:root'}
|
|
73
|
+
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
# XXX need to set the order for these as it breaks sudo currently
|
|
77
|
+
desc "Update system networking configuration"
|
|
78
|
+
task :config do
|
|
79
|
+
SYSTEM_CONFIG_FILES[:network].each do |file|
|
|
80
|
+
deprec2.render_template(:network, file.merge(:remote=>true))
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
desc "Restart network interface"
|
|
85
|
+
task :restart do
|
|
86
|
+
sudo '/etc/init.d/networking restart'
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
|
3
|
+
namespace :deprec do
|
|
4
|
+
namespace :ntp do
|
|
5
|
+
|
|
6
|
+
# Install
|
|
7
|
+
|
|
8
|
+
desc "Install ntp"
|
|
9
|
+
task :install do
|
|
10
|
+
install_deps
|
|
11
|
+
SYSTEM_CONFIG_FILES[:ntp].each do |file|
|
|
12
|
+
deprec2.render_template(:ntp, file.merge(:remote => true))
|
|
13
|
+
end
|
|
14
|
+
activate
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# install dependencies for nginx
|
|
18
|
+
task :install_deps do
|
|
19
|
+
apt.install( {:base => %w(ntp)}, :stable )
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Configure
|
|
24
|
+
|
|
25
|
+
SYSTEM_CONFIG_FILES[:ntp] = [
|
|
26
|
+
|
|
27
|
+
{:template => 'ntp.conf.erb',
|
|
28
|
+
:path => '/etc/ntp.conf',
|
|
29
|
+
:mode => 0755,
|
|
30
|
+
:owner => 'root:root'}
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
desc "Generate ntp config from template."
|
|
34
|
+
task :config_gen do
|
|
35
|
+
SYSTEM_CONFIG_FILES[:ntp].each do |file|
|
|
36
|
+
deprec2.render_template(:ntp, file)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
desc "Push ntp config files to server"
|
|
41
|
+
task :config do
|
|
42
|
+
deprec2.push_configs(:ntp, SYSTEM_CONFIG_FILES[:ntp])
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
desc 'Enable ntp start scripts on server.'
|
|
46
|
+
task :activate do
|
|
47
|
+
send(run_method, "update-rc.d ntp defaults")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
desc 'Disable ntp start scripts on server.'
|
|
51
|
+
task :deactivate do
|
|
52
|
+
send(run_method, "update-rc.d -f ntp remove")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# Control
|
|
57
|
+
|
|
58
|
+
desc "Start ntp"
|
|
59
|
+
task :start do
|
|
60
|
+
send(run_method, "/etc/init.d/ntp start")
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
desc "Stop ntp"
|
|
64
|
+
task :stop do
|
|
65
|
+
send(run_method, "/etc/init.d/ntp stop")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
desc "Restart ntp"
|
|
69
|
+
task :restart do
|
|
70
|
+
send(run_method, "/etc/init.d/ntp restart")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
desc "Reload ntp"
|
|
74
|
+
task :reload do
|
|
75
|
+
puts "use 'restart' instead"
|
|
76
|
+
exit 1
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
task :backup, :roles => :web do
|
|
80
|
+
# there's nothing to backup for ntp
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
task :restore, :roles => :web do
|
|
84
|
+
# there's nothing to store for ntp
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# Some nice nagios checks
|
|
93
|
+
#
|
|
94
|
+
# Check important hosts have expected DNS
|
|
95
|
+
#
|
|
96
|
+
# root@sm02:/usr/local/nagios/libexec# ./check_dns --hostname=astro.blocksglobal.com --expected-address=116.240.200.167
|
|
97
|
+
# DNS OK: 0.009 seconds response time. astro.blocksglobal.com returns 116.240.200.167|time=0.008744s;;;0.000000
|
|
98
|
+
#
|
|
99
|
+
#
|
|
100
|
+
|
|
101
|
+
# reconfigure timezone on hardy
|
|
102
|
+
#
|
|
103
|
+
# dpkg-reconfigure tzdata
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
|
3
|
+
namespace :deprec do
|
|
4
|
+
namespace :php do
|
|
5
|
+
|
|
6
|
+
desc "Install PHP"
|
|
7
|
+
task :install do
|
|
8
|
+
install_deps
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Install dependencies for php
|
|
12
|
+
task :install_deps do
|
|
13
|
+
apt.install( {:base => %w(php5 php5-mysql)}, :stable )
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
desc "generate config file for php"
|
|
17
|
+
task :config_gen do
|
|
18
|
+
# not yet implemented
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
desc "deploy config file for php"
|
|
22
|
+
task :config, :roles => :web do
|
|
23
|
+
# not yet implemented
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
task :start, :roles => :web do
|
|
27
|
+
# not applicable
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
task :stop, :roles => :web do
|
|
31
|
+
# not applicable
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
task :restart, :roles => :web do
|
|
35
|
+
# not applicable
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
desc "enable php in webserver"
|
|
39
|
+
task :activate, :roles => :web do
|
|
40
|
+
# not yet implemented
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
desc "disable php in webserver"
|
|
44
|
+
task :deactivate, :roles => :web do
|
|
45
|
+
# not yet implemented
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
task :backup, :roles => :web do
|
|
49
|
+
# not applicable
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
task :restore, :roles => :web do
|
|
53
|
+
# not applicable
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
|
3
|
+
# XXX not complete
|
|
4
|
+
namespace :deprec do
|
|
5
|
+
namespace :postfix do
|
|
6
|
+
|
|
7
|
+
set(:postfix_relayhost) { Capistrano::CLI.ui.ask "What host should we relay mail through?" }
|
|
8
|
+
|
|
9
|
+
desc "Install Postfix"
|
|
10
|
+
task :install, :roles => :mail do
|
|
11
|
+
install_deps
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Install dependencies for Postfix
|
|
15
|
+
task :install_deps do
|
|
16
|
+
# mutt and mailx are useful tools for testing mail
|
|
17
|
+
# e.g. echo test | mail test@gmail.com
|
|
18
|
+
apt.install( {:base => %w(postfix mutt mailx)}, :stable )
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# This is my default Postfix setup on servers that
|
|
22
|
+
# aren't my main outgoing mailserver.
|
|
23
|
+
# It accepts mail from localhost only and relays
|
|
24
|
+
# all mail to a master mailserver for delivery.
|
|
25
|
+
#
|
|
26
|
+
SYSTEM_CONFIG_FILES[:postfix] = [
|
|
27
|
+
|
|
28
|
+
{:template => "main.cf.erb",
|
|
29
|
+
:path => '/etc/postfix/main.cf',
|
|
30
|
+
:mode => 0644,
|
|
31
|
+
:owner => 'root:root'},
|
|
32
|
+
|
|
33
|
+
{:template => "master.cf.erb",
|
|
34
|
+
:path => '/etc/postfix/master.cf',
|
|
35
|
+
:mode => 0644,
|
|
36
|
+
:owner => 'root:root'},
|
|
37
|
+
|
|
38
|
+
{:template => "dynamicmaps.cf.erb",
|
|
39
|
+
:path => '/etc/postfix/dynamicmaps.cf',
|
|
40
|
+
:mode => 0644,
|
|
41
|
+
:owner => 'root:root'},
|
|
42
|
+
|
|
43
|
+
{:template => "aliases.erb",
|
|
44
|
+
:path => '/etc/aliases',
|
|
45
|
+
:mode => 0644,
|
|
46
|
+
:owner => 'root:root'}
|
|
47
|
+
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
desc 'Generate configuration files(s) for postfix'
|
|
51
|
+
task :config_gen do
|
|
52
|
+
SYSTEM_CONFIG_FILES[:postfix].each do |file|
|
|
53
|
+
deprec2.render_template(:postfix, file)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
desc 'Deploy configuration files(s) for postfix'
|
|
58
|
+
task :config, :roles => :mail, :except => { :master => true } do
|
|
59
|
+
deprec2.push_configs(:postfix, SYSTEM_CONFIG_FILES[:postfix])
|
|
60
|
+
send(run_method, "/usr/bin/newaliases")
|
|
61
|
+
reload
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
desc "Start Postfix"
|
|
65
|
+
task :start, :roles => :mail, :except => { :master => true } do
|
|
66
|
+
send(run_method, "/etc/init.d/postfix start")
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
desc "Stop Postfix"
|
|
70
|
+
task :stop, :roles => :mail, :except => { :master => true } do
|
|
71
|
+
send(run_method, "/etc/init.d/postfix stop")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
desc "Restart Postfix"
|
|
75
|
+
task :restart, :roles => :mail, :except => { :master => true } do
|
|
76
|
+
send(run_method, "/etc/init.d/postfix restart")
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
desc "Reload Postfix"
|
|
80
|
+
task :reload, :roles => :mail, :except => { :master => true } do
|
|
81
|
+
send(run_method, "/etc/init.d/postfix reload")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
task :activate, :roles => :web do
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
task :deactivate, :roles => :web do
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
task :backup, :roles => :web do
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
task :restore, :roles => :web do
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# Capistrano::Configuration.instance(:must_exist).load do
|
|
102
|
+
#
|
|
103
|
+
# namespace :deprec do namespace :nginx do
|
|
104
|
+
#
|
|
105
|
+
# #Craig: I've kept this generic rather than calling the task setup postfix.
|
|
106
|
+
# # if people want other smtp servers, it could be configurable
|
|
107
|
+
# desc "install and configure postfix"
|
|
108
|
+
# task :setup_smtp_server do
|
|
109
|
+
# install_postfix
|
|
110
|
+
# set :postfix_destination_domains, [domain] + apache_server_aliases
|
|
111
|
+
# deprec.render_template_to_file('postfix_main', '/etc/postfix/main.cf')
|
|
112
|
+
# end
|
|
113
|
+
#
|
|
114
|
+
# end end
|
|
115
|
+
# end
|
data/lib/deprec/recipes/rails.rb
CHANGED
|
@@ -1,61 +1,306 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 }
|
|
3
8
|
set :database_yml_in_scm, true
|
|
9
|
+
set :app_symlinks, nil
|
|
10
|
+
set :rails_env, 'production'
|
|
11
|
+
set :gems_for_project, nil # Array of gems to be installed for app
|
|
12
|
+
set :packages_for_project, nil # Array of packages to be installed for app
|
|
13
|
+
set :shared_dirs, nil # Array of directories that should be created under shared/
|
|
14
|
+
# and linked to in the project
|
|
4
15
|
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
set :db_host_staging, lambda { db_host_default }
|
|
14
|
-
set :db_host_production, lambda { db_host_default }
|
|
15
|
-
|
|
16
|
-
set :db_name_default, lambda { Capistrano::CLI.prompt 'Enter database name', "#{application}_#{rails_env}" }
|
|
17
|
-
set :db_name_staging, lambda { db_name_default }
|
|
18
|
-
set :db_name_production, lambda { db_name_default }
|
|
19
|
-
|
|
20
|
-
set :db_user_default, lambda { Capistrano::CLI.prompt 'Enter database user', 'root' }
|
|
21
|
-
set :db_user_staging, lambda { db_user_default }
|
|
22
|
-
set :db_user_production, lambda { db_user_default }
|
|
23
|
-
|
|
24
|
-
set :db_pass_default, lambda { Capistrano::CLI.prompt 'Enter database pass', '' }
|
|
25
|
-
set :db_pass_staging, lambda { db_pass_default }
|
|
26
|
-
set :db_pass_production, lambda { db_pass_default }
|
|
27
|
-
|
|
28
|
-
set :db_adaptor_default, lambda { Capistrano::CLI.prompt 'Enter database adaptor', 'mysql' }
|
|
29
|
-
set :db_adaptor_staging, lambda { db_adaptor_default }
|
|
30
|
-
set :db_adaptor_production, lambda { db_adaptor_default }
|
|
31
|
-
|
|
32
|
-
set :db_socket_default, lambda { Capistrano::CLI.prompt('Enter database socket', '')}
|
|
33
|
-
set :db_socket_staging, lambda { db_socket_default }
|
|
34
|
-
set :db_socket_production, lambda { db_socket_default }
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
task :generate_database_yml, :roles => :app do
|
|
38
|
-
database_configuration = render :template => <<-EOF
|
|
39
|
-
#{rails_env}:
|
|
40
|
-
adapter: #{self.send("db_adaptor_#{rails_env}")}
|
|
41
|
-
database: #{self.send("db_name_#{rails_env}")}
|
|
42
|
-
username: #{self.send("db_user_#{rails_env}")}
|
|
43
|
-
password: #{self.send("db_pass_#{rails_env}")}
|
|
44
|
-
host: #{self.send("db_host_#{rails_env}")}
|
|
45
|
-
socket: #{self.send("db_socket_#{rails_env}")}
|
|
46
|
-
EOF
|
|
47
|
-
run "mkdir -p #{deploy_to}/#{shared_dir}/config"
|
|
48
|
-
put database_configuration, "#{deploy_to}/#{shared_dir}/config/database.yml"
|
|
16
|
+
# Hook into the default capistrano deploy tasks
|
|
17
|
+
before 'deploy:setup', :except => { :no_release => true } do
|
|
18
|
+
top.deprec.rails.setup_user_perms
|
|
19
|
+
top.deprec.rails.create_app_user_and_group
|
|
20
|
+
top.deprec.rails.setup_paths
|
|
21
|
+
top.deprec.rails.setup_shared_dirs
|
|
22
|
+
top.deprec.rails.install_packages_for_project
|
|
23
|
+
top.deprec.rails.install_gems_for_project
|
|
49
24
|
end
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
25
|
+
|
|
26
|
+
after 'deploy:setup', :except => { :no_release => true } do
|
|
27
|
+
top.deprec.rails.create_config_dir
|
|
28
|
+
top.deprec.rails.config_gen
|
|
29
|
+
top.deprec.rails.config
|
|
30
|
+
top.deprec.rails.activate_services
|
|
31
|
+
top.deprec.rails.set_perms_on_shared_and_releases
|
|
32
|
+
top.deprec.web.reload
|
|
33
|
+
top.deprec.rails.setup_database
|
|
53
34
|
end
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
35
|
+
|
|
36
|
+
after 'deploy:symlink', :roles => :app do
|
|
37
|
+
top.deprec.rails.symlink_shared_dirs
|
|
38
|
+
top.deprec.rails.symlink_database_yml unless database_yml_in_scm
|
|
39
|
+
top.deprec.rails.make_writable_by_app
|
|
40
|
+
set_owner_of_environment_rb if web_server_type.to_s == 'passenger'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
after :deploy, :roles => :app do
|
|
44
|
+
deploy.cleanup
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
namespace :deprec do
|
|
48
|
+
namespace :rails do
|
|
49
|
+
|
|
50
|
+
task :setup_database, :roles => :db do
|
|
51
|
+
if ! roles[:db].servers.empty? # Some apps don't use database!
|
|
52
|
+
deprec2.read_database_yml
|
|
53
|
+
top.deprec.db.create_user
|
|
54
|
+
top.deprec.db.create_database
|
|
55
|
+
top.deprec.db.grant_user_access_to_database
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
task :install, :roles => :app do
|
|
60
|
+
install_deps
|
|
61
|
+
install_gems
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
task :install_deps do
|
|
65
|
+
apt.install( {:base => %w(libmysqlclient15-dev sqlite3 libsqlite3-ruby libsqlite3-dev libpq-dev)}, :stable )
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# install some required ruby gems
|
|
69
|
+
task :install_gems do
|
|
70
|
+
gem2.install 'sqlite3-ruby'
|
|
71
|
+
gem2.install 'mysql'
|
|
72
|
+
gem2.install 'ruby-pg'
|
|
73
|
+
gem2.install 'rails'
|
|
74
|
+
gem2.install 'rake'
|
|
75
|
+
gem2.install 'rspec'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
desc <<-DESC
|
|
79
|
+
Install full rails stack on a stock standard ubuntu server (7.10, 8.04)
|
|
80
|
+
DESC
|
|
81
|
+
task :install_stack do
|
|
82
|
+
|
|
83
|
+
top.deprec.ruby.install
|
|
84
|
+
top.deprec.web.install # Uses value of web_server_type
|
|
85
|
+
top.deprec.svn.install
|
|
86
|
+
top.deprec.git.install
|
|
87
|
+
top.deprec.app.install # Uses value of app_server_type
|
|
88
|
+
top.deprec.monit.install
|
|
89
|
+
top.deprec.rails.install
|
|
90
|
+
top.deprec.logrotate.install
|
|
91
|
+
|
|
92
|
+
# We not longer install database server as part of this task.
|
|
93
|
+
# There is too much danger that someone will wreck an existing
|
|
94
|
+
# shared database.
|
|
95
|
+
#
|
|
96
|
+
# Install database server with:
|
|
97
|
+
#
|
|
98
|
+
# cap deprec:db:install
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
task :install_rails_stack do
|
|
102
|
+
puts "deprecated: this task is now called install_stack"
|
|
103
|
+
install_stack
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
desc "Generate config files for rails app."
|
|
107
|
+
task :config_gen do
|
|
108
|
+
top.deprec.web.config_gen_project
|
|
109
|
+
top.deprec.app.config_gen_project
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
desc "Push out config files for rails app."
|
|
113
|
+
task :config do
|
|
114
|
+
top.deprec.web.config_project
|
|
115
|
+
top.deprec.app.config_project
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
task :create_config_dir, :roles => :app do
|
|
119
|
+
deprec2.mkdir("#{shared_path}/config", :group => group, :mode => 0775, :via => :sudo)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# XXX This should be restricted a bit to limit what app can write to. - Mike
|
|
123
|
+
desc "set group ownership and permissions on dirs app server needs to write to"
|
|
124
|
+
task :make_writable_by_app, :roles => :app do
|
|
125
|
+
tmp_dir = "#{deploy_to}/current/tmp"
|
|
126
|
+
shared_dir = "#{deploy_to}/shared"
|
|
127
|
+
# XXX Factor this out
|
|
128
|
+
files = ["#{mongrel_log_dir}/mongrel.log", "#{mongrel_log_dir}/#{rails_env}.log"]
|
|
129
|
+
|
|
130
|
+
sudo "chgrp -R #{app_group} #{tmp_dir} #{shared_dir}"
|
|
131
|
+
sudo "chmod -R g+w #{tmp_dir} #{shared_dir}"
|
|
132
|
+
# set owner and group of log files
|
|
133
|
+
files.each { |file|
|
|
134
|
+
sudo "touch #{file}"
|
|
135
|
+
sudo "chown #{app_user} #{file}"
|
|
136
|
+
sudo "chgrp #{app_group} #{file}"
|
|
137
|
+
sudo "chmod g+w #{file}"
|
|
138
|
+
}
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
desc "Create deployment group and add current user to it"
|
|
142
|
+
task :setup_user_perms, :roles => [:app, :web] do
|
|
143
|
+
deprec2.groupadd(group)
|
|
144
|
+
deprec2.add_user_to_group(user, group)
|
|
145
|
+
deprec2.groupadd(app_group)
|
|
146
|
+
deprec2.add_user_to_group(user, app_group)
|
|
147
|
+
# we've just added ourself to a group - need to teardown connection
|
|
148
|
+
# so that next command uses new session where we belong in group
|
|
149
|
+
deprec2.teardown_connections
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
desc "Create user and group for application to run as"
|
|
153
|
+
task :create_app_user_and_group, :roles => :app do
|
|
154
|
+
deprec2.groupadd(app_group)
|
|
155
|
+
deprec2.useradd(app_user, :group => app_group, :homedir => false)
|
|
156
|
+
# Set the primary group for the user the application runs as (in case
|
|
157
|
+
# user already existed when previous command was run)
|
|
158
|
+
sudo "usermod --gid #{app_group} #{app_user}"
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
task :set_perms_on_shared_and_releases, :roles => :app do
|
|
162
|
+
releases = File.join(deploy_to, 'releases')
|
|
163
|
+
sudo "chgrp -R #{group} #{shared_path} #{releases}"
|
|
164
|
+
sudo "chmod -R g+w #{shared_path} #{releases}"
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Passenger runs Rails as the owner of this file.
|
|
168
|
+
task :set_owner_of_environment_rb, :roles => :app do
|
|
169
|
+
sudo "chown #{app_user} #{current_path}/config/environment.rb"
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Setup database server.
|
|
173
|
+
task :setup_db, :roles => :db, :only => { :primary => true } do
|
|
174
|
+
top.deprec.mysql.setup
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# setup extra paths required for deployment
|
|
178
|
+
task :setup_paths, :roles => [:app, :web] do
|
|
179
|
+
deprec2.mkdir(deploy_to, :mode => 0775, :group => group, :via => :sudo)
|
|
180
|
+
deprec2.mkdir(shared_path, :mode => 0775, :group => group, :via => :sudo)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Symlink list of files and dirs from shared to current
|
|
184
|
+
#
|
|
185
|
+
# XXX write up explanation
|
|
186
|
+
#
|
|
187
|
+
desc "Setup shared dirs"
|
|
188
|
+
task :setup_shared_dirs, :roles => [:app, :web] do
|
|
189
|
+
if shared_dirs
|
|
190
|
+
shared_dirs.each { |dir| deprec2.mkdir( "#{shared_path}/#{dir}", :via => :sudo ) }
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
#
|
|
194
|
+
desc "Symlink shared dirs."
|
|
195
|
+
task :symlink_shared_dirs, :roles => [:app, :web] do
|
|
196
|
+
if shared_dirs
|
|
197
|
+
shared_dirs.each do |dir|
|
|
198
|
+
path = File.split(dir)[0]
|
|
199
|
+
if path != '.'
|
|
200
|
+
deprec2.mkdir("#{current_path}/#{path}")
|
|
201
|
+
end
|
|
202
|
+
run "ln -nfs #{shared_path}/#{dir} #{current_path}/#{dir}"
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
task :install_packages_for_project, :roles => :app do
|
|
208
|
+
if packages_for_project
|
|
209
|
+
apt.install({ :base => packages_for_project }, :stable)
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
task :install_gems_for_project, :roles => :app do
|
|
214
|
+
if gems_for_project
|
|
215
|
+
gems_for_project.each { |gem| gem2.install(gem) }
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
desc "Activate web, app and monit"
|
|
220
|
+
task :activate_services do
|
|
221
|
+
top.deprec.web.activate
|
|
222
|
+
top.deprec.app.activate
|
|
223
|
+
top.deprec.monit.activate
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# database.yml stuff
|
|
227
|
+
#
|
|
228
|
+
# XXX DRY this up
|
|
229
|
+
# I don't know how to let :gen_db_yml check if values have been set.
|
|
230
|
+
#
|
|
231
|
+
# if (self.respond_to?("db_host_#{rails_env}".to_sym)) # doesn't seem to work
|
|
232
|
+
|
|
233
|
+
set :db_host_default, lambda { Capistrano::CLI.prompt 'Enter database host', 'localhost'}
|
|
234
|
+
set :db_host_staging, lambda { db_host_default }
|
|
235
|
+
set :db_host_production, lambda { db_host_default }
|
|
236
|
+
|
|
237
|
+
set :db_name_default, lambda { Capistrano::CLI.prompt 'Enter database name', "#{application}_#{rails_env}" }
|
|
238
|
+
set :db_name_staging, lambda { db_name_default }
|
|
239
|
+
set :db_name_production, lambda { db_name_default }
|
|
240
|
+
|
|
241
|
+
set :db_user_default, lambda { Capistrano::CLI.prompt 'Enter database user', 'root' }
|
|
242
|
+
set :db_user_staging, lambda { db_user_default }
|
|
243
|
+
set :db_user_production, lambda { db_user_default }
|
|
244
|
+
|
|
245
|
+
set :db_pass_default, lambda { Capistrano::CLI.prompt 'Enter database pass', '' }
|
|
246
|
+
set :db_pass_staging, lambda { db_pass_default }
|
|
247
|
+
set :db_pass_production, lambda { db_pass_default }
|
|
248
|
+
|
|
249
|
+
set :db_adaptor_default, lambda { Capistrano::CLI.prompt 'Enter database adaptor', 'mysql' }
|
|
250
|
+
set :db_adaptor_staging, lambda { db_adaptor_default }
|
|
251
|
+
set :db_adaptor_production, lambda { db_adaptor_default }
|
|
252
|
+
|
|
253
|
+
set :db_socket_default, lambda { Capistrano::CLI.prompt('Enter database socket', '')}
|
|
254
|
+
set :db_socket_staging, lambda { db_socket_default }
|
|
255
|
+
set :db_socket_production, lambda { db_socket_default }
|
|
256
|
+
|
|
257
|
+
task :generate_database_yml, :roles => :app do
|
|
258
|
+
database_configuration = render :template => <<-EOF
|
|
259
|
+
#{rails_env}:
|
|
260
|
+
adapter: #{self.send("db_adaptor_#{rails_env}")}
|
|
261
|
+
database: #{self.send("db_name_#{rails_env}")}
|
|
262
|
+
username: #{self.send("db_user_#{rails_env}")}
|
|
263
|
+
password: #{self.send("db_pass_#{rails_env}")}
|
|
264
|
+
host: #{self.send("db_host_#{rails_env}")}
|
|
265
|
+
socket: #{self.send("db_socket_#{rails_env}")}
|
|
266
|
+
EOF
|
|
267
|
+
run "mkdir -p #{deploy_to}/#{shared_dir}/config"
|
|
268
|
+
put database_configuration, "#{deploy_to}/#{shared_dir}/config/database.yml"
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
desc "Link in the production database.yml"
|
|
272
|
+
task :symlink_database_yml, :roles => :app do
|
|
273
|
+
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
namespace :database do
|
|
279
|
+
|
|
280
|
+
desc "Create database"
|
|
281
|
+
task :create, :roles => :db do
|
|
282
|
+
run "cd #{deploy_to}/current && rake db:create RAILS_ENV=#{rails_env}"
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
desc "Run database migrations"
|
|
286
|
+
task :migrate, :roles => :db do
|
|
287
|
+
run "cd #{deploy_to}/current && rake db:migrate RAILS_ENV=#{rails_env}"
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
desc "Run database migrations"
|
|
291
|
+
task :schema_load, :roles => :db do
|
|
292
|
+
run "cd #{deploy_to}/current && rake db:schema:load RAILS_ENV=#{rails_env}"
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
desc "Roll database back to previous migration"
|
|
296
|
+
task :rollback, :roles => :db do
|
|
297
|
+
run "cd #{deploy_to}/current && rake db:rollback RAILS_ENV=#{rails_env}"
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
end
|
|
301
|
+
|
|
59
302
|
end
|
|
60
303
|
|
|
61
|
-
end
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
|