capitate 0.2.13 → 0.2.14
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/Capfile +0 -22
- data/History.txt +7 -0
- data/Manifest.txt +4 -2
- data/lib/capitate/cap_ext/connections.rb +0 -27
- data/lib/capitate/cap_ext/docs.rb +26 -0
- data/lib/capitate/cap_ext/variables.rb +1 -8
- data/lib/capitate/plugins/base.rb +1 -0
- data/lib/capitate/version.rb +1 -1
- data/lib/capitate.rb +2 -2
- data/lib/recipes/logrotate/backgroundrb.rb +1 -0
- data/lib/recipes/logrotate/mongrel_cluster.rb +6 -1
- data/lib/recipes/logrotate/monit.rb +6 -1
- data/lib/recipes/logrotate/mysql.rb +26 -0
- data/lib/recipes/logrotated.rb +11 -0
- data/lib/recipes/memcached.rb +33 -1
- data/lib/recipes/monit/backgroundrb.rb +2 -2
- data/lib/recipes/monit/database.rb +25 -0
- data/lib/recipes/monit/mysql.rb +19 -4
- data/lib/recipes/monit/nginx.rb +19 -2
- data/lib/recipes/mysql.rb +28 -12
- data/lib/recipes/nginx.rb +5 -3
- data/lib/templates/mysql/my.cnf.innodb_1024.erb +120 -0
- data/test/test_recipes.rb +28 -2
- data/website/index.html +1 -1
- metadata +6 -5
- data/lib/capitate/cap_ext/roles.rb +0 -26
- data/test/test_roles.rb +0 -47
data/Capfile
CHANGED
@@ -11,25 +11,3 @@ require 'lib/capitate/recipes'
|
|
11
11
|
|
12
12
|
require 'erb'
|
13
13
|
|
14
|
-
# Test
|
15
|
-
task :test_egrep do
|
16
|
-
role :test, "10.0.6.118", :user => "root"
|
17
|
-
|
18
|
-
found = utils.egrep("^mail.\\*", "/etc/syslog.conf")
|
19
|
-
puts "Found? #{found}"
|
20
|
-
|
21
|
-
found = utils.egrep("^fooo", "/etc/syslog.conf")
|
22
|
-
puts "Found? #{found}"
|
23
|
-
end
|
24
|
-
|
25
|
-
task :test_app do
|
26
|
-
set :application, "sick"
|
27
|
-
set :deploy_to, "/var/www/apps/sick"
|
28
|
-
role :web, "10.0.6.118", :user => "root"
|
29
|
-
role :app, "10.0.6.118", :user => "root"
|
30
|
-
end
|
31
|
-
|
32
|
-
task :test_install do
|
33
|
-
load File.dirname(__FILE__) + "/lib/deployment/centos-5.1-64-web/install.rb"
|
34
|
-
role :test, "10.0.6.118", :user => "root"
|
35
|
-
end
|
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -10,7 +10,7 @@ config/requirements.rb
|
|
10
10
|
docs/nginx.README
|
11
11
|
lib/capitate.rb
|
12
12
|
lib/capitate/cap_ext/connections.rb
|
13
|
-
lib/capitate/cap_ext/
|
13
|
+
lib/capitate/cap_ext/docs.rb
|
14
14
|
lib/capitate/cap_ext/run_via.rb
|
15
15
|
lib/capitate/cap_ext/variables.rb
|
16
16
|
lib/capitate/plugins/base.rb
|
@@ -41,6 +41,7 @@ lib/recipes/docs.rb
|
|
41
41
|
lib/recipes/logrotate/backgroundrb.rb
|
42
42
|
lib/recipes/logrotate/mongrel_cluster.rb
|
43
43
|
lib/recipes/logrotate/monit.rb
|
44
|
+
lib/recipes/logrotate/mysql.rb
|
44
45
|
lib/recipes/logrotate/nginx.rb
|
45
46
|
lib/recipes/logrotate/rails.rb
|
46
47
|
lib/recipes/logrotate/sphinx.rb
|
@@ -48,6 +49,7 @@ lib/recipes/logrotated.rb
|
|
48
49
|
lib/recipes/memcached.rb
|
49
50
|
lib/recipes/monit.rb
|
50
51
|
lib/recipes/monit/backgroundrb.rb
|
52
|
+
lib/recipes/monit/database.rb
|
51
53
|
lib/recipes/monit/memcached.rb
|
52
54
|
lib/recipes/monit/mongrel_cluster.rb
|
53
55
|
lib/recipes/monit/mysql.rb
|
@@ -75,6 +77,7 @@ lib/templates/monit/monit.cnf
|
|
75
77
|
lib/templates/monit/monit.initd.centos.erb
|
76
78
|
lib/templates/monit/monitrc.erb
|
77
79
|
lib/templates/mysql/install_db.sql.erb
|
80
|
+
lib/templates/mysql/my.cnf.innodb_1024.erb
|
78
81
|
lib/templates/mysql/mysql.monitrc.erb
|
79
82
|
lib/templates/nginx/nginx.conf.erb
|
80
83
|
lib/templates/nginx/nginx.initd.erb
|
@@ -96,7 +99,6 @@ tasks/website.rake
|
|
96
99
|
test/test_helper.rb
|
97
100
|
test/test_plugin_upload.rb
|
98
101
|
test/test_recipes.rb
|
99
|
-
test/test_roles.rb
|
100
102
|
test/test_templates.rb
|
101
103
|
website/index.html
|
102
104
|
website/index.txt
|
@@ -3,33 +3,6 @@ module Capitate
|
|
3
3
|
module CapExt
|
4
4
|
module Connections
|
5
5
|
|
6
|
-
def self.included(base) #:nodoc:
|
7
|
-
base.send :alias_method, :execute_on_servers_without_capitate, :execute_on_servers
|
8
|
-
base.send :alias_method, :execute_on_servers, :execute_on_servers_with_capitate
|
9
|
-
end
|
10
|
-
|
11
|
-
# Determines the set of servers within the current task's scope and
|
12
|
-
# establishes connections to them, and then yields that list of
|
13
|
-
# servers.
|
14
|
-
#
|
15
|
-
# If you set:
|
16
|
-
#
|
17
|
-
# set :ignore_missing_roles, true
|
18
|
-
#
|
19
|
-
# Overriden to handle NoMatchingServersError as NON-FATAL.
|
20
|
-
#
|
21
|
-
def execute_on_servers_with_capitate(options={}, &block)
|
22
|
-
if exists?(:ignore_missing_roles) && fetch(:ignore_missing_roles)
|
23
|
-
begin
|
24
|
-
execute_on_servers_without_capitate(options, &block)
|
25
|
-
rescue Capistrano::NoMatchingServersError => e
|
26
|
-
logger.important "`#{current_task.fully_qualified_name}' is only run for servers matching #{current_task.options.inspect}, but no servers matched"
|
27
|
-
end
|
28
|
-
else
|
29
|
-
execute_on_servers_without_capitate(options, &block)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
6
|
# Set the user to something new (but save the old user; reset_user will set it back).
|
34
7
|
# Takes care of invalidating current connections. Will force a re-login.
|
35
8
|
#
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Capitate
|
2
|
+
|
3
|
+
module CapExt
|
4
|
+
|
5
|
+
module Docs
|
6
|
+
|
7
|
+
# Get link to github source, so we can refer to recipe code.
|
8
|
+
#
|
9
|
+
# ==== Options
|
10
|
+
# +recipe+:: Recipe path, probably use __FILE__
|
11
|
+
#
|
12
|
+
# ==== Examples
|
13
|
+
# # In a lib/recipes/foo/foo.rb
|
14
|
+
# link_to_source(__FILE__) => "http://github.com/gabriel/capitate/tree/master/lib/recipes/foo/foo.rb"
|
15
|
+
#
|
16
|
+
def link_to_source(recipe_path)
|
17
|
+
full_path = File.expand_path(recipe_path)
|
18
|
+
project_path = File.expand_path(File.dirname(__FILE__) + "/../../../")
|
19
|
+
"http://github.com/gabriel/capitate/tree/master#{full_path.sub(project_path, "")}"
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -21,7 +21,7 @@ module Capitate
|
|
21
21
|
if message.blank?
|
22
22
|
message = <<-EOS
|
23
23
|
|
24
|
-
Please set :#{variable} variable in your Capfile or
|
24
|
+
Please set :#{variable} variable in your Capfile or deploy.rb
|
25
25
|
|
26
26
|
EOS
|
27
27
|
end
|
@@ -125,13 +125,6 @@ module Capitate
|
|
125
125
|
nil
|
126
126
|
end
|
127
127
|
|
128
|
-
|
129
|
-
def link_to_source(recipe_path)
|
130
|
-
full_path = File.expand_path(recipe_path)
|
131
|
-
project_path = File.expand_path(File.dirname(__FILE__) + "/../../../")
|
132
|
-
"http://github.com/gabriel/capitate/tree/master#{full_path.sub(project_path, "")}"
|
133
|
-
end
|
134
|
-
|
135
128
|
end
|
136
129
|
end
|
137
130
|
|
data/lib/capitate/version.rb
CHANGED
data/lib/capitate.rb
CHANGED
@@ -27,13 +27,13 @@ require 'capitate/plugins/yum'
|
|
27
27
|
require "capitate/cap_ext/connections"
|
28
28
|
require "capitate/cap_ext/variables"
|
29
29
|
require "capitate/cap_ext/run_via"
|
30
|
-
require "capitate/cap_ext/
|
30
|
+
require "capitate/cap_ext/docs"
|
31
31
|
|
32
32
|
class Capistrano::Configuration
|
33
33
|
include Capitate::CapExt::Variables
|
34
34
|
include Capitate::CapExt::RunVia
|
35
|
-
include Capitate::CapExt::Roles
|
36
35
|
include Capitate::CapExt::Connections
|
36
|
+
include Capitate::CapExt::Docs
|
37
37
|
end
|
38
38
|
|
39
39
|
#module Capistrano::Configuration::Connections; end
|
@@ -10,6 +10,7 @@ namespace :backgroundrb do
|
|
10
10
|
<dd>Backgroundrb logrotate paths.</dd>
|
11
11
|
<dd class="default">Defaults to @\#{shared_path}/log/backgroundrb*.log@</dd>
|
12
12
|
</dl>
|
13
|
+
"Source":#{link_to_source(__FILE__)}
|
13
14
|
DESC
|
14
15
|
task :install do
|
15
16
|
fetch_or_default(:backgroundrb_logrotate_path, "#{shared_path}/log/backgroundrb*.log")
|
@@ -6,7 +6,12 @@ namespace :mongrel do
|
|
6
6
|
desc <<-DESC
|
7
7
|
Install logrotated conf for mongrel cluster.
|
8
8
|
|
9
|
-
|
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__)}
|
10
15
|
DESC
|
11
16
|
task :install do
|
12
17
|
fetch_or_default(:mongrel_cluster_logrotate_path, "#{shared_path}/log/mongrel_cluster_*.log")
|
@@ -5,7 +5,12 @@ namespace :monit do
|
|
5
5
|
desc <<-DESC
|
6
6
|
Install logrotated conf for monit.
|
7
7
|
|
8
|
-
|
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__)}
|
9
14
|
DESC
|
10
15
|
task :install do
|
11
16
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
namespace :mysql do
|
2
|
+
|
3
|
+
namespace :logrotate do
|
4
|
+
|
5
|
+
desc <<-DESC
|
6
|
+
Install logrotated conf for nginx.
|
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, :roles => :db 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
|
data/lib/recipes/logrotated.rb
CHANGED
@@ -55,6 +55,17 @@ namespace :logrotated do
|
|
55
55
|
|
56
56
|
desc <<-DESC
|
57
57
|
Force rotate files.
|
58
|
+
|
59
|
+
<dl>
|
60
|
+
<dt>logrotate_prefix</dt>
|
61
|
+
<dd>Path to logrotate</dd>
|
62
|
+
<dd>Defaults to none</dd>
|
63
|
+
|
64
|
+
<dt>logrotate_conf_path</dt>
|
65
|
+
<dd>Path to logrotate conf</dd>
|
66
|
+
<dd>Defaults to @"/etc/logrotate.conf"@</dd>
|
67
|
+
</dl>
|
68
|
+
"Source":#{link_to_source(__FILE__)}
|
58
69
|
DESC
|
59
70
|
task :force do
|
60
71
|
|
data/lib/recipes/memcached.rb
CHANGED
@@ -1,6 +1,38 @@
|
|
1
1
|
namespace :memcached do
|
2
2
|
|
3
|
-
desc
|
3
|
+
desc <<-DESC
|
4
|
+
Create memcached yaml in shared path.
|
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
|
+
"Source":#{link_to_source(__FILE__)}
|
35
|
+
DESC
|
4
36
|
task :setup do
|
5
37
|
|
6
38
|
# Settings
|
@@ -23,13 +23,13 @@ namespace :backgroundrb do
|
|
23
23
|
sudo "#{monit_bin_path} restart backgroundrb_#{application}"
|
24
24
|
end
|
25
25
|
|
26
|
-
desc "Start
|
26
|
+
desc "Start backgroundrb (for application)"
|
27
27
|
task :start do
|
28
28
|
fetch_or_default(:monit_bin_path, "monit")
|
29
29
|
sudo "#{monit_bin_path} start backgroundrb_#{application}"
|
30
30
|
end
|
31
31
|
|
32
|
-
desc "Stop
|
32
|
+
desc "Stop backgroundrb (for application)"
|
33
33
|
task :stop do
|
34
34
|
fetch_or_default(:monit_bin_path, "monit")
|
35
35
|
sudo "#{monit_bin_path} stop backgroundrb_#{application}"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
namespace :database do
|
2
|
+
|
3
|
+
namespace :monit do
|
4
|
+
|
5
|
+
desc "Restart database (monit group)"
|
6
|
+
task :restart do
|
7
|
+
fetch_or_default(:monit_bin_path, "monit")
|
8
|
+
sudo "#{monit_bin_path} -g database restart all"
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Start database (monit group)"
|
12
|
+
task :start do
|
13
|
+
fetch_or_default(:monit_bin_path, "monit")
|
14
|
+
sudo "#{monit_bin_path} -g database start all"
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Stop database (monit group)"
|
18
|
+
task :stop do
|
19
|
+
fetch_or_default(:monit_bin_path, "monit")
|
20
|
+
sudo "#{monit_bin_path} -g database stop all"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/recipes/monit/mysql.rb
CHANGED
@@ -3,9 +3,24 @@ namespace :mysql do
|
|
3
3
|
namespace :monit do
|
4
4
|
|
5
5
|
desc <<-DESC
|
6
|
-
Install mysql monit hooks.
|
6
|
+
Install mysql monit hooks.
|
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
|
+
"Source":#{link_to_source(__FILE__)}
|
7
22
|
DESC
|
8
|
-
task :install do
|
23
|
+
task :install, :roles => :db do
|
9
24
|
|
10
25
|
# Settings
|
11
26
|
fetch_or_default(:mysql_pid_path, "/var/run/mysqld/mysqld.pid")
|
@@ -14,8 +29,8 @@ namespace :mysql do
|
|
14
29
|
|
15
30
|
put template.load("mysql/mysql.monitrc.erb", binding), "/tmp/mysql.monitrc"
|
16
31
|
run_via "install -o root /tmp/mysql.monitrc #{monit_conf_dir}/mysql.monitrc"
|
17
|
-
end
|
18
|
-
|
32
|
+
end
|
33
|
+
|
19
34
|
end
|
20
35
|
|
21
36
|
end
|
data/lib/recipes/monit/nginx.rb
CHANGED
@@ -5,8 +5,7 @@ namespace :nginx do
|
|
5
5
|
desc <<-DESC
|
6
6
|
Install nginx monit hooks.
|
7
7
|
|
8
|
-
<dl>
|
9
|
-
|
8
|
+
<dl>
|
10
9
|
<dt>nginx_pid_path</dt>
|
11
10
|
<dd>Path to nginx pid file</dd>
|
12
11
|
<dd>Defaults to /var/run/nginx.pid</dd>
|
@@ -28,6 +27,24 @@ namespace :nginx do
|
|
28
27
|
put template.load("nginx/nginx.monitrc.erb", binding), "/tmp/nginx.monitrc"
|
29
28
|
run_via "install -o root /tmp/nginx.monitrc #{monit_conf_dir}/nginx.monitrc"
|
30
29
|
end
|
30
|
+
|
31
|
+
desc "Restart nginx (through monit)"
|
32
|
+
task :restart do
|
33
|
+
fetch_or_default(:monit_bin_path, "monit")
|
34
|
+
sudo "#{monit_bin_path} restart nginx"
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Start nginx (through monit)"
|
38
|
+
task :start do
|
39
|
+
fetch_or_default(:monit_bin_path, "monit")
|
40
|
+
sudo "#{monit_bin_path} start nginx"
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Stop nginx (through monit)"
|
44
|
+
task :stop do
|
45
|
+
fetch_or_default(:monit_bin_path, "monit")
|
46
|
+
sudo "#{monit_bin_path} stop nginx"
|
47
|
+
end
|
31
48
|
|
32
49
|
end
|
33
50
|
|
data/lib/recipes/mysql.rb
CHANGED
@@ -36,18 +36,7 @@ namespace :mysql do
|
|
36
36
|
fetch(:db_pass)
|
37
37
|
fetch_or_default(:mysql_admin_password, prompt.password('Mysql admin password: '))
|
38
38
|
fetch_or_default(:mysql_grant_priv_type, "ALL")
|
39
|
-
|
40
|
-
# Set grant locations to all servers in roles: :search, :db, :app
|
41
|
-
unless exists?(:mysql_grant_locations)
|
42
|
-
mysql_grant_locations = [ "localhost" ]
|
43
|
-
role_names = [ :search, :db, :app ]
|
44
|
-
role_names.each do |role_name|
|
45
|
-
roles[role_name].each do |role|
|
46
|
-
mysql_grant_locations << role.host
|
47
|
-
end unless roles[role_name].blank?
|
48
|
-
end
|
49
|
-
set :mysql_grant_locations, mysql_grant_locations.uniq!
|
50
|
-
end
|
39
|
+
fetch_or_default(:mysql_grant_locations, [ "localhost" ])
|
51
40
|
|
52
41
|
sql = template.load("mysql/install_db.sql.erb")
|
53
42
|
|
@@ -57,4 +46,31 @@ namespace :mysql do
|
|
57
46
|
run "mysql -u root -p#{mysql_admin_password} < /tmp/install_db_#{application}.sql"
|
58
47
|
end
|
59
48
|
|
49
|
+
desc <<-DESC
|
50
|
+
Create my.cnf based on template.
|
51
|
+
|
52
|
+
<dl>
|
53
|
+
<dt>my_cnf_template</dt>
|
54
|
+
<dd>Path to my.cnf template</dd>
|
55
|
+
|
56
|
+
<dt>db_socket</dt>
|
57
|
+
<dd>Path to mysql .sock</dd>
|
58
|
+
<dd class="default">Defaults to @"/var/lib/mysql/mysql.sock"@</dd>
|
59
|
+
|
60
|
+
<dt>db_port</dt>
|
61
|
+
<dd>Mysql port</dd>
|
62
|
+
<dd class="default">Defaults to @3306@</dd>
|
63
|
+
</dl>
|
64
|
+
|
65
|
+
"Source":#{link_to_source(__FILE__)}
|
66
|
+
DESC
|
67
|
+
task :install_my_cnf, :roles => :db do
|
68
|
+
fetch_or_default(:my_cnf_template, "mysql/my.cnf.innodb_1024.erb")
|
69
|
+
fetch_or_default(:db_socket, "/var/lib/mysql/mysql.sock")
|
70
|
+
fetch_or_default(:db_port, 3306)
|
71
|
+
|
72
|
+
utils.install_template(my_cnf_template, "/etc/my.cnf")
|
73
|
+
end
|
74
|
+
|
75
|
+
|
60
76
|
end
|
data/lib/recipes/nginx.rb
CHANGED
@@ -7,10 +7,12 @@ namespace :nginx do
|
|
7
7
|
|
8
8
|
<dl>
|
9
9
|
<dt>mongrel_application</dt>
|
10
|
-
<dd>Mongrel application
|
10
|
+
<dd>Mongrel application.</dd>
|
11
|
+
<dd class="default">Defaults to @:application@</dd>
|
11
12
|
|
12
|
-
<dt>mongrel_size</dt
|
13
|
-
<dd
|
13
|
+
<dt>mongrel_size</dt>
|
14
|
+
<dd>Number of mongrels.</dd>
|
15
|
+
<dd>@set :mongrel_size, 3@</dd>
|
14
16
|
|
15
17
|
<dt>*mongrel_port</dt>
|
16
18
|
<dd>Starting port for mongrels. If there are 3 mongrels with port 9000, then instances will be at 9000, 9001, and 9002</dd>
|
@@ -0,0 +1,120 @@
|
|
1
|
+
#
|
2
|
+
# my.cnf.innodb_1024
|
3
|
+
#
|
4
|
+
# This is a MySQL 5.x configuration file designed for the typical
|
5
|
+
# webapp, running on a 1GB server that is also the app and
|
6
|
+
# httpd server. The below configuration dedicates about half of
|
7
|
+
# the system resources to MySQL. It is InnoDB-specific, and
|
8
|
+
# will not perform well with many MyISAM tables. It supports
|
9
|
+
# limited ACID and referential integrity. It does not support
|
10
|
+
# replication.
|
11
|
+
#
|
12
|
+
# By Evan Weaver
|
13
|
+
# http://blog.evanweaver.com/articles/2007/04/30/top-secret-tuned-mysql-configurations-for-rails
|
14
|
+
#
|
15
|
+
# Copyright 2007, Cloudburst, LLC
|
16
|
+
# Licensed under the Academic Free License v. 3.0
|
17
|
+
# http://blog.evanweaver.com/files/mysql/LICENSE
|
18
|
+
#
|
19
|
+
|
20
|
+
[client]
|
21
|
+
port = <%= db_port %>
|
22
|
+
socket = <%= db_socket %>
|
23
|
+
max_allowed_packet = 32M
|
24
|
+
|
25
|
+
[mysqld]
|
26
|
+
######### engine and access interfaces
|
27
|
+
skip-networking
|
28
|
+
skip-locking
|
29
|
+
skip-bdb
|
30
|
+
|
31
|
+
port = <%= db_port %>
|
32
|
+
socket = <%= db_socket %>
|
33
|
+
default-storage-engine = innodb
|
34
|
+
|
35
|
+
######### character sets
|
36
|
+
character_set_server = utf8
|
37
|
+
collation_server = utf8_general_ci
|
38
|
+
|
39
|
+
######### innodb options
|
40
|
+
innodb_additional_mem_pool_size = 16M
|
41
|
+
# buffer pool size is most critical for innodb's performance and memory usage
|
42
|
+
innodb_buffer_pool_size = 256M
|
43
|
+
innodb_data_file_path = ibdata1:10M:autoextend
|
44
|
+
innodb_data_home_dir = /var/lib/mysql
|
45
|
+
innodb_file_io_threads = 4
|
46
|
+
innodb_thread_concurrency = 4
|
47
|
+
# 2 is fastest but slightly less reliable than 0 or 1, if you don't trust your hard disks
|
48
|
+
innodb_flush_log_at_trx_commit = 2
|
49
|
+
|
50
|
+
innodb_log_buffer_size = 64M
|
51
|
+
# innodb_log_file_size * innodb_log_files_in_group < buffer_pool_size
|
52
|
+
innodb_log_file_size = 80M
|
53
|
+
innodb_log_files_in_group = 3
|
54
|
+
# use a secondary volume if possible for a concurrent read/write speed boost
|
55
|
+
innodb_log_group_home_dir = /var/lib/mysql
|
56
|
+
|
57
|
+
innodb_max_dirty_pages_pct = 90
|
58
|
+
innodb_lock_wait_timeout = 120
|
59
|
+
|
60
|
+
######### myisam
|
61
|
+
# innodb still requires the myisam engine for mysql's internal metadata table
|
62
|
+
key_buffer_size = 16M
|
63
|
+
|
64
|
+
######### general
|
65
|
+
connect_timeout = 10
|
66
|
+
back_log = 50
|
67
|
+
# you can't have more mongrels or fastcgi processes than the max_connections setting
|
68
|
+
max_connections = 96
|
69
|
+
max_connect_errors = 10
|
70
|
+
table_cache = 2048
|
71
|
+
max_allowed_packet = 32M
|
72
|
+
|
73
|
+
open_files_limit = 1024
|
74
|
+
# this is the in-memory tmp table max size
|
75
|
+
max_heap_table_size = 64M
|
76
|
+
# below are per-connection and per-sub-query
|
77
|
+
join_buffer_size = 4M
|
78
|
+
read_buffer_size = 4M
|
79
|
+
sort_buffer_size = 8M
|
80
|
+
read_rnd_buffer_size = 8M
|
81
|
+
|
82
|
+
thread_cache_size = 8
|
83
|
+
thread_concurrency = 8
|
84
|
+
|
85
|
+
# query_cache_size is a global setting
|
86
|
+
query_cache_size = 128M
|
87
|
+
query_cache_limit = 2M
|
88
|
+
thread_stack = 192K
|
89
|
+
transaction_isolation = READ-COMMITTED
|
90
|
+
# this is the on-disk max size
|
91
|
+
tmp_table_size = 128M
|
92
|
+
tmpdir = /tmp
|
93
|
+
|
94
|
+
|
95
|
+
# You can log slow queries to the mysql log directory to help isolate performance problems
|
96
|
+
log_slow_queries
|
97
|
+
long_query_time = 3
|
98
|
+
log_long_format
|
99
|
+
|
100
|
+
[mysqldump]
|
101
|
+
quick
|
102
|
+
max_allowed_packet = 16M
|
103
|
+
|
104
|
+
[mysql]
|
105
|
+
no-auto-rehash
|
106
|
+
|
107
|
+
[myisamchk]
|
108
|
+
# not used except when repairing the database at startup
|
109
|
+
key_buffer = 64M
|
110
|
+
sort_buffer_size = 64M
|
111
|
+
read_buffer = 2M
|
112
|
+
write_buffer = 2M
|
113
|
+
|
114
|
+
[mysqlhotcopy]
|
115
|
+
interactive-timeout
|
116
|
+
|
117
|
+
[mysqld_safe]
|
118
|
+
open-files-limit = 8192
|
119
|
+
|
120
|
+
# PS. Do not under any circumstances enable binlog
|
data/test/test_recipes.rb
CHANGED
@@ -2,8 +2,34 @@ require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
2
|
|
3
3
|
class TestRecipes < Test::Unit::TestCase
|
4
4
|
|
5
|
-
def
|
6
|
-
#
|
5
|
+
def test_egrep
|
6
|
+
# task :test_egrep do
|
7
|
+
# role :test, "10.0.6.118", :user => "root"
|
8
|
+
#
|
9
|
+
# found = utils.egrep("^mail.\\*", "/etc/syslog.conf")
|
10
|
+
# puts "Found? #{found}"
|
11
|
+
#
|
12
|
+
# found = utils.egrep("^fooo", "/etc/syslog.conf")
|
13
|
+
# puts "Found? #{found}"
|
14
|
+
# end
|
15
|
+
assert true
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_app
|
19
|
+
# task :test_app do
|
20
|
+
# set :application, "sick"
|
21
|
+
# set :deploy_to, "/var/www/apps/sick"
|
22
|
+
# role :web, "10.0.6.118", :user => "root"
|
23
|
+
# role :app, "10.0.6.118", :user => "root"
|
24
|
+
# end
|
25
|
+
assert true
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_install
|
29
|
+
# task :test_install do
|
30
|
+
# load File.dirname(__FILE__) + "/lib/deployment/centos-5.1-64-web/install.rb"
|
31
|
+
# role :test, "10.0.6.118", :user => "root"
|
32
|
+
# end
|
7
33
|
assert true
|
8
34
|
end
|
9
35
|
|
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.14</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.14
|
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-03-
|
12
|
+
date: 2008-03-27 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -47,7 +47,7 @@ files:
|
|
47
47
|
- docs/nginx.README
|
48
48
|
- lib/capitate.rb
|
49
49
|
- lib/capitate/cap_ext/connections.rb
|
50
|
-
- lib/capitate/cap_ext/
|
50
|
+
- lib/capitate/cap_ext/docs.rb
|
51
51
|
- lib/capitate/cap_ext/run_via.rb
|
52
52
|
- lib/capitate/cap_ext/variables.rb
|
53
53
|
- lib/capitate/plugins/base.rb
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- lib/recipes/logrotate/backgroundrb.rb
|
79
79
|
- lib/recipes/logrotate/mongrel_cluster.rb
|
80
80
|
- lib/recipes/logrotate/monit.rb
|
81
|
+
- lib/recipes/logrotate/mysql.rb
|
81
82
|
- lib/recipes/logrotate/nginx.rb
|
82
83
|
- lib/recipes/logrotate/rails.rb
|
83
84
|
- lib/recipes/logrotate/sphinx.rb
|
@@ -85,6 +86,7 @@ files:
|
|
85
86
|
- lib/recipes/memcached.rb
|
86
87
|
- lib/recipes/monit.rb
|
87
88
|
- lib/recipes/monit/backgroundrb.rb
|
89
|
+
- lib/recipes/monit/database.rb
|
88
90
|
- lib/recipes/monit/memcached.rb
|
89
91
|
- lib/recipes/monit/mongrel_cluster.rb
|
90
92
|
- lib/recipes/monit/mysql.rb
|
@@ -112,6 +114,7 @@ files:
|
|
112
114
|
- lib/templates/monit/monit.initd.centos.erb
|
113
115
|
- lib/templates/monit/monitrc.erb
|
114
116
|
- lib/templates/mysql/install_db.sql.erb
|
117
|
+
- lib/templates/mysql/my.cnf.innodb_1024.erb
|
115
118
|
- lib/templates/mysql/mysql.monitrc.erb
|
116
119
|
- lib/templates/nginx/nginx.conf.erb
|
117
120
|
- lib/templates/nginx/nginx.initd.erb
|
@@ -133,7 +136,6 @@ files:
|
|
133
136
|
- test/test_helper.rb
|
134
137
|
- test/test_plugin_upload.rb
|
135
138
|
- test/test_recipes.rb
|
136
|
-
- test/test_roles.rb
|
137
139
|
- test/test_templates.rb
|
138
140
|
- website/index.html
|
139
141
|
- website/index.txt
|
@@ -174,5 +176,4 @@ test_files:
|
|
174
176
|
- test/test_helper.rb
|
175
177
|
- test/test_plugin_upload.rb
|
176
178
|
- test/test_recipes.rb
|
177
|
-
- test/test_roles.rb
|
178
179
|
- test/test_templates.rb
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Capitate
|
2
|
-
module CapExt
|
3
|
-
module Roles
|
4
|
-
|
5
|
-
def self.included(base) #:nodoc:
|
6
|
-
base.send :alias_method, :role_list_from_without_capitate, :role_list_from
|
7
|
-
base.send :alias_method, :role_list_from, :role_list_from_with_capitate
|
8
|
-
end
|
9
|
-
|
10
|
-
def role_list_from_with_capitate(roles)
|
11
|
-
roles = roles.split(/,/) if String === roles
|
12
|
-
roles = build_list(roles)
|
13
|
-
roles.map { |role|
|
14
|
-
role = String === role ? role.strip.to_sym : role
|
15
|
-
unless self.roles.key?(role)
|
16
|
-
logger.important "unknown role `#{role}'"
|
17
|
-
nil
|
18
|
-
else
|
19
|
-
role
|
20
|
-
end
|
21
|
-
}.compact
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/test/test_roles.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
require 'capistrano/configuration'
|
3
|
-
|
4
|
-
class TestRoles < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@config = Capistrano::Configuration.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_fetch
|
11
|
-
|
12
|
-
@config.load do
|
13
|
-
|
14
|
-
role :test, "10.0.6.20"
|
15
|
-
role :test_with_options, "10.0.6.21", :op1 => true
|
16
|
-
role :test_with_options, "10.0.6.22", :op2 => true
|
17
|
-
|
18
|
-
role :test_with_other_options, "10.0.6.23", :sphinx_port => 3312
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
test_role = @config.fetch_role(:test)
|
23
|
-
|
24
|
-
assert test_role
|
25
|
-
assert_equal "10.0.6.20", test_role.host
|
26
|
-
|
27
|
-
test_roles = @config.fetch_roles(:test_with_options)
|
28
|
-
assert test_roles
|
29
|
-
assert_equal [ "10.0.6.21", "10.0.6.22" ], test_roles.collect(&:host)
|
30
|
-
|
31
|
-
test_roles_with_opts = @config.fetch_roles(:test_with_options, :op1 => true)
|
32
|
-
assert test_roles_with_opts
|
33
|
-
assert_equal [ "10.0.6.21" ], test_roles_with_opts.collect(&:host)
|
34
|
-
|
35
|
-
test_role_with_opts = @config.fetch_role(:test_with_options, :op2 => true)
|
36
|
-
assert test_role_with_opts
|
37
|
-
assert_equal "10.0.6.22", test_role_with_opts.host
|
38
|
-
|
39
|
-
|
40
|
-
test_role_with_other_opts = @config.fetch_role(:test_with_other_options)
|
41
|
-
assert test_role_with_other_opts
|
42
|
-
assert_equal "10.0.6.23", test_role_with_other_opts.host
|
43
|
-
assert_equal 3312, test_role_with_other_opts.options[:sphinx_port]
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|