capitate 0.3.5 → 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 (49) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +3 -9
  3. data/lib/capitate.rb +14 -0
  4. data/lib/capitate/cap_ext/namespace.rb +34 -0
  5. data/lib/capitate/cap_ext/task_definition.rb +22 -0
  6. data/lib/capitate/task_node.rb +21 -1
  7. data/lib/capitate/version.rb +1 -1
  8. data/lib/recipes/active_record.rb +7 -36
  9. data/lib/recipes/backgroundrb.rb +4 -19
  10. data/lib/recipes/centos/backgroundjob.rb +5 -26
  11. data/lib/recipes/centos/backgroundrb.rb +2 -13
  12. data/lib/recipes/centos/centos.rb +4 -26
  13. data/lib/recipes/centos/imagemagick.rb +8 -9
  14. data/lib/recipes/centos/memcached.rb +12 -53
  15. data/lib/recipes/centos/merb.rb +7 -33
  16. data/lib/recipes/centos/mongrel_cluster.rb +15 -51
  17. data/lib/recipes/centos/monit.rb +10 -36
  18. data/lib/recipes/centos/mysql.rb +1 -10
  19. data/lib/recipes/centos/nginx.rb +14 -42
  20. data/lib/recipes/centos/ruby.rb +6 -15
  21. data/lib/recipes/centos/sphinx.rb +13 -36
  22. data/lib/recipes/docs.rb +2 -14
  23. data/lib/recipes/logrotated.rb +20 -40
  24. data/lib/recipes/memcached.rb +10 -41
  25. data/lib/recipes/merb.rb +3 -4
  26. data/lib/recipes/monit.rb +4 -23
  27. data/lib/recipes/monit/merb.rb +7 -12
  28. data/lib/recipes/monit/mysql.rb +3 -19
  29. data/lib/recipes/monit/nginx.rb +2 -16
  30. data/lib/recipes/monit/sphinx.rb +20 -11
  31. data/lib/recipes/mysql.rb +13 -53
  32. data/lib/recipes/nginx.rb +9 -65
  33. data/lib/recipes/rails.rb +0 -58
  34. data/lib/recipes/sphinx.rb +20 -46
  35. data/lib/recipes/sshd.rb +6 -15
  36. data/lib/recipes/syslogd.rb +3 -43
  37. data/lib/templates/backgroundjob/backgroundjob.initd.centos.erb +4 -4
  38. data/lib/templates/merb/merb-no-http.monitrc.erb +13 -0
  39. data/lib/templates/merb/merb.initd.centos.erb +3 -3
  40. metadata +5 -12
  41. data/docs/nginx.README +0 -12
  42. data/website/index.html +0 -154
  43. data/website/index.txt +0 -69
  44. data/website/javascripts/code_highlighter.js +0 -188
  45. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  46. data/website/javascripts/ruby.js +0 -18
  47. data/website/stylesheets/screen.css +0 -265
  48. data/website/template.rhtml +0 -69
  49. data/website/template_recipe.rhtml +0 -44
@@ -3,49 +3,18 @@ namespace :memcached do
3
3
  desc <<-DESC
4
4
  Create memcached yaml in shared path.
5
5
 
6
- <dl>
7
- <dt>memcached_namespace</dt>
8
-
9
- <dt>memcached_ttl</dt>
10
- <dd class="default">Defaults to @3600@</dd>
11
-
12
- <dt>memcached_readonly</dt>
13
- <dd class="default">Defaults to @false@</dd>
14
-
15
- <dt>memcached_urlencode</dt>
16
- <dd class="default">Defaults to @false@</dd>
17
-
18
- <dt>memcached_c_threshold</dt>
19
- <dd class="default">Defaults to @10000@</dd>
20
-
21
- <dt>memcached_compression</dt>
22
- <dd class="default">Defaults to @true@</dd>
23
-
24
- <dt>memcached_debug</dt>
25
- <dd class="default">Defaults to @false@</dd>
26
-
27
- <dt>memcached_servers</dt>
28
- <dd class="default">Defaults to @[ "localhost:11211" ]@</dd>
29
-
30
- <dt>memcached_yml_template</dt>
31
- <dd class="default">Defaults to @"memcached/memcached.yml.erb"@</dd>
32
- </dl>
33
-
34
6
  "Source":#{link_to_source(__FILE__)}
