calas-capitate 0.3.6

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 (122) hide show
  1. data/Capfile +13 -0
  2. data/History.txt +167 -0
  3. data/License.txt +20 -0
  4. data/Manifest.txt +121 -0
  5. data/README.txt +8 -0
  6. data/Rakefile +4 -0
  7. data/config/hoe.rb +72 -0
  8. data/config/requirements.rb +17 -0
  9. data/lib/capitate.rb +56 -0
  10. data/lib/capitate/cap_ext/connections.rb +105 -0
  11. data/lib/capitate/cap_ext/docs.rb +26 -0
  12. data/lib/capitate/cap_ext/namespace.rb +34 -0
  13. data/lib/capitate/cap_ext/run_via.rb +16 -0
  14. data/lib/capitate/cap_ext/task_definition.rb +22 -0
  15. data/lib/capitate/cap_ext/variables.rb +132 -0
  16. data/lib/capitate/plugins/base.rb +140 -0
  17. data/lib/capitate/plugins/build.rb +71 -0
  18. data/lib/capitate/plugins/gem.rb +24 -0
  19. data/lib/capitate/plugins/prompt.rb +109 -0
  20. data/lib/capitate/plugins/rake.rb +25 -0
  21. data/lib/capitate/plugins/script.rb +96 -0
  22. data/lib/capitate/plugins/templates.rb +113 -0
  23. data/lib/capitate/plugins/utils.rb +151 -0
  24. data/lib/capitate/plugins/yum.rb +76 -0
  25. data/lib/capitate/recipes.rb +5 -0
  26. data/lib/capitate/task_node.rb +262 -0
  27. data/lib/capitate/version.rb +9 -0
  28. data/lib/deployment/centos-5.1-64-web/install.rb +196 -0
  29. data/lib/recipes/active_record.rb +36 -0
  30. data/lib/recipes/apache.rb +47 -0
  31. data/lib/recipes/backgroundrb.rb +29 -0
  32. data/lib/recipes/centos/backgroundjob.rb +27 -0
  33. data/lib/recipes/centos/backgroundrb.rb +23 -0
  34. data/lib/recipes/centos/centos.rb +45 -0
  35. data/lib/recipes/centos/imagemagick.rb +29 -0
  36. data/lib/recipes/centos/memcached.rb +45 -0
  37. data/lib/recipes/centos/merb.rb +23 -0
  38. data/lib/recipes/centos/mongrel_cluster.rb +54 -0
  39. data/lib/recipes/centos/monit.rb +62 -0
  40. data/lib/recipes/centos/mysql.rb +25 -0
  41. data/lib/recipes/centos/nginx.rb +64 -0
  42. data/lib/recipes/centos/ruby.rb +40 -0
  43. data/lib/recipes/centos/sphinx.rb +59 -0
  44. data/lib/recipes/docs.rb +24 -0
  45. data/lib/recipes/logrotate/backgroundjob.rb +26 -0
  46. data/lib/recipes/logrotate/backgroundrb.rb +26 -0
  47. data/lib/recipes/logrotate/merb.rb +25 -0
  48. data/lib/recipes/logrotate/mongrel_cluster.rb +29 -0
  49. data/lib/recipes/logrotate/monit.rb +28 -0
  50. data/lib/recipes/logrotate/mysql.rb +26 -0
  51. data/lib/recipes/logrotate/nginx.rb +37 -0
  52. data/lib/recipes/logrotate/rails.rb +21 -0
  53. data/lib/recipes/logrotate/sphinx.rb +21 -0
  54. data/lib/recipes/logrotated.rb +61 -0
  55. data/lib/recipes/memcached.rb +26 -0
  56. data/lib/recipes/merb.rb +32 -0
  57. data/lib/recipes/monit.rb +35 -0
  58. data/lib/recipes/monit/backgroundjob.rb +38 -0
  59. data/lib/recipes/monit/backgroundrb.rb +38 -0
  60. data/lib/recipes/monit/database.rb +25 -0
  61. data/lib/recipes/monit/memcached.rb +22 -0
  62. data/lib/recipes/monit/merb.rb +58 -0
  63. data/lib/recipes/monit/mongrel_cluster.rb +85 -0
  64. data/lib/recipes/monit/mysql.rb +20 -0
  65. data/lib/recipes/monit/nginx.rb +37 -0
  66. data/lib/recipes/monit/sphinx.rb +38 -0
  67. data/lib/recipes/monit/sshd.rb +27 -0
  68. data/lib/recipes/mysql.rb +42 -0
  69. data/lib/recipes/nginx.rb +29 -0
  70. data/lib/recipes/rails.rb +71 -0
  71. data/lib/recipes/redmine.rb +38 -0
  72. data/lib/recipes/sphinx.rb +60 -0
  73. data/lib/recipes/sshd.rb +47 -0
  74. data/lib/recipes/syslogd.rb +21 -0
  75. data/lib/templates/apache/vhost.mongrel_cluster.conf.erb +46 -0
  76. data/lib/templates/backgroundjob/backgroundjob.initd.centos.erb +54 -0
  77. data/lib/templates/backgroundjob/backgroundjob.monitrc.erb +3 -0
  78. data/lib/templates/backgroundrb/backgroundrb.initd.centos.erb +58 -0
  79. data/lib/templates/backgroundrb/backgroundrb.monitrc.erb +3 -0
  80. data/lib/templates/backgroundrb/backgroundrb.yml.erb +14 -0
  81. data/lib/templates/capistrano/Capfile +22 -0
  82. data/lib/templates/logrotated/conf.erb +3 -0
  83. data/lib/templates/memcached/memcached.initd.centos.erb +58 -0
  84. data/lib/templates/memcached/memcached.monitrc.erb +4 -0
  85. data/lib/templates/memcached/memcached.yml.erb +14 -0
  86. data/lib/templates/merb/merb-no-http.monitrc.erb +13 -0
  87. data/lib/templates/merb/merb.initd.centos.erb +123 -0
  88. data/lib/templates/merb/merb.monitrc.erb +15 -0
  89. data/lib/templates/mongrel/mongrel_cluster.initd.centos.erb +94 -0
  90. data/lib/templates/mongrel/mongrel_cluster.monitrc.erb +15 -0
  91. data/lib/templates/mongrel/mongrel_cluster.yml.erb +11 -0
  92. data/lib/templates/monit/monit.cnf +34 -0
  93. data/lib/templates/monit/monit.initd.centos.erb +68 -0
  94. data/lib/templates/monit/monitrc.erb +18 -0
  95. data/lib/templates/mysql/install_db.sql.erb +6 -0
  96. data/lib/templates/mysql/my.cnf.innodb_1024.erb +122 -0
  97. data/lib/templates/mysql/my.cnf.innodb_512.erb +127 -0
  98. data/lib/templates/mysql/mysql.monitrc.erb +6 -0
  99. data/lib/templates/nginx/nginx.conf.erb +97 -0
  100. data/lib/templates/nginx/nginx.initd.centos.erb +69 -0
  101. data/lib/templates/nginx/nginx.monitrc.erb +4 -0
  102. data/lib/templates/nginx/nginx_vhost.conf.erb +101 -0
  103. data/lib/templates/nginx/nginx_vhost_generic.conf.erb +99 -0
  104. data/lib/templates/rails/database.yml.erb +7 -0
  105. data/lib/templates/redmine/email.yml.erb +10 -0
  106. data/lib/templates/ruby/fix_openssl.sh +12 -0
  107. data/lib/templates/sphinx/sphinx.conf.erb +157 -0
  108. data/lib/templates/sphinx/sphinx.monitrc.erb +4 -0
  109. data/lib/templates/sphinx/sphinx_app.initd.centos.erb +90 -0
  110. data/lib/templates/sshd/sshd.monitrc.erb +5 -0
  111. data/script/destroy +14 -0
  112. data/script/generate +14 -0
  113. data/script/txt2html +80 -0
  114. data/setup.rb +1585 -0
  115. data/tasks/deployment.rake +34 -0
  116. data/tasks/environment.rake +7 -0
  117. data/tasks/website.rake +23 -0
  118. data/test/test_helper.rb +2 -0
  119. data/test/test_plugin_upload.rb +32 -0
  120. data/test/test_recipes.rb +37 -0
  121. data/test/test_templates.rb +29 -0
  122. metadata +198 -0
