centostrano 0.1

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.
Files changed (121) hide show
  1. data/CHANGELOG +215 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +166 -0
  5. data/THANKS +5 -0
  6. data/bin/centify +137 -0
  7. data/docs/ANNOUNCE.deprec2 +47 -0
  8. data/docs/README.install +88 -0
  9. data/docs/README.nagios +28 -0
  10. data/docs/README.rails +20 -0
  11. data/docs/README.svn +31 -0
  12. data/docs/ROADMAP.txt +74 -0
  13. data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
  14. data/docs/deprec-1.x/notes.txt +12 -0
  15. data/docs/deprec_banner.gif +0 -0
  16. data/lib/centostrano.rb +9 -0
  17. data/lib/deprec/capistrano_extensions.rb +391 -0
  18. data/lib/deprec/centostrano.rb +46 -0
  19. data/lib/deprec/recipes/apache.rb +188 -0
  20. data/lib/deprec/recipes/canonical.rb +57 -0
  21. data/lib/deprec/recipes/deprec.rb +188 -0
  22. data/lib/deprec/recipes/deprecated.rb +71 -0
  23. data/lib/deprec/recipes/example.rb +115 -0
  24. data/lib/deprec/recipes/git.rb +106 -0
  25. data/lib/deprec/recipes/gitosis.rb +134 -0
  26. data/lib/deprec/recipes/logrotate.rb +54 -0
  27. data/lib/deprec/recipes/memcache.rb +53 -0
  28. data/lib/deprec/recipes/merb.rb +57 -0
  29. data/lib/deprec/recipes/mongrel.rb +220 -0
  30. data/lib/deprec/recipes/monit.rb +139 -0
  31. data/lib/deprec/recipes/mysql.rb +147 -0
  32. data/lib/deprec/recipes/nginx.rb +172 -0
  33. data/lib/deprec/recipes/postgresql.rb +132 -0
  34. data/lib/deprec/recipes/rails.rb +297 -0
  35. data/lib/deprec/recipes/ruby.rb +71 -0
  36. data/lib/deprec/recipes/sphinx.rb +89 -0
  37. data/lib/deprec/recipes/ssh.rb +93 -0
  38. data/lib/deprec/recipes/svn.rb +167 -0
  39. data/lib/deprec/recipes/users.rb +90 -0
  40. data/lib/deprec/recipes.rb +33 -0
  41. data/lib/deprec/templates/aoe/aoe-init +55 -0
  42. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  43. data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
  44. data/lib/deprec/templates/apache/httpd.conf +465 -0
  45. data/lib/deprec/templates/apache/index.html.erb +37 -0
  46. data/lib/deprec/templates/apache/master.css +72 -0
  47. data/lib/deprec/templates/centos/repository.erb +6 -0
  48. data/lib/deprec/templates/coraid/aoe-init +55 -0
  49. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  50. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  51. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  52. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  53. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  54. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  55. data/lib/deprec/templates/mongrel/logrotate.erb +0 -0
  56. data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
  57. data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
  58. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  59. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  60. data/lib/deprec/templates/monit/monit-init-script +104 -0
  61. data/lib/deprec/templates/monit/monitrc.erb +227 -0
  62. data/lib/deprec/templates/monit/nothing +0 -0
  63. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  64. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  65. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  66. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  67. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  68. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  69. data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
  70. data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
  71. data/lib/deprec/templates/nagios/contacts.cfg.erb +57 -0
  72. data/lib/deprec/templates/nagios/hosts.cfg.erb +143 -0
  73. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  74. data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
  75. data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
  76. data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
  77. data/lib/deprec/templates/nagios/nrpe.cfg.erb +210 -0
  78. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  79. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  80. data/lib/deprec/templates/nagios/services.cfg.erb +79 -0
  81. data/lib/deprec/templates/nagios/templates.cfg.erb +9 -0
  82. data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
  83. data/lib/deprec/templates/network/hostname.erb +1 -0
  84. data/lib/deprec/templates/network/hosts.erb +2 -0
  85. data/lib/deprec/templates/network/interfaces.erb +22 -0
  86. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  87. data/lib/deprec/templates/nginx/logrotate.erb +0 -0
  88. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  89. data/lib/deprec/templates/nginx/nginx-init-script +109 -0
  90. data/lib/deprec/templates/nginx/nginx.conf.erb +120 -0
  91. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  92. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  93. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
  94. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  95. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  96. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  97. data/lib/deprec/templates/postfix/main.cf.erb +41 -0
  98. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  99. data/lib/deprec/templates/postgresql/pg_hba.conf.erb +76 -0
  100. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  101. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  102. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  103. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  104. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  105. data/lib/deprec/templates/trac/trac.ini.erb +106 -0
  106. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  107. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  108. data/lib/deprec/templates/xen/15-disable-hwclock +40 -0
  109. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  110. data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
  111. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  112. data/lib/deprec/templates/xen/xend-init.erb +69 -0
  113. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  114. data/lib/deprec/templates/xen/xm.tmpl.erb +85 -0
  115. data/lib/deprec_cmd_completion.sh +26 -0
  116. data/lib/vmbuilder_plugins/all.rb +20 -0
  117. data/lib/vmbuilder_plugins/apt.rb +93 -0
  118. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  119. data/lib/vmbuilder_plugins/gem.rb +90 -0
  120. data/lib/vmbuilder_plugins/std.rb +203 -0
  121. metadata +207 -0