35
7
  DESC
36
- task :setup do
37
-
38
- # Settings
39
- fetch(:memcached_namespace)
40
- fetch_or_default(:memcached_ttl, 3600)
41
- fetch_or_default(:memcached_readonly, false)
42
- fetch_or_default(:memcached_urlencode, false)
43
- fetch_or_default(:memcached_c_threshold, 10000)
44
- fetch_or_default(:memcached_compression, true)
45
- fetch_or_default(:memcached_debug, false)
46
- fetch_or_default(:memcached_servers, [ "localhost:11211" ])
47
- fetch_or_default(:memcached_yml_template, "memcached/memcached.yml.erb")
48
-
8
+ task_arg(:memcached_namespace, "Namespace")
9
+ task_arg(:memcached_ttl, "TTL in seconds", :default => 3600)
10
+ task_arg(:memcached_readonly, "Read only enabled", :default => false)
11
+ task_arg(:memcached_urlencode, "URL encode enabled", :default => false)
12
+ task_arg(:memcached_c_threshold, "C Threshold", :default => 10000)
13
+ task_arg(:memcached_compression, "Compression enabed", :default => true)
14
+ task_arg(:memcached_debug, "Debug enabled", :default => false)
15
+ task_arg(:memcached_servers, "List of servers", :default => ["localhost:11211"], :default_desc => "[\"localhost:11211\"]")
16
+ task_arg(:memcached_yml_template, "Memcached yml template", :default => "memcached/memcached.yml.erb")
17
+ task :setup do
49
18
  put(memcached_yml_template, "#{shared_path}/config/memcached.yml")
50
19
  end
51
20
 
data/lib/recipes/merb.rb CHANGED
@@ -15,11 +15,10 @@ namespace :merb do
15
15
  set :migrate_env, ""
16
16
  set :migrate_target, :latest
17
17
  DESC
18
+ task_arg(:rake, "Path to rake", :default => "rake")
19
+ task_arg(:merb_env, "Merb environment", :default => "")
20
+ task_arg(:migrate_target, "Migration target", :default => :latest)
18
21
  task :migrate, :roles => :db, :only => { :primary => true } do
19
- rake = fetch(:rake, "rake")
20
- merb_env = fetch(:merb_env, "production")
21
- migrate_env = fetch(:migrate_env, "")
22
- migrate_target = fetch(:migrate_target, :latest)
23
22
 
24
23
  current_directory = case migrate_target.to_sym
25
24
  when :current then current_path
data/lib/recipes/monit.rb CHANGED
@@ -5,49 +5,30 @@ namespace :monit do
5
5
 
6
6
  HUP's the process from the pid file, if it exists.
7
7
 
8
- <dl>
9
- <dt>monit_pid_path</dt>
10
- <dd>Path to monit pid file</dd>
11
- <dd class="default">Defaults to @/var/run/monit.pid@</dd>
12
- </dl>
13
8
  "Source":#{link_to_source(__FILE__)}
14
9
  DESC
10
+ task_arg(:monit_pid_path, "Path to monit pid file", :default => "/var/run/monit.pid")
15
11
  task :restart do
16
- fetch_or_default(:monit_pid_path, "/var/run/monit.pid")
17
-
18
- run_via %{sh -c "[ ! -e '#{monit_pid_path}' ] || kill -HUP `cat #{monit_pid_path}`"}
19
-
12
+ run_via %{sh -c "[ ! -e '#{monit_pid_path}' ] || kill -HUP `cat #{monit_pid_path}`"}
20
13
  end
21
14
 
22
15
  desc <<-DESC
23
16
  Unmonitor all.
24
17
 
25
- <dl>
26
- <dt>monit_bin_path</dt>
27
- <dd>Path to monit bin.</dd>
28
- <dd>Defaults to @monit@</dd>
29
- </dl>
30
18
  "Source":#{link_to_source(__FILE__)}
31
19
  DESC
20
+ task_arg(:monit_bin_path, "Path to monit bin.", :default => "monit")
32
21
  task :unmonitor_all do