@@ -0,0 +1,64 @@
1
+ namespace :nginx do
2
+
3
+ namespace :centos do
4
+
5
+ desc <<-DESC
6
+ Install nginx, conf, initscript, nginx user and service.
7
+
8
+ "Source":#{link_to_source(__FILE__)}
9
+ DESC
10
+ task_arg(:nginx_build_options, <<-EOS)
11
+ Nginx build options.
12
+ <pre>
13
+ <code class="ruby">
14
+ set :nginx_build_options, {
15
+ :url => "http://sysoev.ru/nginx/nginx-0.5.35.tar.gz",
16
+ :configure_options => "--sbin-path=\#{nginx_bin_path} --conf-path=\#{nginx_conf_path}
17
+ --pid-path=\#{nginx_pid_path} --error-log-path=/var/log/nginx_master_error.log --lock-path=/var/lock/nginx
18
+ --prefix=\#{nginx_prefix_path} --with-md5=auto/lib/md5 --with-sha1=auto/lib/sha1 --with-http_ssl_module"
19
+ }
20
+ </code>
21
+ </pre>
22
+ EOS
23
+ task_arg(:nginx_bin_path, "Nginx sbin path", :default => "/sbin/nginx")
24
+ task_arg(:nginx_conf_path, "Path to nginx conf", :default => "/etc/nginx/nginx.conf")
25
+ task_arg(:nginx_pid_path, "Path to nginx pid file", :default => "/var/run/nginx.pid")
26
+ task_arg(:nginx_prefix_path, "Nginx install prefix", :default => "/var/nginx")
27
+ task :install do
28
+ # Install dependencies
29
+ yum.install([ "pcre-devel", "openssl", "openssl-devel" ])
30
+
31
+ # Build
32
+ build.make_install("nginx", nginx_build_options)
33
+
34
+ # Initscript
35
+ initscript
36
+
37
+ # Setup nginx
38
+ run_via "mkdir -p /etc/nginx/vhosts"
39
+ run_via "echo \"# Blank nginx conf; work-around for nginx conf include issue\" > /etc/nginx/vhosts/blank.conf"
40
+ put template.load("nginx/nginx.conf.erb", binding), "/tmp/nginx.conf"
41
+ run_via "install -o root -m 644 /tmp/nginx.conf #{nginx_conf_path} && rm -f /tmp/nginx.conf"
42
+
43
+ # Create nginx user
44
+ run_via "id nginx || /usr/sbin/adduser -r nginx"
45
+ end
46
+
47
+ desc "Install nginx initscript"
48
+ task_arg(:nginx_bin_path, "Nginx sbin path", :default => "/sbin/nginx")
49
+ task_arg(:nginx_conf_path, "Path to nginx conf", :default => "/etc/nginx/nginx.conf")
50
+ task_arg(:nginx_pid_path, "Path to nginx pid file", :default => "/var/run/nginx.pid")
51
+ task :initscript do
52
+ utils.install_template("nginx/nginx.initd.centos.erb", "/etc/init.d/nginx")
53
+ run_via "/sbin/chkconfig --level 345 nginx on"
54
+ end
55
+
56
+ # Restart nginx
57
+ desc "Restart nginx (service)"
58
+ task :restart do
59
+ sudo "/sbin/service nginx restart"
60
+ end
61
+
62
+ end
63
+
64
+ end
@@ -0,0 +1,40 @@
1
+ namespace :ruby do
2
+
3
+ namespace :centos do
4
+
5
+ desc <<-DESC
6
+ Install ruby and rubygems.
7
+
8
+ "Source":#{link_to_source(__FILE__)}
9
+ DESC
10
+ task_arg(:ruby_build_options, <<-EOS)
11
+ Rubygems build options.
12
+ <pre>
13
+ <code class="ruby">
14
+ set :ruby_build_options, {
15
+ :url => "http://capitate.s3.amazonaws.com/ruby-1.8.6-p110.tar.gz",
16
+ :build_dest => "/usr/src",
17
+ :configure_options => "--prefix=/usr",
18
+ :clean => false
19
+ }
20
+ </code>
21
+ </pre>
22
+ EOS
23
+ task_arg(:rubygems_build_options, "Rubygems build options")
24
+ task :install do
25
+ # Install dependencies
26
+ yum.install([ "zlib", "zlib-devel", "readline-devel" ])
27
+
28
+ # Install ruby 1.8.6
29
+ build.make_install("ruby", ruby_build_options)
30
+
31
+ # Install rubygems
32
+ build.install("rubygems", rubygems_build_options) do |dir|
33
+ run_via "cd #{dir} && ruby setup.rb"
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,59 @@
1
+ namespace :sphinx do
2
+
3
+ namespace :centos do
4
+
5
+ desc <<-DESC
6
+ Install sphinx.\n
7
+
8
+ DESC
9
+ task_arg(:sphinx_build_options, <<-EOS)
10
+ Sphinx build options.
11
+ <pre>
12
+ <code class="ruby">
13
+ set :sphinx_build_options, {
14
+ :url => "http://www.sphinxsearch.com/downloads/sphinx-0.9.7.tar.gz",
15
+ :configure_options => "--with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql
16
+ --prefix=\#{sphinx_prefix}"
17
+ }
18
+ </code>
19
+ </pre>
20
+ EOS
21
+ task_arg(:sphinx_prefix, "Sphinx install prefix", :default => "/usr/local/sphinx")
22
+ task :install do
23
+ # Install dependencies
24
+ yum.install([ "gcc-c++" ])
25
+
26
+ # Build
27
+ build.make_install("sphinx", sphinx_build_options)
28
+ end
29
+
30
+ desc <<-DESC
31
+ Setup sphinx for application.
32
+
33
+ "Source":#{link_to_source(__FILE__)}
34
+ DESC
35
+ task_arg(:sphinx_prefix, "Sphinx install prefix", :default => "/usr/local/sphinx")
36
+ task_arg(:sphinx_pid_path, "Directory to sphinx pid", :default => Proc.new{"#{shared_path}/pids/searchd.pid"}, :default_desc => "\#{shared_path}/pids/searchd.pid")
37
+ task_arg(:sphinx_conf_path, "Path to sphinx.conf", :default => Proc.new{"#{shared_path}/config/sphinx.conf"}, :default_desc => "\#{shared_path}/config/sphinx.conf")
38
+ task_arg(:sphinx_index_root, "Path to sphinx indexes", :default => Proc.new{"#{shared_path}/var/index"}, :default_desc => "\#{shared_path}/var/index")
39
+ task :setup do
40
+ initscript
41
+ # Create app indexes dir
42
+ run "mkdir -p #{shared_path}/var/index"
43
+ end
44
+
45
+
46
+ desc "Setup sphinx initscript"
47
+ task_arg(:sphinx_prefix, "Sphinx install prefix", :default => "/usr/local/sphinx")
48
+ task_arg(:sphinx_pid_path, "Directory to sphinx pid", :default => Proc.new{"#{shared_path}/pids/searchd.pid"}, :default_desc => "\#{shared_path}/pids/searchd.pid")
49
+ task_arg(:sphinx_conf_path, "Path to sphinx.conf", :default => Proc.new{"#{shared_path}/config/sphinx.conf"}, :default_desc => "\#{shared_path}/config/sphinx.conf")
50
+ task_arg(:sphinx_index_root, "Path to sphinx indexes", :default => Proc.new{"#{shared_path}/var/index"}, :default_desc => "\#{shared_path}/var/index")
51
+ task :initscript do
52
+ utils.install_template("sphinx/sphinx_app.initd.centos.erb", "/etc/init.d/sphinx_#{application}")
53
+ run_via "/sbin/chkconfig --level 345 sphinx_#{application} on"
54
+
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,24 @@
1
+ namespace :docs do
2
+
3
+ desc <<-DESC
4
+ Generate documentation for all currently loaded recipes. Assumes textile formatting.
5
+
6
+ This recipe generated this documentation.
7
+
8
+ "Source":#{link_to_source(__FILE__)}
9
+ DESC
10
+ task_arg(:docs_recipes_dir, "Destination directory", :default => "docs/recipes")
11
+ task_arg(:docs_recipes_clear, "Whether to clear destination before generating.", :default => true)
12
+ task :recipes do
13
+
14
+ # Build task tree
15
+ top_node = capitate.task_tree
16
+
17
+ FileUtils.rm_rf(docs_recipes_dir) if docs_recipes_clear
18
+ FileUtils.mkdir_p(docs_recipes_dir)
19
+
20
+ top_node.write_doc(docs_recipes_dir, "index", "Recipes", :include_source => true)
21
+
22
+ end
23
+ end
24
+
@@ -0,0 +1,26 @@
1
+ namespace :backgroundjob do
2
+
3
+ namespace :logrotate do
4
+
5
+ desc <<-DESC
6
+ Install logrotated conf for backgroundjob.
7
+
8
+ <dl>
9
+ <dt>backgroundjob_logrotate_path<dt>
10
+ <dd>Backgroundjob logrotate paths.</dd>
11
+ <dd class="default">Defaults to @\#{shared_path}/log/bj*.log@</dd>
12
+ </dl>
13
+ "Source":#{link_to_source(__FILE__)}
14
+ DESC
15
+ task :install do
16
+ fetch_or_default(:backgroundjob_logrotate_path, "#{shared_path}/log/bj*.log")
17
+
18
+ set :logrotate_name, "backgroundjob_#{application}"
19
+ set :logrotate_log_path, backgroundjob_logrotate_path
20
+ set :logrotate_options, [ { :rotate => 2 }, :weekly, :missingok, :notifempty, :copytruncate ]
21
+
22
+ logrotated.install_conf
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,26 @@
1
+ namespace :backgroundrb do
2
+
3
+ namespace :logrotate do
4
+
5
+ desc <<-DESC
6
+ Install logrotated conf for backgroundrb.
7
+
8
+ <dl>
9
+ <dt>backgroundrb_logrotate_path<dt>
10
+ <dd>Backgroundrb logrotate paths.</dd>
11
+ <dd class="default">Defaults to @\#{shared_path}/log/backgroundrb*.log@</dd>
12
+ </dl>
13
+ "Source":#{link_to_source(__FILE__)}
14
+ DESC
15
+ task :install do
16
+ fetch_or_default(:backgroundrb_logrotate_path, "#{shared_path}/log/backgroundrb*.log")
17
+
18
+ set :logrotate_name, "backgroundrb_#{application}"
19
+ set :logrotate_log_path, backgroundrb_logrotate_path
20
+ set :logrotate_options, [ { :rotate => 2 }, :weekly, :missingok, :notifempty, :copytruncate ]
21
+
22
+ logrotated.install_conf
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,25 @@
1
+ namespace :merb do
2
+
3
+ namespace :logrotate do
4
+ desc <<-DESC
5
+ Install logrotated conf for merb.
6
+
7
+ <dl>
8
+ <dt>merb_logrotate_path</dt>
9
+ <dd>Merb logrotate path</dd>
10
+ <dd class="default">Defaults to @\#{shared_path}/log/merb.*.log@</dd>
11
+ </dl>
12
+ "Source":#{link_to_source(__FILE__)}
13
+ DESC
14
+ task :install do
15
+ fetch_or_default(:merb_logrotate_path, "#{shared_path}/log/merb.*.log")
16
+
17
+ set :logrotate_name, "merb_#{application}"
18
+ set :logrotate_log_path, merb_logrotate_path
19
+ set :logrotate_options, [ { :rotate => 7 }, :daily, :missingok, :notifempty, :copytruncate ]
20
+
21
+ logrotated.install_conf
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,29 @@
1
+ namespace :mongrel do
2
+
3
+ namespace :cluster do
4
+
5
+ namespace :logrotate do
6
+ desc <<-DESC
7
+ Install logrotated conf for mongrel cluster.
8
+
9
+ <dl>
10
+ <dt>mongrel_cluster_logrotate_path</dt>
11
+ <dd>Mongrel cluster logrotate path</dd>
12
+ <dd class="default">Defaults to @\#{shared_path}/log/mongrel_cluster_*.log@</dd>
13
+ </dl>
14
+ "Source":#{link_to_source(__FILE__)}
15
+ DESC
16
+ task :install do
17
+ fetch_or_default(:mongrel_cluster_logrotate_path, "#{shared_path}/log/mongrel_cluster_*.log")
18
+
19
+ set :logrotate_name, "mongrel_cluster_#{application}"
20
+ set :logrotate_log_path, mongrel_cluster_logrotate_path
21
+ set :logrotate_options, [ { :rotate => 7 }, :daily, :missingok, :notifempty, :copytruncate ]
22
+
23
+ logrotated.install_conf
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,28 @@
1
+ namespace :monit do
2
+
3
+ namespace :logrotate do
4
+
5
+ desc <<-DESC
6
+ Install logrotated conf for monit.
7
+
8
+ <dl>
9
+ <dt>monit_log_path</dt>
10
+ <dd>Path to monit log</dd>
11
+ <dd class="default">Defaults to @"/var/log/monit.log"@</dd>
12
+ </dl>
13
+ "Source":#{link_to_source(__FILE__)}
14
+ DESC
15
+ task :install do
16
+
17
+ fetch_or_default(:monit_log_path, "/var/log/monit.log")
18
+
19
+ set :logrotate_name, "monit"
20
+ set :logrotate_log_path, monit_log_path
21
+ set :logrotate_options, [ { :rotate => 1, :size => "200k" }, :weekly, :missingok, :notifempty, :copytruncate ]
22
+
23
+ logrotated.install_conf
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,26 @@
1
+ namespace :mysql do
2
+
3
+ namespace :logrotate do
4
+
5
+ desc <<-DESC
6
+ Install logrotated conf for mysql.
7
+
8
+ <dl>
9
+ <dt>mysql_logrotate_path</dt>
10
+ <dd>Mysql logrotate path</dd>
11
+ <dd class="default">Defaults to @"/var/lib/mysql/localhost-slow.log"@</dd>
12
+ </dl>
13
+ "Source":#{link_to_source(__FILE__)}
14
+ DESC
15
+ task :install do
16
+ fetch_or_default(:mysql_logrotate_path, "/var/lib/mysql/localhost-slow.log")
17
+
18
+ set :logrotate_name, "mysql"
19
+ set :logrotate_log_path, mysql_logrotate_path
20
+ set :logrotate_options, [ { :rotate => 7, :size => "10M" }, :daily, :missingok, :notifempty, :copytruncate ]
21
+
22
+ logrotated.install_conf
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,37 @@
1
+ namespace :nginx do
2
+
3
+ # Logrotate recipes for nginx
4
+ namespace :logrotate do
5
+
6
+ desc <<-DESC
7
+ Install logrotated conf for nginx.
8
+
9
+ *nginx_logrotate_path*: Nginx logrotate path. _Defaults to <tt>/var/log/nginx_*.log</tt>_
10
+ DESC
11
+ task :install do
12
+ fetch_or_default(:nginx_logrotate_path, "/var/log/nginx_*.log")
13
+
14
+ set :logrotate_name, "nginx_main"
15
+ set :logrotate_log_path, nginx_logrotate_path
16
+ set :logrotate_options, [ { :rotate => 2, :size => "10M" }, :daily, :missingok, :notifempty, :copytruncate ]
17
+
18
+ logrotated.install_conf
19
+ end
20
+
21
+ desc <<-DESC
22
+ Install logrotated conf for vhost.
23
+
24
+ *nginx_vhost_logrotate_path*: Nginx logrotate path (for vhost). _Defaults to <tt>{shared_path}/log/nginx.*.log</tt>_
25
+ DESC
26
+ task :install_vhost do
27
+ fetch_or_default(:nginx_vhost_logrotate_path, "#{shared_path}/log/nginx.*.log")
28
+
29
+ set :logrotate_name, "nginx_#{application}"
30
+ set :logrotate_log_path, nginx_vhost_logrotate_path
31
+ set :logrotate_options, [ { :rotate => 2, :size => "10M" }, :daily, :missingok, :notifempty, :copytruncate ]
32
+
33
+ logrotated.install_conf
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,21 @@
1
+ namespace :rails do
2
+
3
+ # Log rotate tasks
4
+ namespace :logrotate do
5
+ desc <<-DESC
6
+ Install logrotated conf for rails.
7
+
8
+ *rails_logrotate_path*: Rails logrotate path. _Defaults to <tt>{shared_path}/log/production.log</tt>_
9
+ DESC
10
+ task :install do
11
+ fetch_or_default(:rails_logrotate_path, "#{shared_path}/log/production.log")
12
+
13
+ set :logrotate_name, "rails_#{application}"
14
+ set :logrotate_log_path, rails_logrotate_path
15
+ set :logrotate_options, [ { :rotate => 7, :size => "10M" }, :daily, :missingok, :notifempty, :copytruncate ]
16
+
17
+ logrotated.install_conf
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,21 @@
1
+ namespace :sphinx do
2
+
3
+ # Log rotate tasks
4
+ namespace :logrotate do
5
+ desc <<-DESC
6
+ Install logrotated conf for sphinx.
7
+
8
+ *sphinx_logrotate_path*: Sphinx logrotate paths. _Defaults to <tt>{shared_path}/log/query.log {shared_path}/log/searchd.log</tt>_
9
+ DESC
10
+ task :install do
11
+ fetch_or_default(:sphinx_logrotate_path, "#{shared_path}/log/query.log #{shared_path}/log/searchd.log")
12
+
13
+ set :logrotate_name, "sphinx_#{application}"
14
+ set :logrotate_log_path, sphinx_logrotate_path
15
+ set :logrotate_options, [ { :rotate => 7 }, :daily, :missingok, :notifempty, :copytruncate ]
16
+
17
+ logrotated.install_conf
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,61 @@
1
+
2
+ namespace :logrotated do
3
+
4
+ desc <<-DESC
5
+ Create logrotated conf. You probably use this in other recipes and not standalone.
6
+
7
+ "Source":#{link_to_source(__FILE__)}
8
+ DESC
9
+ task_arg(:logrotate_name, "Name of file in /etc/logrotate.d/")
10
+ task_arg(:logrotate_log_path, "Path to log file. Can include wildcards, like /var/log/foo_*.log.")
11
+ task_arg(:logrotate_options, <<-EOS)
12
+ Log rotate options
13
+
14
+ * :rotate (Number of times to rotate before discarding)
15
+ * :size (Rotate when file hits this size)
16
+ * :daily, :weekly, :monthly (How often to perform rotate)
17
+ * :missingok
18
+ * :compress
19
+ * :delaycompress
20
+ * :notifempty
21
+ * :copytruncate
22
+
23
+ See man page for all the options.
24
+
25
+ <pre>
26
+ <code class="ruby">
27
+ set :logrotate_options, [ { :rotate => 7, :size => 10MB },
28
+ :daily, :missingok, :compress, :delaycompress, :notifempty, :copytruncate ]
29
+ </code>
30
+ </pre>
31
+ EOS
32
+ task :install_conf do
33
+
34
+ text = []
35
+ logrotate_options.each do |option|
36
+ if option.is_a?(Hash)
37
+ option.each do |key, value|
38
+ text << "#{key.to_s} #{value.to_s}"
39
+ end
40
+ else
41
+ text << option.to_s
42
+ end
43
+ end
44
+ set :logrotate_options_text, " " + text.join("\n ")
45
+
46
+ utils.install_template("logrotated/conf.erb", "/etc/logrotate.d/#{logrotate_name}")
47
+
48
+ end
49
+
50
+ desc <<-DESC
51
+ Force rotate files.
52
+
53
+ "Source":#{link_to_source(__FILE__)}
54
+ DESC
55
+ task_arg(:logrotate_bin_path, "Logrotate bin path", :default => "logrotate", :example => "/usr/local/bin/logrotate")
56
+ task_arg(:logrotate_conf_path, "Path to logrotate conf", :default => "/etc/logrotate.conf")
57
+ task :force do
58
+ run_via "#{logrotate_bin_path} -f #{logrotate_conf_path}"
59
+ end
60
+
61
+ end