capitate 0.2.3 → 0.2.5
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/History.txt +14 -0
- data/Manifest.txt +10 -2
- data/docs/recipes/imagemagick-centos.txt +6 -0
- data/docs/recipes/index.txt +9 -6
- data/docs/recipes/memcached-centos.txt +7 -0
- data/docs/recipes/memcached-monit.txt +30 -0
- data/docs/recipes/memcached.txt +1 -27
- data/docs/recipes/{mongrel_cluster-centos.txt → mongrel-cluster-centos.txt} +12 -8
- data/docs/recipes/{mongrel_cluster.txt → mongrel-cluster-monit.txt} +12 -16
- data/docs/recipes/mongrel-cluster.txt +9 -0
- data/docs/recipes/mongrel.txt +9 -0
- data/docs/recipes/monit-centos.txt +2 -0
- data/docs/recipes/mysql-monit.txt +28 -0
- data/docs/recipes/mysql.txt +3 -19
- data/docs/recipes/nginx-centos.txt +9 -0
- data/docs/recipes/nginx-mongrel.txt +33 -0
- data/docs/recipes/nginx-monit.txt +26 -0
- data/docs/recipes/nginx.txt +2 -44
- data/docs/recipes/ruby-centos.txt +9 -0
- data/docs/recipes/sphinx-centos.txt +8 -0
- data/docs/recipes/sphinx-monit.txt +22 -0
- data/docs/recipes/sphinx.txt +1 -11
- data/lib/capitate/cap_ext/connections.rb +15 -13
- data/lib/capitate/cap_ext/roles.rb +26 -0
- data/lib/capitate/plugins/base.rb +1 -0
- data/lib/capitate/plugins/prompt.rb +49 -6
- data/lib/capitate/plugins/script.rb +17 -13
- data/lib/capitate/recipes.rb +0 -3
- data/lib/capitate/version.rb +1 -1
- data/lib/capitate.rb +3 -0
- data/lib/deployment/deploy.rb +4 -7
- data/lib/deployment/install-centos-rubyweb.rb +3 -3
- data/lib/recipes/centos/centos.rb +17 -9
- data/lib/recipes/centos/imagemagick.rb +6 -0
- data/lib/recipes/centos/memcached.rb +6 -0
- data/lib/recipes/centos/mongrel_cluster.rb +42 -28
- data/lib/recipes/centos/monit.rb +2 -1
- data/lib/recipes/centos/mysql.rb +1 -1
- data/lib/recipes/centos/nginx.rb +8 -0
- data/lib/recipes/centos/ruby.rb +10 -2
- data/lib/recipes/centos/sphinx.rb +8 -1
- data/lib/recipes/memcached.rb +20 -22
- data/lib/recipes/mongrel_cluster.rb +60 -50
- data/lib/recipes/mysql.rb +21 -17
- data/lib/recipes/nginx.rb +47 -39
- data/lib/recipes/rails.rb +10 -0
- data/lib/recipes/sphinx.rb +15 -11
- data/lib/templates/mongrel/mongrel_cluster.initd.erb +6 -6
- data/lib/templates/mongrel/mongrel_cluster.monitrc.erb +2 -2
- data/lib/templates/mongrel/mongrel_cluster.yml.erb +1 -1
- data/lib/templates/nginx/nginx_vhost.conf.erb +8 -4
- data/lib/templates/rails/database.yml.erb +1 -2
- data/website/index.html +1 -1
- metadata +21 -6
data/lib/recipes/mysql.rb
CHANGED
@@ -1,24 +1,28 @@
|
|
1
1
|
# Mysql recipes
|
2
2
|
namespace :mysql do
|
3
3
|
|
4
|
-
|
5
|
-
Install mysql monit hooks.
|
4
|
+
namespace :monit do
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
desc <<-DESC
|
7
|
+
Install mysql monit hooks.
|
8
|
+
|
9
|
+
*db_port*: Mysql port. _Defaults to 3306_\n
|
10
|
+
*mysql_pid_path*: Path to mysql pid file. _Defaults to /var/run/mysqld/mysqld.pid_\n
|
11
|
+
@set :mysql_pid_path, "/var/run/mysqld/mysqld.pid"@\n
|
12
|
+
*monit_conf_dir*: Destination for monitrc. _Defaults to "/etc/monit"_\n
|
13
|
+
@set :monit_conf_dir, "/etc/monit"@\n
|
14
|
+
DESC
|
15
|
+
task :install do
|
16
|
+
|
17
|
+
# Settings
|
18
|
+
fetch_or_default(:mysql_pid_path, "/var/run/mysqld/mysqld.pid")
|
19
|
+
fetch_or_default(:db_port, 3306)
|
20
|
+
fetch_or_default(:monit_conf_dir, "/etc/monit")
|
14
21
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
fetch_or_default(:monit_conf_dir, "/etc/monit")
|
22
|
+
put template.load("mysql/mysql.monitrc.erb", binding), "/tmp/mysql.monitrc"
|
23
|
+
run_via "install -o root /tmp/mysql.monitrc #{monit_conf_dir}/mysql.monitrc"
|
24
|
+
end
|
19
25
|
|
20
|
-
put template.load("mysql/mysql.monitrc.erb", binding), "/tmp/mysql.monitrc"
|
21
|
-
run_via "install -o root /tmp/mysql.monitrc #{monit_conf_dir}/mysql.monitrc"
|
22
26
|
end
|
23
27
|
|
24
28
|
desc <<-DESC
|
@@ -28,9 +32,9 @@ namespace :mysql do
|
|
28
32
|
*db_user*: Database user (application).\n
|
29
33
|
*db_pass*: Database password (application).\n
|
30
34
|
*mysql_grant_locations*: Grant locations. _Defaults to localhost_\n
|
31
|
-
@set :
|
35
|
+
@set :mysql_grant_locations, [ "localhost", "192.168.1.111" ]@\n
|
32
36
|
*mysql_grant_priv_type*: Grant privilege types. _Defaults to ALL_\n
|
33
|
-
@set :
|
37
|
+
@set :mysql_grant_priv_type, "ALL"@\n
|
34
38
|
*mysql_admin_password*: Mysql admin password (to use to connect). Defaults to password prompt.\n
|
35
39
|
@set :mysql_admin_password, prompt.password('Mysql admin password: '))@
|
36
40
|
DESC
|
data/lib/recipes/nginx.rb
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
# Nginx recipes
|
2
2
|
namespace :nginx do
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
namespace :monit do
|
5
|
+
|
6
|
+
desc <<-DESC
|
7
|
+
Install nginx monit hooks.
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
*nginx_pid_path*: Path to nginx pid file. _Defaults to /var/run/nginx.pid_\n
|
10
|
+
@set :nginx_pid_path, "/var/run/nginx.pid"@\n
|
11
|
+
*monit_conf_dir*: Destination for monitrc. _Defaults to "/etc/monit"_\n
|
12
|
+
@set :monit_conf_dir, "/etc/monit"@\n
|
13
|
+
DESC
|
14
|
+
task :install do
|
15
|
+
|
16
|
+
# Settings
|
17
|
+
fetch_or_default(:nginx_pid_path, "/var/run/nginx.pid")
|
18
|
+
fetch_or_default(:monit_conf_dir, "/etc/monit")
|
19
|
+
|
20
|
+
put template.load("nginx/nginx.monitrc.erb", binding), "/tmp/nginx.monitrc"
|
21
|
+
run_via "install -o root /tmp/nginx.monitrc #{monit_conf_dir}/nginx.monitrc"
|
22
|
+
end
|
23
|
+
|
20
24
|
end
|
21
25
|
|
22
|
-
|
23
|
-
|
26
|
+
namespace :mongrel do
|
27
|
+
desc <<-DESC
|
28
|
+
Create and update the nginx vhost include.
|
24
29
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
30
|
+
*mongrel_application*: Mongrel application. _Defaults to <tt>:application</tt>_
|
31
|
+
*mongrel_size*: Number of mongrels.\n
|
32
|
+
@set :mongrel_size, 3@\n
|
33
|
+
*mongrel_port*: Starting port for mongrels.\n
|
34
|
+
If there are 3 mongrels with port 9000, then instances will be at 9000, 9001, and 9002\n
|
35
|
+
@set :mongrel_port, 9000@\n
|
36
|
+
*domain_name*: Domain name for nginx virtual host, (without www prefix).\n
|
37
|
+
@set :domain_name, "foo.com"@
|
38
|
+
DESC
|
39
|
+
task :setup do
|
40
|
+
|
41
|
+
# Settings
|
42
|
+
fetch(:mongrel_size)
|
43
|
+
fetch(:mongrel_port)
|
44
|
+
fetch(:domain_name)
|
45
|
+
fetch_or_default(:mongrel_application, fetch(:application))
|
46
|
+
|
47
|
+
set :ports, (0...mongrel_size).collect { |i| mongrel_port + i }
|
48
|
+
set :public_path, current_path + "/public"
|
49
|
+
|
50
|
+
run "mkdir -p #{shared_path}/config"
|
51
|
+
put template.load("nginx/nginx_vhost.conf.erb"), "/tmp/nginx_#{mongrel_application}.conf"
|
52
|
+
|
53
|
+
sudo "install -o root /tmp/nginx_#{mongrel_application}.conf /etc/nginx/vhosts/#{mongrel_application}.conf"
|
54
|
+
end
|
47
55
|
end
|
48
56
|
|
49
57
|
end
|
data/lib/recipes/rails.rb
CHANGED
@@ -23,6 +23,16 @@ namespace :rails do
|
|
23
23
|
fetch_or_default(:db_host, nil)
|
24
24
|
fetch_or_default(:db_socket, nil)
|
25
25
|
|
26
|
+
unless db_host.blank?
|
27
|
+
set :db_connect_type, "host"
|
28
|
+
set :db_connect, db_host
|
29
|
+
end
|
30
|
+
|
31
|
+
unless db_socket.blank?
|
32
|
+
set :db_connect_type, "socket"
|
33
|
+
set :db_connect, db_socket
|
34
|
+
end
|
35
|
+
|
26
36
|
run "mkdir -p #{shared_path}/config"
|
27
37
|
put template.load("rails/database.yml.erb"), "#{shared_path}/config/database.yml"
|
28
38
|
end
|
data/lib/recipes/sphinx.rb
CHANGED
@@ -1,19 +1,23 @@
|
|
1
1
|
# Sphinx recipes
|
2
2
|
namespace :sphinx do
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
namespace :monit do
|
5
|
+
|
6
|
+
desc <<-DESC
|
7
|
+
Create monit configuration for sphinx.\n
|
8
|
+
*monit_conf_dir*: Destination for monitrc. _Defaults to "/etc/monit"_\n
|
9
|
+
*sphinx_pid_path*: Location for sphinx pid. _Defaults to "[shared_path]/pids/searchd.pid"_\n
|
10
|
+
DESC
|
11
|
+
task :setup do
|
12
|
+
|
13
|
+
# Settings
|
14
|
+
fetch_or_default(:monit_conf_dir, "/etc/monit")
|
15
|
+
fetch_or_default(:sphinx_pid_path, "#{shared_path}/pids/searchd.pid")
|
10
16
|
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
put template.load("sphinx/sphinx.monitrc.erb"), "/tmp/sphinx_#{application}.monitrc"
|
18
|
+
sudo "install -o root /tmp/sphinx_#{application}.monitrc #{monit_conf_dir}/sphinx_#{application}.monitrc"
|
19
|
+
end
|
14
20
|
|
15
|
-
put template.load("sphinx/sphinx.monitrc.erb"), "/tmp/sphinx_#{application}.monitrc"
|
16
|
-
sudo "install -o root /tmp/sphinx_#{application}.monitrc #{monit_conf_dir}/sphinx_#{application}.monitrc"
|
17
21
|
end
|
18
22
|
|
19
23
|
desc <<-DESC
|
@@ -12,11 +12,11 @@
|
|
12
12
|
#
|
13
13
|
|
14
14
|
set -e
|
15
|
-
trap ERROR ERR
|
16
15
|
|
17
16
|
CONF_DIR=<%= mongrel_config_dir %>
|
18
17
|
PID_DIR=<%= mongrel_pid_dir %>
|
19
18
|
USER=<%= user %>
|
19
|
+
CMD=<%= mongrel_cluster_command %>
|
20
20
|
|
21
21
|
RETVAL=0
|
22
22
|
|
@@ -26,7 +26,7 @@ fail() {
|
|
26
26
|
}
|
27
27
|
|
28
28
|
# Gracefully exit if the controller is missing.
|
29
|
-
which
|
29
|
+
which $CMD >/dev/null || fail "$CMD not found"
|
30
30
|
|
31
31
|
# Go no further if config directory is missing.
|
32
32
|
[ -d "$CONF_DIR" ] || fail "$CONF_DIR not found"
|
@@ -37,19 +37,19 @@ case "$1" in
|
|
37
37
|
mkdir -p $PID_DIR
|
38
38
|
chown $USER:$USER $PID_DIR
|
39
39
|
|
40
|
-
|
40
|
+
$CMD start -c $CONF_DIR --clean
|
41
41
|
RETVAL=$?
|
42
42
|
;;
|
43
43
|
stop)
|
44
|
-
|
44
|
+
$CMD stop -c $CONF_DIR
|
45
45
|
RETVAL=$?
|
46
46
|
;;
|
47
47
|
restart)
|
48
|
-
|
48
|
+
$CMD restart -c $CONF_DIR
|
49
49
|
RETVAL=$?
|
50
50
|
;;
|
51
51
|
status)
|
52
|
-
|
52
|
+
$CMD status -c $CONF_DIR
|
53
53
|
RETVAL=$?
|
54
54
|
;;
|
55
55
|
*)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% processes.each do |process| %>
|
2
2
|
|
3
|
-
check process
|
4
|
-
group
|
3
|
+
check process <%= mongrel_application %>_<%= process[:port] %> with pidfile <%= process[:pid_path] %>
|
4
|
+
group <%= mongrel_application %>
|
5
5
|
start program = "<%= process[:name] %> start <%= process[:start_options] %>"
|
6
6
|
stop program = "<%= process[:name] %> stop <%= process[:stop_options] %>"
|
7
7
|
if failed host 127.0.0.1 port <%= process[:port] %> protocol http
|
@@ -8,4 +8,4 @@ pid_file: <%= mongrel_pid_dir %>/mongrel.pid
|
|
8
8
|
servers: <%= mongrel_size %>
|
9
9
|
user: <%= user %>
|
10
10
|
group: <%= user %>
|
11
|
-
|
11
|
+
<% mongrel_config_options.each do |k, v| %><%= "#{k}: #{v}\n" %><% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# * Redirects domain.com to www.domain.com (IMO should be the other way around; www is deprecated)
|
8
8
|
#
|
9
9
|
|
10
|
-
upstream
|
10
|
+
upstream <%= mongrel_application %> {
|
11
11
|
<% ports.each do |port| %>
|
12
12
|
server 127.0.0.1:<%= port %>;
|
13
13
|
<% end %>
|
@@ -20,8 +20,10 @@ server {
|
|
20
20
|
# Set the max size for file uploads to 50Mb
|
21
21
|
client_max_body_size 50M;
|
22
22
|
|
23
|
+
<% unless domain_name.blank? or domain_name == "localhost" %>
|
23
24
|
# sets the domain[s] that this vhost server requests for
|
24
25
|
server_name www.<%= domain_name %>;
|
26
|
+
<% end %>
|
25
27
|
|
26
28
|
# doc root
|
27
29
|
root <%= public_path %>;
|
@@ -53,7 +55,7 @@ server {
|
|
53
55
|
# For iphone unique url
|
54
56
|
if ($http_user_agent ~* "(iPhone|iPod)") {
|
55
57
|
rewrite ^/$ /iphone break;
|
56
|
-
proxy_pass http
|
58
|
+
proxy_pass http://<%= mongrel_application %>;
|
57
59
|
break;
|
58
60
|
}
|
59
61
|
|
@@ -74,7 +76,7 @@ server {
|
|
74
76
|
}
|
75
77
|
|
76
78
|
if (!-f $request_filename) {
|
77
|
-
proxy_pass http
|
79
|
+
proxy_pass http://<%= mongrel_application %>;
|
78
80
|
break;
|
79
81
|
}
|
80
82
|
}
|
@@ -89,7 +91,9 @@ server {
|
|
89
91
|
}
|
90
92
|
}
|
91
93
|
|
94
|
+
<% unless domain_name.blank? or domain_name == "localhost" %>
|
92
95
|
server {
|
93
96
|
server_name <%= domain_name %>;
|
94
97
|
rewrite ^/(.*) http://www.<%= domain_name %>/$1 permanent;
|
95
|
-
}
|
98
|
+
}
|
99
|
+
<% end %>
|
data/website/index.html
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
<div id="version" class="clickable box" onclick='document.location = "http://rubyforge.org/projects/capitate"; return false'>
|
40
40
|
<p>Get Version</p>
|
41
|
-
<a href="http://rubyforge.org/projects/capitate" class="numbers">0.2.
|
41
|
+
<a href="http://rubyforge.org/projects/capitate" class="numbers">0.2.5</a>
|
42
42
|
</div>
|
43
43
|
|
44
44
|
<div id="recipes">
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capitate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ""
|
6
6
|
authors:
|
7
7
|
- Gabriel Handford
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-02-
|
12
|
+
date: 2008-02-29 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -42,19 +42,26 @@ extra_rdoc_files:
|
|
42
42
|
- docs/recipes/imagemagick.txt
|
43
43
|
- docs/recipes/index.txt
|
44
44
|
- docs/recipes/memcached-centos.txt
|
45
|
+
- docs/recipes/memcached-monit.txt
|
45
46
|
- docs/recipes/memcached.txt
|
46
|
-
- docs/recipes/
|
47
|
-
- docs/recipes/
|
47
|
+
- docs/recipes/mongrel-cluster-centos.txt
|
48
|
+
- docs/recipes/mongrel-cluster-monit.txt
|
49
|
+
- docs/recipes/mongrel-cluster.txt
|
50
|
+
- docs/recipes/mongrel.txt
|
48
51
|
- docs/recipes/monit-centos.txt
|
49
52
|
- docs/recipes/monit.txt
|
50
53
|
- docs/recipes/mysql-centos.txt
|
54
|
+
- docs/recipes/mysql-monit.txt
|
51
55
|
- docs/recipes/mysql.txt
|
52
56
|
- docs/recipes/nginx-centos.txt
|
57
|
+
- docs/recipes/nginx-mongrel.txt
|
58
|
+
- docs/recipes/nginx-monit.txt
|
53
59
|
- docs/recipes/nginx.txt
|
54
60
|
- docs/recipes/rails.txt
|
55
61
|
- docs/recipes/ruby-centos.txt
|
56
62
|
- docs/recipes/ruby.txt
|
57
63
|
- docs/recipes/sphinx-centos.txt
|
64
|
+
- docs/recipes/sphinx-monit.txt
|
58
65
|
- docs/recipes/sphinx.txt
|
59
66
|
- website/index.txt
|
60
67
|
files:
|
@@ -77,23 +84,31 @@ files:
|
|
77
84
|
- docs/recipes/imagemagick.txt
|
78
85
|
- docs/recipes/index.txt
|
79
86
|
- docs/recipes/memcached-centos.txt
|
87
|
+
- docs/recipes/memcached-monit.txt
|
80
88
|
- docs/recipes/memcached.txt
|
81
|
-
- docs/recipes/
|
82
|
-
- docs/recipes/
|
89
|
+
- docs/recipes/mongrel-cluster-centos.txt
|
90
|
+
- docs/recipes/mongrel-cluster-monit.txt
|
91
|
+
- docs/recipes/mongrel-cluster.txt
|
92
|
+
- docs/recipes/mongrel.txt
|
83
93
|
- docs/recipes/monit-centos.txt
|
84
94
|
- docs/recipes/monit.txt
|
85
95
|
- docs/recipes/mysql-centos.txt
|
96
|
+
- docs/recipes/mysql-monit.txt
|
86
97
|
- docs/recipes/mysql.txt
|
87
98
|
- docs/recipes/nginx-centos.txt
|
99
|
+
- docs/recipes/nginx-mongrel.txt
|
100
|
+
- docs/recipes/nginx-monit.txt
|
88
101
|
- docs/recipes/nginx.txt
|
89
102
|
- docs/recipes/rails.txt
|
90
103
|
- docs/recipes/ruby-centos.txt
|
91
104
|
- docs/recipes/ruby.txt
|
92
105
|
- docs/recipes/sphinx-centos.txt
|
106
|
+
- docs/recipes/sphinx-monit.txt
|
93
107
|
- docs/recipes/sphinx.txt
|
94
108
|
- lib/capitate.rb
|
95
109
|
- lib/capitate/cap_ext/connections.rb
|
96
110
|
- lib/capitate/cap_ext/extension_proxy.rb
|
111
|
+
- lib/capitate/cap_ext/roles.rb
|
97
112
|
- lib/capitate/cap_ext/run_via.rb
|
98
113
|
- lib/capitate/cap_ext/variables.rb
|
99
114
|
- lib/capitate/plugins/base.rb
|