33
- fetch_or_default(:monit_bin_path, "monit")
34
-
35
22
  run_via "#{monit_bin_path} unmonitor all"
36
23
  end
37
24
 
38
25
  desc <<-DESC
39
26
  Monitor all.
40
27
 
41
- <dl>
42
- <dt>monit_bin_path</dt>
43
- <dd>Path to monit bin.</dd>
44
- <dd>Defaults to @monit@</dd>
45
- </dl>
46
28
  "Source":#{link_to_source(__FILE__)}
47
29
  DESC
30
+ task_arg(:monit_bin_path, "Path to monit bin.", :default => "monit")
48
31
  task :monitor_all do
49
- fetch_or_default(:monit_bin_path, "monit")
50
-
51
32
  run_via "#{monit_bin_path} monitor all"
52
33
  end
53
34
 
@@ -8,17 +8,13 @@ namespace :merb do
8
8
 
9
9
  "Source":#{link_to_source(__FILE__)}
10
10
  DESC
11
+ task_arg(:merb_nodes, "Number of nodes in merb cluster")
12
+ task_arg(:merb_port, "Starting port")
13
+ task_arg(:monit_conf_dir, "Monit config directory", :default => "/etc/monit")
14
+ task_arg(:merb_pid_dir, "Merb pid directory", :default => Proc.new {"#{shared_path}/pids"}, :default_desc => "\#{shared_path}/pids")
15
+ task_arg(:merb_monitrc_template, "Merb monitrc template", :default => "merb/merb.monitrc.erb")
11
16
  task :setup do
12
17
 
13
- # Settings
14
- fetch(:merb_nodes)
15
- fetch(:merb_port)
16
- fetch_or_default(:merb_application, "merb_#{application}")
17
- fetch_or_default(:merb_initscript_name, "merb_#{application}")
18
- fetch_or_default(:monit_conf_dir, "/etc/monit")
19
-
20
- fetch_or_default(:merb_pid_dir, "#{shared_path}/pids")
21
-
22
18
  processes = []
23
19
  ports = (0...merb_nodes).collect { |i| merb_port + i }
24
20
  ports.each do |port|
@@ -32,9 +28,8 @@ namespace :merb do
32
28
  end
33
29
 
34
30
  set :processes, processes
35
-
36
- put template.load("merb/merb.monitrc.erb"), "/tmp/#{merb_application}.monitrc"
37
- sudo "install -o root /tmp/#{merb_application}.monitrc #{monit_conf_dir}/#{merb_application}.monitrc"
31
+
32
+ utils.install_template(merb_monitrc_template, "#{monit_conf_dir}/#{merb_application}.monitrc")
38
33
  end
39
34
 
40
35
  desc "Restart merb (for application)"
@@ -5,28 +5,12 @@ namespace :mysql do
5
5
  desc <<-DESC
6
6
  Install mysql monit hooks.
7
7
 
8
- <dl>
9
- <dt>mysql_pid_path</dt>
10
- <dd>Path to mysql pid file</dd>
11
-
12
- <dt>db_port</dt>
13
- <dd>Mysql port</dd>
14
- <dd class="default">Defaults to @3306@</dd>
15
-
16
- <dt>monit_conf_dir</dt>
17
- <dd>Monitrd directory.</dd>
18
- <dd class="default">Defaults to @"/etc/monit"@</dd>
19
- </dl>
20
-
21
8
  "Source":#{link_to_source(__FILE__)}
22
9
  DESC
10
+ task_arg(:mysql_pid_path, "Path to mysql pid file", :default => "/var/run/mysqld/mysqld.pid")
11
+ task_arg(:mysql_port, "Mysql port", :default => 3306)
12
+ task_arg(:monit_conf_dir, "Monitrd directory", :default => "/etc/monit")
23
13
  task :install do
24
-
25
- # Settings
26
- fetch_or_default(:mysql_pid_path, "/var/run/mysqld/mysqld.pid")
27
- fetch_or_default(:mysql_port, 3306)
28
- fetch_or_default(:monit_conf_dir, "/etc/monit")
29
-
30
14
  put template.load("mysql/mysql.monitrc.erb", binding), "/tmp/mysql.monitrc"