@@ -0,0 +1,297 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+
4
+ set :database_yml_in_scm, true
5
+ set :app_symlinks, nil
6
+ set :rails_env, 'production'
7
+ set :gems_for_project, nil # Array of gems to be installed for app
8
+ set :shared_dirs, nil # Array of directories that should be created under shared/
9
+ # and linked to in the project
10
+
11
+ # Hook into the default capistrano deploy tasks
12
+ before 'deploy:setup', :except => { :no_release => true } do
13
+ top.centos.rails.setup_user_perms
14
+ top.centos.rails.setup_paths
15
+ top.centos.rails.setup_shared_dirs
16
+ top.centos.rails.install_gems_for_project
17
+ end
18
+
19
+ after 'deploy:setup', :except => { :no_release => true } do
20
+ top.centos.rails.setup_servers
21
+ top.centos.rails.create_config_dir
22
+ top.centos.rails.set_perms_on_shared_and_releases
23
+ end
24
+
25
+ after 'deploy:symlink', :roles => :app do
26
+ top.centos.rails.symlink_shared_dirs
27
+ top.centos.rails.symlink_database_yml unless database_yml_in_scm
28
+ top.centos.mongrel.set_perms_for_mongrel_dirs
29
+ end
30
+
31
+ after :deploy, :roles => :app do
32
+ deploy.cleanup
33
+ end
34
+
35
+ namespace :centos do
36
+ namespace :rails do
37
+
38
+ task :install, :roles => :app do
39
+ install_deps
40
+ install_gems
41
+ end
42
+
43
+ task :install_deps do
44
+ apt.install( {:base => %w(sqlite sqlite-devel)}, :stable )
45
+ apt.install( {:base => %w(mysql-devel)}, :stable )
46
+ end
47
+
48
+ # install some required ruby gems
49
+ task :install_gems do
50
+ gem2.install 'sqlite3-ruby'
51
+ gem2.install 'mysql -- --with-mysql-include=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql'
52
+ gem2.install 'rails'
53
+ gem2.install 'rspec'
54
+ end
55
+
56
+ desc <<-DESC
57
+ Install full rails stack on a stock standard CentOS server (5.1 and 5.2 tested)
58
+ DESC
59
+
60
+ task :install_stack do
61
+ # Ruby everywhere!
62
+ top.centos.ruby.install
63
+ top.centos.rubygems.install
64
+
65
+ # Stop and deactivate apache 2
66
+ deprec2.for_roles('web') do
67
+ top.centos.apache.stop
68
+ top.centos.apache.deactivate
69
+ end
70
+
71
+ # Install nginx
72
+ deprec2.for_roles('web') do
73
+ top.centos.nginx.install
74
+ end
75
+
76
+ deprec2.for_roles('app') do
77
+ top.centos.svn.install
78
+ top.centos.git.install
79
+ top.centos.mongrel.install
80
+ top.centos.monit.install
81
+ top.centos.rails.install
82
+ end
83
+
84
+ deprec2.for_roles('web,app') do
85
+ top.centos.logrotate.install
86
+ end
87
+
88
+ # Install database separately
89
+ # deprec2.for_roles('db') do
90
+ # top.centos.mysql.install
91
+ # top.centos.mysql.start
92
+ # end
93
+
94
+ end
95
+
96
+ task :install_rails_stack do
97
+ puts "deprecated: this task is now called install_stack"
98
+ install_stack
99
+ end
100
+
101
+ task :install_gems_for_project do
102
+ if gems_for_project
103
+ gems_for_project.each { |gem| gem2.install(gem) }
104
+ end
105
+ end
106
+
107
+ PROJECT_CONFIG_FILES[:nginx] = [
108
+
109
+ {:template => 'rails_nginx_vhost.conf.erb',
110
+ :path => "rails_nginx_vhost.conf",
111
+ :mode => 0644,
112
+ :owner => 'root:root'},
113
+
114
+ {:template => 'logrotate.conf.erb',
115
+ :path => "logrotate.conf",
116
+ :mode => 0644,
117
+ :owner => 'root:root'}
118
+ ]
119
+
120
+ desc "Generate config files for rails app."
121
+ task :config_gen do
122
+ PROJECT_CONFIG_FILES[:nginx].each do |file|
123
+ deprec2.render_template(:nginx, file)
124
+ end
125
+ top.centos.mongrel.config_gen_project
126
+ top.centos.mongrel.config_project
127
+ end
128
+
129
+ desc "Push out config files for rails app."
130
+ task :config, :roles => [:app, :web] do
131
+ deprec2.push_configs(:nginx, PROJECT_CONFIG_FILES[:nginx])
132
+ top.centos.mongrel.config_project
133
+ symlink_nginx_vhost
134
+ symlink_logrotate_config
135
+ end
136
+
137
+ task :symlink_nginx_vhost, :roles => :web do
138
+ sudo "ln -sf #{deploy_to}/nginx/rails_nginx_vhost.conf #{nginx_vhost_dir}/#{application}.conf"
139
+ end
140
+
141
+ task :symlink_logrotate_config, :roles => :web do
142
+ sudo "ln -sf #{deploy_to}/nginx/logrotate.conf /etc/logrotate.d/nginx-#{application}"
143
+ end
144
+
145
+ task :create_config_dir do
146
+ deprec2.mkdir("#{shared_path}/config", :group => group, :mode => 0775, :via => :sudo)
147
+ end
148
+
149
+ desc "Create deployment group and add current user to it"
150
+ task :setup_user_perms do
151
+ deprec2.groupadd(group)
152
+ deprec2.add_user_to_group(user, group)
153
+ deprec2.groupadd(mongrel_group)
154
+ deprec2.add_user_to_group(user, mongrel_group)
155
+ # we've just added ourself to a group - need to teardown connection
156
+ # so that next command uses new session where we belong in group
157
+ deprec2.teardown_connections
158
+ end
159
+
160
+ task :set_perms_on_shared_and_releases, :roles => :app do
161
+ releases = File.join(deploy_to, 'releases')
162
+ sudo "chgrp -R #{group} #{shared_path} #{releases}"
163
+ sudo "chmod -R g+w #{shared_path} #{releases}"
164
+ end
165
+
166
+ # Setup database server.
167
+ task :setup_db, :roles => :db, :only => { :primary => true } do
168
+ top.centos.mysql.setup
169
+ end
170
+
171
+ # setup extra paths required for deployment
172
+ task :setup_paths, :roles => :app do
173
+ deprec2.mkdir(deploy_to, :mode => 0775, :group => group, :via => :sudo)
174
+ deprec2.mkdir(shared_path, :mode => 0775, :group => group, :via => :sudo)
175
+ end
176
+
177
+ # Symlink list of files and dirs from shared to current
178
+ #
179
+ # XXX write up explanation
180
+ #
181
+ desc "Setup shared dirs"
182
+ task :setup_shared_dirs, :roles => [:app, :web] do
183
+ if shared_dirs
184
+ shared_dirs.each { |dir| deprec2.mkdir( "#{shared_path}/#{dir}", :via => :sudo ) }
185
+ end
186
+ end
187
+ #
188
+ desc "Symlink shared dirs."
189
+ task :symlink_shared_dirs, :roles => [:app, :web] do
190
+ if shared_dirs
191
+ shared_dirs.each do |dir|
192
+ path = File.split(dir)[0]
193
+ if path != '.'
194
+ deprec2.mkdir("#{current_path}/#{path}")
195
+ end
196
+ run "ln -nfs #{shared_path}/#{dir} #{current_path}/#{dir}"
197
+ end
198
+ end
199
+ end
200
+
201
+ # desc "Symlink shared files."
202
+ # task :symlink_shared_files, :roles => [:app, :web] do
203
+ # if shared_files
204
+ # shared_files.each { |file| run "ln -nfs #{shared_path}/#{file} #{current_path}/#{file}" }
205
+ # end
206
+ # end
207
+
208
+ # database.yml stuff
209
+ #
210
+ # XXX DRY this up
211
+ # I don't know how to let :gen_db_yml check if values have been set.
212
+ #
213
+ # if (self.respond_to?("db_host_#{rails_env}".to_sym)) # doesn't seem to work
214
+
215
+ set :db_host_default, lambda { Capistrano::CLI.prompt 'Enter database host', 'localhost'}
216
+ set :db_host_staging, lambda { db_host_default }
217
+ set :db_host_production, lambda { db_host_default }
218
+
219
+ set :db_name_default, lambda { Capistrano::CLI.prompt 'Enter database name', "#{application}_#{rails_env}" }
220
+ set :db_name_staging, lambda { db_name_default }
221
+ set :db_name_production, lambda { db_name_default }
222
+
223
+ set :db_user_default, lambda { Capistrano::CLI.prompt 'Enter database user', 'root' }
224
+ set :db_user_staging, lambda { db_user_default }
225
+ set :db_user_production, lambda { db_user_default }
226
+
227
+ set :db_pass_default, lambda { Capistrano::CLI.prompt 'Enter database pass', '' }
228
+ set :db_pass_staging, lambda { db_pass_default }
229
+ set :db_pass_production, lambda { db_pass_default }
230
+
231
+ set :db_adaptor_default, lambda { Capistrano::CLI.prompt 'Enter database adaptor', 'mysql' }
232
+ set :db_adaptor_staging, lambda { db_adaptor_default }
233
+ set :db_adaptor_production, lambda { db_adaptor_default }
234
+
235
+ set :db_socket_default, lambda { Capistrano::CLI.prompt('Enter database socket', '')}
236
+ set :db_socket_staging, lambda { db_socket_default }
237
+ set :db_socket_production, lambda { db_socket_default }
238
+
239
+ task :generate_database_yml, :roles => :app do
240
+ database_configuration = render :template => <<-EOF
241
+ #{rails_env}:
242
+ adapter: #{self.send("db_adaptor_#{rails_env}")}
243
+ database: #{self.send("db_name_#{rails_env}")}
244
+ username: #{self.send("db_user_#{rails_env}")}
245
+ password: #{self.send("db_pass_#{rails_env}")}
246
+ host: #{self.send("db_host_#{rails_env}")}
247
+ socket: #{self.send("db_socket_#{rails_env}")}
248
+ EOF
249
+ run "mkdir -p #{deploy_to}/#{shared_dir}/config"
250
+ put database_configuration, "#{deploy_to}/#{shared_dir}/config/database.yml"
251
+ end
252
+
253
+ desc "Link in the production database.yml"
254
+ task :symlink_database_yml, :roles => :app do
255
+ run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
256
+ end
257
+
258
+
259
+ desc "setup and configure servers"
260
+ task :setup_servers do
261
+
262
+ top.centos.nginx.activate
263
+ top.centos.mongrel.create_mongrel_user_and_group
264
+ top.centos.mongrel.activate
265
+ top.centos.monit.activate
266
+ top.centos.rails.config_gen
267
+ top.centos.rails.config
268
+ end
269
+ end
270
+
271
+ namespace :db do
272
+
273
+ desc "Create database"
274
+ task :create, :roles => :db do
275
+ run "cd #{deploy_to}/current && rake db:create RAILS_ENV=#{rails_env}"
276
+ end
277
+
278
+ desc "Run database migrations"
279
+ task :migrate, :roles => :db do
280
+ run "cd #{deploy_to}/current && rake db:migrate RAILS_ENV=#{rails_env}"
281
+ end
282
+
283
+ desc "Run database migrations"
284
+ task :schema_load, :roles => :db do
285
+ run "cd #{deploy_to}/current && rake db:schema:load RAILS_ENV=#{rails_env}"
286
+ end
287
+
288
+ desc "Roll database back to previous migration"
289
+ task :rollback, :roles => :db do
290
+ run "cd #{deploy_to}/current && rake db:rollback RAILS_ENV=#{rails_env}"
291
+ end
292
+
293
+ end
294
+
295
+
296
+ end
297
+ end
@@ -0,0 +1,71 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+
4
+ namespace :centos do
5
+ namespace :ruby do
6
+
7
+ SRC_PACKAGES[:ruby] = {
8
+ :filename => 'ruby-1.8.6-p111.tar.gz',
9
+ :md5sum => "c36e011733a3a3be6f43ba27b7cd7485 ruby-1.8.6-p111.tar.gz",
10
+ :dir => 'ruby-1.8.6-p111',
11
+ :url => "ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz",
12
+ :unpack => "tar zxf ruby-1.8.6-p111.tar.gz; cd ruby-1.8.6-p111; wget -q -O - wget http://blog.phusion.nl/assets/r8ee-security-patch-20080623-2.txt | patch -p1",
13
+ :configure => %w(
14
+ ./configure
15
+ --with-install-readline
16
+ ;
17
+ ).reject{|arg| arg.match '#'}.join(' '),
18
+ :make => 'make;',
19
+ :install => 'make install;',
20
+ :version => 'c1.8.6',
21
+ :release => '111eephusion'
22
+ }
23
+
24
+ task :install do
25
+ install_deps
26
+ deprec2.download_src(SRC_PACKAGES[:ruby], src_dir)
27
+ yum.install_from_src(SRC_PACKAGES[:ruby], src_dir)
28
+ end
29
+
30
+ task :install_deps do
31
+ apt.install( {:base => %w(pcre* gcc make openssl openssl-devel readline-devel)}, :stable )
32
+ end
33
+
34
+ end
35
+ end
36
+
37
+
38
+ namespace :centos do
39
+ namespace :rubygems do
40
+
41
+ SRC_PACKAGES[:rubygems] = {
42
+ :filename => 'rubygems-1.2.0.tgz',
43
+ :md5sum => "b77a4234360735174d1692e6fc598402 rubygems-1.2.0.tgz",
44
+ :dir => 'rubygems-1.2.0',
45
+ :url => "http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz",
46
+ :unpack => "tar zxf rubygems-1.2.0.tgz;",
47
+ :install => 'ruby setup.rb;',
48
+ :version => 'c1.2.0',
49
+ :release => '1'
50
+ }
51
+
52
+ task :install do
53
+ install_deps
54
+ deprec2.download_src(SRC_PACKAGES[:rubygems], src_dir)
55
+ yum.install_from_src(SRC_PACKAGES[:rubygems], src_dir)
56
+ # gem2.upgrade # you may not want to upgrade your gems right now
57
+ # If we want to selfupdate then we need to
58
+ # create symlink as latest gems version is broken
59
+ # gem2.update_system
60
+ # sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
61
+ end
62
+
63
+ # install dependencies for rubygems
64
+ task :install_deps do
65
+ apt.install( {:base => %w(pcre* gcc make openssl openssl-devel)}, :stable )
66
+ end
67
+
68
+ end
69
+ end
70
+
71
+ end
@@ -0,0 +1,89 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :centos do
4
+ namespace :sphinx do
5
+
6
+ SRC_PACKAGES[:sphinx] = {
7
+ :filename => 'sphinx-0.9.8-rc2.tar.gz',
8
+ :dir => 'sphinx-0.9.8-rc2',
9
+ :url => "http://www.sphinxsearch.com/downloads/sphinx-0.9.8-rc2.tar.gz",
10
+ :unpack => "tar zxf sphinx-0.9.8-rc2.tar.gz;",
11
+ :configure => %w(
12
+ ./configure
13
+ --with-mysql
14
+ --with-pgsql
15
+ ;
16
+ ).reject{|arg| arg.match '#'}.join(' '),
17
+ :make => 'make;',
18
+ :install => 'make install;',
19
+ :version => 'c0.9.8',
20
+ :release => '0rc2'
21
+ }
22
+
23
+ desc "install Sphinx Search Engine"
24
+ task :install do
25
+ install_deps
26
+ deprec2.download_src(SRC_PACKAGES[:sphinx], src_dir)
27
+ yum.install_from_src(SRC_PACKAGES[:sphinx], src_dir)
28
+ end
29
+
30
+ # install dependencies for sphinx
31
+ task :install_deps do
32
+ # apt.install( {:base => %w(blah)}, :stable )
33
+ top.centos.postgresql.install
34
+ end
35
+
36
+ SYSTEM_CONFIG_FILES[:sphinx] = []
37
+
38
+ PROJECT_CONFIG_FILES[:sphinx] = [
39
+
40
+ {:template => 'monit.conf.erb',
41
+ :path => 'monit.conf',
42
+ :mode => 0644,
43
+ :owner => 'root:root'}
44
+
45
+ ]
46
+
47
+ desc <<-DESC
48
+ Generate sphinx config from template. Note that this does not
49
+ push the config to the server, it merely generates required
50
+ configuration files. These should be kept under source control.
51
+ The can be pushed to the server with the :config task.
52
+ DESC
53
+ task :config_gen do
54
+ PROJECT_CONFIG_FILES[:sphinx].each do |file|
55
+ deprec2.render_template(:sphinx, file)
56
+ end
57
+ end
58
+
59
+ desc "Push sphinx config files to server"
60
+ task :config, :roles => :sphinx do
61
+ config_project
62
+ end
63
+
64
+ desc "Push sphinx config files to server"
65
+ task :config_project, :roles => :sphinx do
66
+ deprec2.push_configs(:sphinx, PROJECT_CONFIG_FILES[:sphinx])
67
+ symlink_monit_config
68
+ end
69
+
70
+ task :symlink_monit_config, :roles => :sphinx do
71
+ sudo "ln -sf #{deploy_to}/sphinx/monit.conf #{monit_confd_dir}/sphinx_#{application}.conf"
72
+ end
73
+
74
+
75
+ # Control
76
+
77
+ desc "Restart the sphinx searchd daemon"
78
+ task :restart, :roles => :app do
79
+ run("cd #{deploy_to}/current; /usr/bin/rake us:start") ### start or restart? SUDO ? ###
80
+ end
81
+
82
+ desc "Regenerate / Rotate the search index."
83
+ task :reindex, :roles => :app do
84
+ run("cd #{deploy_to}/current; /usr/bin/rake us:in") ### SUDO ? ###
85
+ end
86
+
87
+ end
88
+ end
89
+ end