Empact-deprec 1.99.21
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 +170 -0
- data/COPYING +19 -0
- data/LICENSE +339 -0
- data/README +136 -0
- data/THANKS +5 -0
- data/bin/depify +133 -0
- data/docs/ANNOUNCE.deprec2 +47 -0
- data/docs/README.install +88 -0
- data/docs/README.nagios +28 -0
- data/docs/README.rails +20 -0
- data/docs/README.svn +31 -0
- data/docs/ROADMAP.txt +74 -0
- data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
- data/docs/deprec-1.x/notes.txt +12 -0
- data/docs/deprec_banner.gif +0 -0
- data/lib/deprec.rb +8 -0
- data/lib/deprec/capistrano_extensions.rb +378 -0
- data/lib/deprec/recipes.rb +40 -0
- data/lib/deprec/recipes/aoe.rb +117 -0
- data/lib/deprec/recipes/apache.rb +179 -0
- data/lib/deprec/recipes/ar_sendmail.rb +65 -0
- data/lib/deprec/recipes/canonical.rb +57 -0
- data/lib/deprec/recipes/deprec.rb +155 -0
- data/lib/deprec/recipes/deprecated.rb +71 -0
- data/lib/deprec/recipes/example.rb +115 -0
- data/lib/deprec/recipes/git.rb +168 -0
- data/lib/deprec/recipes/gitosis.rb +47 -0
- data/lib/deprec/recipes/god.rb +107 -0
- data/lib/deprec/recipes/heartbeat.rb +138 -0
- data/lib/deprec/recipes/iptables.rb +53 -0
- data/lib/deprec/recipes/logrotate.rb +51 -0
- data/lib/deprec/recipes/lvm.rb +20 -0
- data/lib/deprec/recipes/memcached.rb +102 -0
- data/lib/deprec/recipes/mongrel.rb +209 -0
- data/lib/deprec/recipes/monit.rb +130 -0
- data/lib/deprec/recipes/mysql.rb +115 -0
- data/lib/deprec/recipes/nagios.rb +302 -0
- data/lib/deprec/recipes/network.rb +84 -0
- data/lib/deprec/recipes/nginx.rb +154 -0
- data/lib/deprec/recipes/ntp.rb +96 -0
- data/lib/deprec/recipes/php.rb +99 -0
- data/lib/deprec/recipes/postfix.rb +105 -0
- data/lib/deprec/recipes/rails.rb +302 -0
- data/lib/deprec/recipes/ruby.rb +66 -0
- data/lib/deprec/recipes/sphinx.rb +83 -0
- data/lib/deprec/recipes/ssh.rb +93 -0
- data/lib/deprec/recipes/svn.rb +169 -0
- data/lib/deprec/recipes/swiftiply.rb +108 -0
- data/lib/deprec/recipes/thin.rb +201 -0
- data/lib/deprec/recipes/trac.rb +277 -0
- data/lib/deprec/recipes/ubuntu.rb +20 -0
- data/lib/deprec/recipes/users.rb +90 -0
- data/lib/deprec/recipes/utils.rb +39 -0
- data/lib/deprec/recipes/xen.rb +259 -0
- data/lib/deprec/templates/aoe/aoe-init +55 -0
- data/lib/deprec/templates/aoe/fence_aoemask +351 -0
- data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
- data/lib/deprec/templates/apache/httpd.conf +465 -0
- data/lib/deprec/templates/apache/index.html.erb +37 -0
- data/lib/deprec/templates/apache/master.css +72 -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/coraid/aoe-init +55 -0
- data/lib/deprec/templates/deprec/caprc.erb +14 -0
- data/lib/deprec/templates/god/god-init-script +71 -0
- data/lib/deprec/templates/god/god-notifications +0 -0
- data/lib/deprec/templates/god/god_mongrel.erb +81 -0
- data/lib/deprec/templates/god/god_mysql.erb +50 -0
- data/lib/deprec/templates/god/god_nginx.erb +61 -0
- data/lib/deprec/templates/god/god_thin.erb +80 -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/iptables/iptables.up.erb +41 -0
- data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
- data/lib/deprec/templates/memcached/memcached-init-script +65 -0
- data/lib/deprec/templates/memcached/memcached.conf.erb +46 -0
- data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
- data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
- data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
- 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/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/commands.cfg.erb +240 -0
- data/lib/deprec/templates/nagios/contacts.cfg.erb +75 -0
- data/lib/deprec/templates/nagios/hosts.cfg.erb +70 -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 +208 -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 +7 -0
- data/lib/deprec/templates/nagios/templates.cfg.erb +190 -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/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 +53 -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 +45 -0
- data/lib/deprec/templates/ntp/ntp.conf.erb +42 -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.cf.erb +41 -0
- data/lib/deprec/templates/postfix/master.cf.erb +77 -0
- data/lib/deprec/templates/rails/database.yml.erb +6 -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/subversion/svn.apache.vhost.erb +43 -0
- data/lib/deprec/templates/swiftiply/swiftiply-init-script +61 -0
- data/lib/deprec/templates/swiftiply/swiftiply.yml.erb +11 -0
- data/lib/deprec/templates/thin/thin-init-script +51 -0
- data/lib/deprec/templates/thin/thin.yml.erb +11 -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/xen/15-disable-hwclock +40 -0
- data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
- data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
- data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
- data/lib/deprec/templates/xen/xend-init.erb +69 -0
- data/lib/deprec/templates/xen/xendomains.erb +137 -0
- data/lib/deprec/templates/xen/xm.tmpl.erb +85 -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/vmbuilder_plugins/gem.rb +90 -0
- data/lib/vmbuilder_plugins/std.rb +203 -0
- metadata +207 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
#thin_cluster Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
|
3
|
+
|
|
4
|
+
namespace :deprec do
|
|
5
|
+
namespace :thin do
|
|
6
|
+
|
|
7
|
+
set :thin_servers, 4
|
|
8
|
+
set :thin_port, 9001
|
|
9
|
+
set :thin_address, "127.0.0.1"
|
|
10
|
+
# set(:thin_socket) { "#{deploy_to}/shared/thin.sock" }
|
|
11
|
+
set(:thin_environment) { rails_env }
|
|
12
|
+
set(:thin_log_dir) { "#{deploy_to}/shared/log" }
|
|
13
|
+
set(:thin_pid_dir) { "#{deploy_to}/shared/pids" }
|
|
14
|
+
set :thin_conf_dir, '/etc/thin'
|
|
15
|
+
set(:thin_conf) { "/etc/thin/#{application}.yml" }
|
|
16
|
+
|
|
17
|
+
set(:thin_swiftiply_conf) { "/etc/swiftiply/#{application}.yml" }
|
|
18
|
+
set :thin_swiftiply, true
|
|
19
|
+
|
|
20
|
+
set :thin_user_prefix, 'thin_'
|
|
21
|
+
set(:thin_user) { thin_user_prefix + application }
|
|
22
|
+
set :thin_group_prefix, 'app_'
|
|
23
|
+
set(:thin_group) { thin_group_prefix + application }
|
|
24
|
+
|
|
25
|
+
# Install
|
|
26
|
+
desc "Install thin"
|
|
27
|
+
task :install, :roles => :app do
|
|
28
|
+
gem2.install 'thin'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# Configure
|
|
33
|
+
|
|
34
|
+
SYSTEM_CONFIG_FILES[:thin] = [
|
|
35
|
+
|
|
36
|
+
{:template => 'thin-init-script',
|
|
37
|
+
:path => '/etc/init.d/thin',
|
|
38
|
+
:mode => 0755,
|
|
39
|
+
:owner => 'root:root'}
|
|
40
|
+
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
PROJECT_CONFIG_FILES[:thin] = [
|
|
44
|
+
|
|
45
|
+
{:template => 'thin.yml.erb',
|
|
46
|
+
:path => 'thin.yml',
|
|
47
|
+
:mode => 0644,
|
|
48
|
+
:owner => 'root:root'}
|
|
49
|
+
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
PROJECT_CONFIG_FILES[:swiftiply] = [
|
|
53
|
+
|
|
54
|
+
{:template => 'swiftiply.yml.erb',
|
|
55
|
+
:path => 'swiftiply.yml',
|
|
56
|
+
:mode => 0644,
|
|
57
|
+
:owner => 'root:root'}
|
|
58
|
+
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
desc "Generate configuration file(s) for thin from template(s)"
|
|
62
|
+
task :config_gen do
|
|
63
|
+
config_gen_system
|
|
64
|
+
config_gen_project
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
task :config_gen_system do
|
|
68
|
+
SYSTEM_CONFIG_FILES[:thin].each do |file|
|
|
69
|
+
deprec2.render_template(:thin, file)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
task :config_gen_project do
|
|
74
|
+
PROJECT_CONFIG_FILES[:thin].each do |file|
|
|
75
|
+
deprec2.render_template(:thin, file)
|
|
76
|
+
end
|
|
77
|
+
PROJECT_CONFIG_FILES[:swiftiply].each do |file|
|
|
78
|
+
deprec2.render_template(:thin, file)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
desc 'Deploy configuration files(s) for thin'
|
|
83
|
+
task :config, :roles => :app do
|
|
84
|
+
config_system
|
|
85
|
+
config_project
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
task :config_system, :roles => :app do
|
|
89
|
+
deprec2.push_configs(:thin, SYSTEM_CONFIG_FILES[:thin])
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
task :config_project, :roles => :app do
|
|
93
|
+
create_thin_user_and_group
|
|
94
|
+
deprec2.push_configs(:thin, PROJECT_CONFIG_FILES[:thin])
|
|
95
|
+
deprec2.push_configs(:thin, PROJECT_CONFIG_FILES[:swiftiply])
|
|
96
|
+
symlink_thin_cluster
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
task :symlink_thin_cluster, :roles => :app do
|
|
100
|
+
deprec2.mkdir(thin_conf_dir, :via => :sudo)
|
|
101
|
+
sudo "ln -sf #{deploy_to}/thin/thin.yml #{thin_conf}"
|
|
102
|
+
sudo "ln -sf #{deploy_to}/thin/swiftiply.yml #{thin_swiftiply_conf}"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
task :unlink_thin_cluster, :roles => :app do
|
|
106
|
+
deprec2.mkdir(thin_conf_dir, :via => :sudo)
|
|
107
|
+
sudo "test -L #{thin_conf} && unlink #{thin_conf}"
|
|
108
|
+
sudo "test -L #{thin_swiftiply_conf} && unlink #{thin_swiftiply_conf}"
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# Control
|
|
113
|
+
|
|
114
|
+
desc "Start application server."
|
|
115
|
+
task :start, :roles => :app do
|
|
116
|
+
send(run_method, "thin start -C #{thin_conf}")
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
desc "Stop application server."
|
|
120
|
+
task :stop, :roles => :app do
|
|
121
|
+
send(run_method, "thin stop -C #{thin_conf}")
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
desc "Restart application server."
|
|
125
|
+
task :restart, :roles => :app do
|
|
126
|
+
send(run_method, "thin restart -C #{thin_conf}")
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
task :activate, :roles => :app do
|
|
130
|
+
activate_system
|
|
131
|
+
activate_project
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
task :activate_system, :roles => :app do
|
|
135
|
+
send(run_method, "update-rc.d thin defaults")
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
task :activate_project, :roles => :app do
|
|
139
|
+
symlink_thin_cluster
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
task :deactivate, :roles => :app do
|
|
143
|
+
puts
|
|
144
|
+
puts "******************************************************************"
|
|
145
|
+
puts
|
|
146
|
+
puts "Danger!"
|
|
147
|
+
puts
|
|
148
|
+
puts "Do you want to deactivate just this project or all thin"
|
|
149
|
+
puts "clusters on this server? Try a more granular command:"
|
|
150
|
+
puts
|
|
151
|
+
puts "cap deprec:thin:deactivate_system # disable all clusters"
|
|
152
|
+
puts "cap deprec:thin:deactivate_project # disable only this project"
|
|
153
|
+
puts
|
|
154
|
+
puts "******************************************************************"
|
|
155
|
+
puts
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
task :deactivate_system, :roles => :app do
|
|
159
|
+
send(run_method, "update-rc.d -f thin remove")
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
task :deactivate_project, :roles => :app do
|
|
163
|
+
unlink_thin_cluster
|
|
164
|
+
restart
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
task :backup, :roles => :app do
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
task :restore, :roles => :app do
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
desc "create user and group for mongel to run as"
|
|
174
|
+
task :create_thin_user_and_group, :roles => :app do
|
|
175
|
+
deprec2.groupadd(thin_group)
|
|
176
|
+
deprec2.useradd(thin_user, :group => thin_group, :homedir => false)
|
|
177
|
+
# Set the primary group for the thin user (in case user already existed
|
|
178
|
+
# when previous command was run)
|
|
179
|
+
sudo "usermod --gid #{thin_group} #{thin_user}"
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
desc "set group ownership and permissions on dirs thin needs to write to"
|
|
183
|
+
task :set_perms_for_thin_dirs, :roles => :app do
|
|
184
|
+
tmp_dir = "#{deploy_to}/current/tmp"
|
|
185
|
+
shared_dir = "#{deploy_to}/shared"
|
|
186
|
+
files = ["#{thin_log_dir}/thin.log", "#{thin_log_dir}/#{rails_env}.log"]
|
|
187
|
+
|
|
188
|
+
sudo "chgrp -R #{thin_group} #{tmp_dir} #{shared_dir}"
|
|
189
|
+
sudo "chmod -R g+w #{tmp_dir} #{shared_dir}"
|
|
190
|
+
# set owner and group of log files
|
|
191
|
+
files.each { |file|
|
|
192
|
+
sudo "touch #{file}"
|
|
193
|
+
sudo "chown #{thin_user} #{file}"
|
|
194
|
+
sudo "chgrp #{thin_group} #{file}"
|
|
195
|
+
sudo "chmod g+w #{file}"
|
|
196
|
+
}
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
|
2
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
|
3
|
+
namespace :deprec do namespace :trac do
|
|
4
|
+
|
|
5
|
+
# Master tracd process for server
|
|
6
|
+
set :tracd_cmd, '/usr/bin/tracd'
|
|
7
|
+
set :tracd_port, '9000'
|
|
8
|
+
set :tracd_pidfile, '/var/run/tracd.pid'
|
|
9
|
+
|
|
10
|
+
# Settings for this projects trac instance
|
|
11
|
+
set(:tracd_domain_root) { domain.sub(/.*?\./,'') } # strip subdomain from domain
|
|
12
|
+
set(:tracd_vhost_domain) { "trac-#{application}.#{tracd_domain_root}" } # nginx will proxy this domain to tracd
|
|
13
|
+
|
|
14
|
+
set(:trac_backup_dir) { "#{backup_dir}/trac" }
|
|
15
|
+
set(:trac_path) { exists?(:deploy_to) ? "#{deploy_to}/trac" : Capistrano::CLI.ui.ask('path to trac config') }
|
|
16
|
+
set(:tracd_parent_dir) { "/etc/trac.d" }
|
|
17
|
+
set(:trac_password_file) { "#{trac_path}/conf/users.htdigest" }
|
|
18
|
+
set(:trac_account) { Capistrano::CLI.prompt('enter new trac user account name') }
|
|
19
|
+
set :trac_passwordfile_exists, true # hack - should check on remote system instead
|
|
20
|
+
set(:trac_header_logo_link) { trac_home_url }
|
|
21
|
+
# We will symlink each projects trac dir into this dir for tracd to find
|
|
22
|
+
|
|
23
|
+
# project
|
|
24
|
+
set(:trac_domain) { domain.sub(/^.*?\./, 'trac.') }
|
|
25
|
+
set(:trac_home_url) { "http://#{trac_domain}/" }
|
|
26
|
+
set(:trac_desc) { application }
|
|
27
|
+
|
|
28
|
+
# Settings only used for generating trac.ini for this project
|
|
29
|
+
# - notification
|
|
30
|
+
set :trac_always_notify_owner, false
|
|
31
|
+
set :trac_always_notify_reporter, false
|
|
32
|
+
set :trac_always_notify_updater, true
|
|
33
|
+
set :trac_smtp_always_bcc, ''
|
|
34
|
+
set :trac_smtp_always_cc, ''
|
|
35
|
+
set :trac_smtp_default_domain, ''
|
|
36
|
+
set :trac_smtp_enabled, true
|
|
37
|
+
set :trac_smtp_from, 'trac@localhost'
|
|
38
|
+
set :trac_smtp_password, ''
|
|
39
|
+
set :trac_smtp_port, 25
|
|
40
|
+
set :trac_smtp_replyto, 'trac@localhost'
|
|
41
|
+
set :trac_smtp_server, 'localhost'
|
|
42
|
+
set :trac_smtp_subject_prefix, '__default__'
|
|
43
|
+
set :trac_smtp_user, ''
|
|
44
|
+
set :trac_use_public_cc, false
|
|
45
|
+
set :trac_use_short_addr, false
|
|
46
|
+
set :trac_use_tls, false
|
|
47
|
+
# - other
|
|
48
|
+
set(:trac_base_url) { trac_home_url }
|
|
49
|
+
|
|
50
|
+
desc "Install trac on server"
|
|
51
|
+
task :install, :roles => :scm do
|
|
52
|
+
install_deps
|
|
53
|
+
sudo "easy_install Trac==0.11rc1"
|
|
54
|
+
create_pid_dir
|
|
55
|
+
create_parent_dir
|
|
56
|
+
config_gen_system
|
|
57
|
+
config_system
|
|
58
|
+
activate_system
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
task :install_deps do
|
|
62
|
+
apt.install( {:base => %w(sqlite3 python-setuptools python-subversion)}, :stable )
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# The start script has a couple of config values in it.
|
|
66
|
+
# We may want to extract them into a config file later
|
|
67
|
+
# and install this script as part of the :install task.
|
|
68
|
+
SYSTEM_CONFIG_FILES[:trac] = [
|
|
69
|
+
{:template => 'tracd-init.erb',
|
|
70
|
+
:path => '/etc/init.d/tracd',
|
|
71
|
+
:mode => 0755,
|
|
72
|
+
:owner => 'root:root'}
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
PROJECT_CONFIG_FILES[:trac] = [
|
|
76
|
+
{:template => 'users.htdigest.erb',
|
|
77
|
+
:path => "conf/users.htdigest",
|
|
78
|
+
:mode => 0644,
|
|
79
|
+
:owner => 'root:root'},
|
|
80
|
+
|
|
81
|
+
{:template => 'trac.ini.erb',
|
|
82
|
+
:path => "conf/trac.ini",
|
|
83
|
+
:mode => 0644,
|
|
84
|
+
:owner => 'root:root'},
|
|
85
|
+
|
|
86
|
+
{:template => 'nginx_vhost.conf.erb',
|
|
87
|
+
:path => "conf/nginx_vhost.conf",
|
|
88
|
+
:mode => 0644,
|
|
89
|
+
:owner => 'root:root'}
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
desc "Generate config files for trac"
|
|
93
|
+
task :config_gen do
|
|
94
|
+
config_gen_system
|
|
95
|
+
config_gen_project
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
task :config_gen_system do
|
|
99
|
+
SYSTEM_CONFIG_FILES[:trac].each do |file|
|
|
100
|
+
deprec2.render_template(:trac, file)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
task :config_gen_project do
|
|
105
|
+
PROJECT_CONFIG_FILES[:trac].each do |file|
|
|
106
|
+
deprec2.render_template(:trac, file)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
desc "Push trac config files to server"
|
|
111
|
+
task :config, :roles => :scm do
|
|
112
|
+
config_system
|
|
113
|
+
config_project
|
|
114
|
+
restart
|
|
115
|
+
top.deprec.nginx.restart
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
task :config_system, :roles => :scm do
|
|
119
|
+
deprec2.push_configs(:trac, SYSTEM_CONFIG_FILES[:trac])
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
task :config_project, :roles => :scm do
|
|
123
|
+
deprec2.push_configs(:trac, PROJECT_CONFIG_FILES[:trac])
|
|
124
|
+
symlink_nginx_vhost
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
desc "Initialize the trac db for this project"
|
|
128
|
+
task :setup, :roles => :scm do
|
|
129
|
+
init
|
|
130
|
+
config_gen_project
|
|
131
|
+
config_project
|
|
132
|
+
activate_project
|
|
133
|
+
# set_default_permissions # XXX re-enable this
|
|
134
|
+
# create trac account for current user
|
|
135
|
+
set :trac_account, user
|
|
136
|
+
set :trac_passwordfile_exists, false # hack - should check on remote system instead
|
|
137
|
+
# user_add # XXX re-enable
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
task :init, :roles => :scm do
|
|
141
|
+
deprec2.mkdir(trac_path, :via => :sudo)
|
|
142
|
+
sudo "trac-admin #{trac_path} initenv #{application} sqlite:db/trac.db svn #{repos_root}"
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
task :set_default_permissions, :roles => :scm do
|
|
146
|
+
anonymous_disable
|
|
147
|
+
authenticated_enable
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
task :start, :roles => :scm do
|
|
151
|
+
sudo "/etc/init.d/tracd start"
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
task :stop, :roles => :scm do
|
|
155
|
+
sudo "/etc/init.d/tracd stop"
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
task :restart, :roles => :scm do
|
|
159
|
+
stop
|
|
160
|
+
start
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
task :activate, :roles => :scm do
|
|
164
|
+
activate_system
|
|
165
|
+
activate_project
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
task :activate_system, :roles => :scm do
|
|
169
|
+
sudo "update-rc.d tracd defaults"
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
task :activate_project, :roles => :scm do
|
|
173
|
+
symlink_project
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
task :deactivate, :roles => :scm do
|
|
177
|
+
deactivate_system
|
|
178
|
+
deactivate_project
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
task :deactivate_system, :roles => :scm do
|
|
182
|
+
sudo "update-rc.d -f tracd remove"
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
task :deactivate_project, :roles => :scm do
|
|
186
|
+
unlink_project
|
|
187
|
+
unlink_nginx_vhost
|
|
188
|
+
restart
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
desc "Create backup of trac repository"
|
|
192
|
+
task :backup, :roles => :web do
|
|
193
|
+
# http://trac.edgewall.org/wiki/TracBackup
|
|
194
|
+
timestamp = Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
195
|
+
dest_dir = File.join(trac_backup_dir, "trac_#{application}_#{timestamp}")
|
|
196
|
+
sudo "trac-admin #{trac_path} hotcopy #{dest_dir}"
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
desc "Restore trac repository from backup"
|
|
200
|
+
task :restore, :roles => :web do
|
|
201
|
+
# prompt user to select from list of locally stored backups
|
|
202
|
+
# tracd_stop
|
|
203
|
+
# copy out backup
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
#
|
|
207
|
+
# Service specific tasks for end users
|
|
208
|
+
#
|
|
209
|
+
desc "create a trac user"
|
|
210
|
+
task :user_add, :roles => :scm do
|
|
211
|
+
create_file = trac_passwordfile_exists ? '' : ' -c '
|
|
212
|
+
htdigest = '/usr/local/apache2/bin/htdigest'
|
|
213
|
+
# XXX check if htdigest file exists and add '-c' option if not
|
|
214
|
+
# sudo "test -f #{trac_path/conf/users.htdigest}
|
|
215
|
+
create_file = trac_passwordfile_exists ? '' : ' -c '
|
|
216
|
+
deprec2.sudo_with_input("#{htdigest} #{create_file} #{trac_path}/conf/users.htdigest #{application} #{trac_account}", /password:/)
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
desc "list trac users"
|
|
220
|
+
task :list_users, :roles => :scm do
|
|
221
|
+
sudo "cat #{trac_path}/conf/users.htdigest"
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
# desc "disable anonymous access to everything"
|
|
225
|
+
task :anonymous_disable, :roles => :scm do
|
|
226
|
+
sudo "trac-admin #{trac_path} permission remove anonymous '*'"
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
# desc "enable authenticated users access to everything"
|
|
230
|
+
task :authenticated_enable, :roles => :scm do
|
|
231
|
+
sudo "trac-admin #{trac_path} permission add authenticated TRAC_ADMIN"
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
#
|
|
235
|
+
# Helper tasks used by other tasks
|
|
236
|
+
#
|
|
237
|
+
|
|
238
|
+
# Link the trac repos for this project into the master trac repos dir
|
|
239
|
+
# We do this so we can use trac for multiple projects on the same server
|
|
240
|
+
task :symlink_project, :roles => :scm do
|
|
241
|
+
sudo "ln -sf #{trac_path} #{tracd_parent_dir}/#{application}"
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
task :unlink_project, :roles => :scm do
|
|
245
|
+
link = "#{tracd_parent_dir}/#{application}"
|
|
246
|
+
sudo "test -h #{link} && sudo unlink #{link} || true"
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
task :symlink_nginx_vhost, :roles => :scm do
|
|
250
|
+
sudo "ln -sf #{deploy_to}/trac/conf/nginx_vhost.conf #{nginx_vhost_dir}/tracd-#{application}.conf"
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
task :unlink_nginx_vhost, :roles => :scm do
|
|
254
|
+
link = "#{nginx_vhost_dir}/tracd-#{application}.conf"
|
|
255
|
+
sudo "test -h #{link} && unlink #{link} || true"
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
# task :symlink_apache_vhost, :roles => :scm do
|
|
259
|
+
# sudo "ln -sf #{deploy_to}/trac/conf/trac_apache_vhost.conf #{apache_vhost_dir}/#{application}-trac.conf"
|
|
260
|
+
# end
|
|
261
|
+
#
|
|
262
|
+
# task :unlink_apache_vhost, :roles => :scm do
|
|
263
|
+
# link = "#{apache_vhost_dir}/#{application}-trac.conf"
|
|
264
|
+
# sudo "test -h #{link} && unlink #{link} || true"
|
|
265
|
+
# end
|
|
266
|
+
|
|
267
|
+
task :create_pid_dir, :roles => :scm do
|
|
268
|
+
deprec2.mkdir(File.dirname(tracd_pidfile))
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
task :create_parent_dir, :roles => :scm do
|
|
272
|
+
deprec2.mkdir(tracd_parent_dir, :via => :sudo)
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
end end
|
|
276
|
+
|
|
277
|
+
end
|