31
15
  run_via "install -o root /tmp/mysql.monitrc #{monit_conf_dir}/mysql.monitrc"
32
16
  end
@@ -5,25 +5,11 @@ namespace :nginx do
5
5
  desc <<-DESC
6
6
  Install nginx monit hooks.
7
7
 
8
- <dl>
9
- <dt>nginx_pid_path</dt>
10
- <dd>Path to nginx pid file</dd>
11
- <dd>Defaults to /var/run/nginx.pid</dd>
12
- <dd>@set :nginx_pid_path, "/var/run/nginx.pid"@</dd>
13
-
14
- <dt>monit_conf_dir</dt>
15
- <dd>Destination for monitrc.</dd>
16
- <dd>Defaults to "/etc/monit"</dd>
17
- <dd>@set :monit_conf_dir, "/etc/monit"@</dd>
18
- </dl>
19
8
  "Source":#{link_to_source(__FILE__)}
20
9
  DESC
10
+ task_arg(:nginx_pid_path, "Path to nginx pid file", :default => "/var/run/nginx.pid")
11
+ task_arg(:monit_conf_dir, "Destination for monitrc", :default => "/etc/monit")
21
12
  task :install do
22
-
23
- # Settings
24
- fetch_or_default(:nginx_pid_path, "/var/run/nginx.pid")
25
- fetch_or_default(:monit_conf_dir, "/etc/monit")
26
-
27
13
  put template.load("nginx/nginx.monitrc.erb", binding), "/tmp/nginx.monitrc"
28
14
  run_via "install -o root /tmp/nginx.monitrc #{monit_conf_dir}/nginx.monitrc"
29
15
  end
@@ -4,25 +4,34 @@ namespace :sphinx do
4
4
 
5
5
  desc <<-DESC
6
6
  Create monit configuration for sphinx.\n
7
- *monit_conf_dir*: Destination for monitrc. _Defaults to "/etc/monit"_\n
8
- *sphinx_pid_path*: Location for sphinx pid. _Defaults to "[shared_path]/pids/searchd.pid"_\n
9
-
7
+
10
8
  "Source":#{link_to_source(__FILE__)}
11
9
  DESC
10
+ task_arg(:monit_conf_dir, :default => "/etc/monit")
11
+ task_arg(:sphinx_pid_path, :default => Proc.new{"#{shared_path}/pids/searchd.pid"}, :default_desc => "\#{shared_path}/pids/searchd.pid")
12
12
  task :setup do
13
-
14
- # Settings
15
- fetch_or_default(:monit_conf_dir, "/etc/monit")
16
- fetch_or_default(:sphinx_pid_path, "#{shared_path}/pids/searchd.pid")
17
-
18
13
  put template.load("sphinx/sphinx.monitrc.erb"), "/tmp/sphinx_#{application}.monitrc"
19
14
  sudo "install -o root /tmp/sphinx_#{application}.monitrc #{monit_conf_dir}/sphinx_#{application}.monitrc"
20
15
  end
21
16
 
22
- desc "Restart sphinx"
17
+ desc "Restart sphinx application (through monit)"
23
18
  task :restart do
24
- sudo "/sbin/service monit restart sphinx_#{application}"
25
- end
19
+ fetch_or_default(:monit_bin_path, "monit")
20
+ sudo "#{monit_bin_path} restart sphinx_#{application}"
21
+ end
22
+
23
+ desc "Start sphinx application (through monit)"
24
+ task :start do
25
+ fetch_or_default(:monit_bin_path, "monit")
26
+ sudo "#{monit_bin_path} start sphinx_#{application}"
27
+ end
28
+
29
+ desc "Stop sphinx application (through monit)"
30
+ task :stop do
31
+ fetch_or_default(:monit_bin_path, "monit")
32
+ sudo "#{monit_bin_path} stop sphinx_#{application}"
33
+ end
34
+
26
35
 
27
36
  end
28
37
 
data/lib/recipes/mysql.rb CHANGED
@@ -4,45 +4,19 @@ namespace :mysql do
4
4
  desc <<-DESC
5
5
  Create database, database user, and set grant permissions.
6
6
 
7
- <dl>
8
- <dt>db_name</dt>
9
- <dd>Database name (application).</dd>
10
-
11
- <dt>db_user</dt>
12
- <dd>Database user (application).</dd>
13
-
14
- <dt>db_pass</dt>
15
- <dd>Database password (application).</dd>
16
-
17
- <dt>mysql_grant_locations</dt>
18
- <dd>Grant locations. </dd>
19
- <dd>Defaults to @[ "localhost" ]@</dd>
20
-
21
- <dt>mysql_grant_priv_type</dt>
22
- <dd>Grant privilege types.</dd>
23
- <dd>Defaults to @ALL@</dd>
24
-
25
- <dt>mysql_admin_user</dt>
26
- <dd>Mysql admin user.</dd>
27
- <dd>Defaults to password prompt.</dd>
28
-
29
- <dt>mysql_admin_password</dt>
30
- <dd>Mysql admin password.</dd>
31
- <dd>Defaults to password prompt.</dd>
32
- </dl>
33
7
  "Source":#{link_to_source(__FILE__)}
34
8
  DESC
35
- task :setup do
36
-
37
- # Settings
38
- fetch(:db_name)
39
- fetch(:db_user)
40
- fetch(:db_pass)
41
- fetch_or_default(:mysql_admin_user, "root")
42
- fetch_or_default(:mysql_admin_password, prompt.password('Mysql admin password: '))
43
- fetch_or_default(:mysql_grant_priv_type, "ALL")
44
- fetch_or_default(:mysql_grant_locations, [ "localhost" ])
9
+ task_arg(:db_name, "Database name (application)")
10
+ task_arg(:db_user, "Database user (application)")
11
+ task_arg(:db_pass, "Database password (application)")
12
+ task_arg(:mysql_admin_user, "Mysql admin user", :default => "root")
13
+ task_arg(:mysql_admin_password, "Mysql admin password",
14
+ :default => Proc.new { prompt.password('Mysql admin password: ') },
15
+ :example => "prompt.password('Mysql admin password: ')")
45
16
 
17
+ task_arg(:mysql_grant_priv_type, "Grant privilege types", :default => "ALL")
18
+ task_arg(:mysql_grant_locations, "Grant locations", :default => ["localhost"])
19
+ task :setup do
46
20
  sql = template.load("mysql/install_db.sql.erb")
47
21
 
48
22
  logger.trace "Running sql:\n#{sql}\n"
@@ -55,26 +29,12 @@ namespace :mysql do
55
29
  desc <<-DESC
56
30
  Create my.cnf based on template.
57
31
 
58
- <dl>
59
- <dt>my_cnf_template</dt>
60
- <dd>Path to my.cnf template</dd>
61
-
62
- <dt>db_socket</dt>
63
- <dd>Path to mysql .sock</dd>
64
- <dd class="default">Defaults to @"/var/lib/mysql/mysql.sock"@</dd>
65
-
66
- <dt>db_port</dt>
67
- <dd>Mysql port</dd>
68
- <dd class="default">Defaults to @3306@</dd>
69
- </dl>
70
-
71
32
  "Source":#{link_to_source(__FILE__)}
72
33
  DESC
34
+ task_arg(:my_cnf_template, "Path to my.cnf template", :default => "mysql/my.cnf.innodb_1024.erb")
35
+ task_arg(:db_socket, "Path to mysql .sock", :default => "/var/lib/mysql/mysql.sock")
36
+ task_arg(:db_port, "Mysql port", :default => 3306)
73
37
  task :install_my_cnf do
74
- fetch_or_default(:my_cnf_template, "mysql/my.cnf.innodb_1024.erb")
75
- fetch_or_default(:db_socket, "/var/lib/mysql/mysql.sock")
76
- fetch_or_default(:db_port, 3306)
77
-
78
38
  utils.install_template(my_cnf_template, "/etc/my.cnf")
79
39
  end
80
40
 
data/lib/recipes/nginx.rb CHANGED
@@ -6,80 +6,24 @@ namespace :nginx do
6
6
  desc <<-DESC
7
7
  Generate the nginx vhost include.
8
8
 
9
- <dl>
10
- <dt>nginx_upstream_name</dt>
11
- <dd>Application name (for upstream definition).</dd>
12
- <dd class="default">Defaults to @:application@</dd>
13
-
14
- <dt>nginx_upstream_size</dt>
15
- <dd>Number of nodes for upstream.</dd>
16
- <dd>@set :nginx_upstream_size, 3@</dd>
17
-
18
- <dt>nginx_upstream_port</dt>
19
- <dd>Starting port for upstream. If there are 3 nodes with port 9000, then instances will be at 9000, 9001, and 9002</dd>
20
- <dd>@set :nginx_upstream_port, 9000@</dd>
21
-
22
- <dt>domain_name</dt>: Domain name for nginx virtual host, (without www prefix).</dd>
23
- <dd>@set :domain_name, "foo.com"@</dd>
24
- </dl>
25
-
26
9
  "Source":#{link_to_source(__FILE__)}
27
10
  DESC
11
+ task_arg(:nginx_upstream_name, "Application name (for upstream definition)",
12
+ :default => Proc.new { fetch(:application) },
13
+ :default_desc => "fetch(:application)")
14
+
15
+ task_arg(:nginx_upstream_size, "Number of nodes for upstream")
16
+ task_arg(:nginx_upstream_port, "Starting port for upstream. If there are 3 nodes with port 9000, then instances will be at 9000, 9001, and 9002")
17
+ task_arg(:domain_name, "Domain name")
18
+ task_arg(:nginx_vhost_template, "Path to nginx vhost template", :default => "nginx/nginx_vhost_generic.conf.erb")
28
19
  task :setup do
29
20
 
30
- # Settings
31
- fetch_or_default(:nginx_upstream_name, fetch(:application))
32
- fetch(:nginx_upstream_size)
33
- fetch(:nginx_upstream_port)
34
-
35
21
  set :nginx_upstream_ports, (0...nginx_upstream_size.to_i).collect { |i| nginx_upstream_port.to_i + i }
36
22
  set :public_path, current_path + "/public"
37
23
 
38
- utils.install_template("nginx/nginx_vhost_generic.conf.erb", "/etc/nginx/vhosts/#{nginx_upstream_name}.conf")
24
+ utils.install_template(:nginx_vhost_template, "/etc/nginx/vhosts/#{nginx_upstream_name}.conf")
39
25
  end
40
26
 
41
27
  end
42
28
 
43
- namespace :mongrel do
44
- desc <<-DESC
45
- Generate the nginx vhost include (for a mongrel setup).
46
-
47
- *THIS IS DEPRECATED*: Use @nginx:host:setup@
48
-
49
- <dl>
50
- <dt>mongrel_application</dt>
51
- <dd>Mongrel application.</dd>
52
- <dd class="default">Defaults to @:application@</dd>
53
-
54
- <dt>mongrel_size</dt>
55
- <dd>Number of mongrels.</dd>
56
- <dd>@set :mongrel_size, 3@</dd>
57
-
58
- <dt>*mongrel_port</dt>
59
- <dd>Starting port for mongrels. If there are 3 mongrels with port 9000, then instances will be at 9000, 9001, and 9002</dd>
60
- <dd>@set :mongrel_port, 9000@</dd>
61
-
62
- <dt>domain_name</dt>: Domain name for nginx virtual host, (without www prefix).</dd>
63
- <dd>@set :domain_name, "foo.com"@</dd>
64
- </dl>
65
- "Source":#{link_to_source(__FILE__)}
66
- DESC
67
- task :setup do
68
-
69
- # Settings
70
- fetch(:mongrel_size)
71
- fetch(:mongrel_port)
72
- fetch(:domain_name)
73
- fetch_or_default(:mongrel_application, fetch(:application))
74
-
75
- set :ports, (0...mongrel_size).collect { |i| mongrel_port + i }
76
- set :public_path, current_path + "/public"
77
-
78
- run "mkdir -p #{shared_path}/config"
79
- put template.load("nginx/nginx_vhost.conf.erb"), "/tmp/nginx_#{mongrel_application}.conf"
80
-
81
- sudo "install -o root /tmp/nginx_#{mongrel_application}.conf /etc/nginx/vhosts/#{mongrel_application}.conf"
82
- end
83
- end
84
-
85
29
  end