sml-rubber 0.9.9 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +13 -7
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/deflate.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/expires.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/headers.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/setenvif.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/generators/vulcanize/templates/{nginx/config/rubber/role/web_tools/index.html → apache/config/rubber/role/web_tools/tools-index.html} +8 -1
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +4 -12
- data/generators/vulcanize/templates/base/config/deploy.rb +5 -34
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +4 -6
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +29 -3
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/generators/vulcanize/templates/{nginx/config/rubber/role/web/nginx.conf → complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf} +25 -45
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/generators/vulcanize/templates/{complete_mysql → complete_mongrel_mysql}/templates.yml +0 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +3 -1
- data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +8 -10
- data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +1 -1
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +1 -1
- data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +0 -5
- data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +7 -7
- data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/mongrel_cluster.yml +4 -4
- data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/monit-mongrel.conf +2 -2
- data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +2 -2
- data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +1 -1
- data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +17 -1
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +1 -1
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +14 -36
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +1 -1
- data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +8 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +7 -7
- data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +6 -6
- data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/crontab +0 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/monit-nginx.conf +0 -1
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +43 -62
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
- data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +3 -26
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +13 -40
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +9 -11
- data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +1 -1
- data/lib/rubber/cloud/aws.rb +30 -0
- data/lib/rubber/instance.rb +53 -2
- data/lib/rubber/recipes/rubber.rb +7 -6
- data/lib/rubber/recipes/rubber/deploy.rb +22 -1
- data/lib/rubber/recipes/rubber/instances.rb +74 -24
- data/lib/rubber/recipes/rubber/load_balancers.rb +27 -0
- data/lib/rubber/recipes/rubber/security_groups.rb +5 -7
- data/lib/rubber/recipes/rubber/setup.rb +50 -14
- data/lib/rubber/recipes/rubber/static_ips.rb +7 -7
- data/lib/rubber/recipes/rubber/utils.rb +6 -7
- data/lib/rubber/recipes/rubber/volumes.rb +8 -8
- data/lib/rubber/util.rb +4 -0
- data/test/instance_test.rb +55 -0
- metadata +32 -18
- data/generators/vulcanize/templates/apache/config/rubber/role/web/vhost.conf +0 -27
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf +0 -44
- data/generators/vulcanize/templates/passenger/config/rubber/role/web/passenger.conf +0 -8
- data/generators/vulcanize/templates/passenger/config/rubber/role/web/vhost.conf +0 -29
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
role_dependencies:
|
3
|
+
web: [nginx, haproxy]
|
4
|
+
app: [mongrel]
|
5
|
+
web_tools: [nginx]
|
6
|
+
|
7
|
+
haproxy_listen_port: 9000
|
8
|
+
web_port: 80
|
9
|
+
web_ssl_port: 443
|
10
|
+
web_tools_port: 8080
|
11
|
+
web_tools_ssl_port: 8443
|
12
|
+
|
13
|
+
security_groups:
|
14
|
+
web:
|
15
|
+
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
16
|
+
rules:
|
17
|
+
- protocol: tcp
|
18
|
+
from_port: "#{web_port}"
|
19
|
+
to_port: "#{web_port}"
|
20
|
+
source_ips: [0.0.0.0/0]
|
21
|
+
- protocol: tcp
|
22
|
+
from_port: "#{web_ssl_port}"
|
23
|
+
to_port: "#{web_ssl_port}"
|
24
|
+
source_ips: [0.0.0.0/0]
|
25
|
+
web_tools:
|
26
|
+
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
27
|
+
rules:
|
28
|
+
- protocol: tcp
|
29
|
+
from_port: "#{web_tools_port}"
|
30
|
+
to_port: "#{web_tools_port}"
|
31
|
+
source_ips: [0.0.0.0/0]
|
32
|
+
- protocol: tcp
|
33
|
+
from_port: "#{web_tools_ssl_port}"
|
34
|
+
to_port: "#{web_tools_ssl_port}"
|
35
|
+
source_ips: [0.0.0.0/0]
|
36
|
+
|
37
|
+
roles:
|
38
|
+
web:
|
39
|
+
assigned_security_groups: [web]
|
40
|
+
web_tools:
|
41
|
+
assigned_security_groups: [web_tools]
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%
|
2
|
+
@path = "/etc/haproxy/haproxy.cfg"
|
3
|
+
@additive = ["# start haproxy passenger", "# end haproxy passenger"]
|
4
|
+
%>
|
5
|
+
|
6
|
+
<%
|
7
|
+
backend_hosts = rubber_instances.for_role('passenger').collect { |i| i.name }
|
8
|
+
%>
|
9
|
+
|
10
|
+
listen passenger_proxy 0.0.0.0:<%= rubber_env.web_port %>
|
11
|
+
<% backend_hosts.each do |server| %>
|
12
|
+
server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_port %> maxconn <%= rubber_env.max_app_connections %> check
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
listen passenger_proxy 0.0.0.0:<%= rubber_env.web_ssl_port %>
|
16
|
+
mode tcp
|
17
|
+
<% backend_hosts.each do |server| %>
|
18
|
+
server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_ssl_port %> maxconn <%= rubber_env.max_app_connections %> check
|
19
|
+
<% end %>
|
data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
role_dependencies:
|
3
|
+
web: [haproxy]
|
4
|
+
app: [passenger]
|
5
|
+
web_tools: [apache]
|
6
|
+
|
7
|
+
web_port: 80
|
8
|
+
web_ssl_port: 443
|
9
|
+
web_tools_port: 8080
|
10
|
+
web_tools_ssl_port: 8443
|
11
|
+
|
12
|
+
security_groups:
|
13
|
+
web:
|
14
|
+
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
15
|
+
rules:
|
16
|
+
- protocol: tcp
|
17
|
+
from_port: "#{web_port}"
|
18
|
+
to_port: "#{web_port}"
|
19
|
+
source_ips: [0.0.0.0/0]
|
20
|
+
- protocol: tcp
|
21
|
+
from_port: "#{web_ssl_port}"
|
22
|
+
to_port: "#{web_ssl_port}"
|
23
|
+
source_ips: [0.0.0.0/0]
|
24
|
+
web_tools:
|
25
|
+
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
26
|
+
rules:
|
27
|
+
- protocol: tcp
|
28
|
+
from_port: "#{web_tools_port}"
|
29
|
+
to_port: "#{web_tools_port}"
|
30
|
+
source_ips: [0.0.0.0/0]
|
31
|
+
- protocol: tcp
|
32
|
+
from_port: "#{web_tools_ssl_port}"
|
33
|
+
to_port: "#{web_tools_ssl_port}"
|
34
|
+
source_ips: [0.0.0.0/0]
|
35
|
+
|
36
|
+
roles:
|
37
|
+
web:
|
38
|
+
assigned_security_groups: [web]
|
39
|
+
web_tools:
|
40
|
+
assigned_security_groups: [web_tools]
|
@@ -8,9 +8,8 @@ namespace :rubber do
|
|
8
8
|
after "custom_install_base", "rubber:cruise:custom_install"
|
9
9
|
|
10
10
|
task :custom_install, :roles => :cruise do
|
11
|
-
env = rubber_cfg.environment.bind()
|
12
11
|
rubber.sudo_script 'install_cruise', <<-ENDSCRIPT
|
13
|
-
export CRUISE_HOME="#{
|
12
|
+
export CRUISE_HOME="#{rubber_env.cruise_dir}"
|
14
13
|
|
15
14
|
if [[ ! -d $CRUISE_HOME ]]; then
|
16
15
|
git clone git://github.com/sml/cruisecontrol.rb.git $CRUISE_HOME
|
@@ -26,26 +25,25 @@ namespace :rubber do
|
|
26
25
|
end
|
27
26
|
|
28
27
|
task :setup_project, :roles => :cruise do
|
29
|
-
env = rubber_cfg.environment.bind()
|
30
28
|
rubber.sudo_script 'setup_project', <<-ENDSCRIPT
|
31
29
|
|
32
|
-
export CRUISE_HOME="#{
|
33
|
-
export CRUISE_DATA_ROOT="#{
|
34
|
-
export CRUISE_PROJECT_ROOT="#{
|
30
|
+
export CRUISE_HOME="#{rubber_env.cruise_dir}"
|
31
|
+
export CRUISE_DATA_ROOT="#{rubber_env.cruise_data_dir}"
|
32
|
+
export CRUISE_PROJECT_ROOT="#{rubber_env.cruise_project_dir}"
|
35
33
|
|
36
34
|
if [[ ! -d $CRUISE_HOME ]]; then
|
37
|
-
git clone git://github.com/sml/cruisecontrol.rb.git #{
|
35
|
+
git clone git://github.com/sml/cruisecontrol.rb.git #{rubber_env.cruise_dir}
|
38
36
|
fi
|
39
37
|
|
40
38
|
if [[ ! -d $CRUISE_PROJECT_ROOT ]]; then
|
41
|
-
if [[ -z "#{
|
39
|
+
if [[ -z "#{rubber_env.cruise_repository}" ]]; then
|
42
40
|
echo "cruise_repository must be set in rubber env"
|
43
41
|
exit 1
|
44
42
|
fi
|
45
43
|
|
46
44
|
cd $CRUISE_HOME
|
47
|
-
echo "Adding project repository to cruise: #{
|
48
|
-
./cruise add #{
|
45
|
+
echo "Adding project repository to cruise: #{rubber_env.cruise_repository}"
|
46
|
+
./cruise add #{rubber_env.app_name} #{rubber_env.cruise_repository}
|
49
47
|
mkdir -p $CRUISE_PROJECT_ROOT/log
|
50
48
|
cd $CRUISE_PROJECT_ROOT && rake db:create RAILS_ENV=test
|
51
49
|
fi
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%
|
2
|
+
@path = "/etc/haproxy/haproxy.cfg"
|
3
|
+
%>
|
4
|
+
global
|
5
|
+
log 127.0.0.1 local0 warning
|
6
|
+
maxconn 1024
|
7
|
+
|
8
|
+
defaults
|
9
|
+
log global
|
10
|
+
mode http
|
11
|
+
retries 3
|
12
|
+
balance roundrobin
|
13
|
+
option abortonclose
|
14
|
+
option redispatch
|
15
|
+
contimeout 4000
|
16
|
+
clitimeout 150000
|
17
|
+
srvtimeout 30000
|
18
|
+
|
19
|
+
# Admin interface for proxy stats
|
20
|
+
listen admin 0.0.0.0:<%= rubber_env.haproxy_admin_port %>
|
21
|
+
stats uri /haproxy
|
22
|
+
|
23
|
+
# So monit can check on haproxy
|
24
|
+
# simple response : 'OK'
|
25
|
+
listen health_check 0.0.0.0:<%= rubber_env.haproxy_monitor_port %>
|
26
|
+
mode health
|
@@ -7,9 +7,9 @@ namespace :rubber do
|
|
7
7
|
|
8
8
|
after "rubber:install_gems", "rubber:mongrel:custom_install"
|
9
9
|
|
10
|
-
task :custom_install, :roles => :
|
10
|
+
task :custom_install, :roles => :mongrel do
|
11
11
|
# Setup system to restart mongrel_cluster on reboot
|
12
|
-
rubber.sudo_script '
|
12
|
+
rubber.sudo_script 'setup_mongrel_init', <<-ENDSCRIPT
|
13
13
|
mkdir -p /etc/mongrel_cluster
|
14
14
|
rm -f /etc/mongrel_cluster/#{application}-#{RUBBER_ENV}.yml && ln -s /mnt/#{application}-#{RUBBER_ENV}/current/config/mongrel_cluster.yml /etc/mongrel_cluster/#{application}-#{RUBBER_ENV}.yml
|
15
15
|
find /usr/lib/ruby/gems -path "*/resources/mongrel_cluster" -exec cp {} /etc/init.d/ \\;
|
@@ -28,7 +28,7 @@ namespace :rubber do
|
|
28
28
|
|
29
29
|
def mongrel_start
|
30
30
|
run "cd #{current_path} && mongrel_rails cluster::start --clean"
|
31
|
-
pid_cnt =
|
31
|
+
pid_cnt = rubber_env.mongrel_count
|
32
32
|
logger.info "Waiting for mongrel pid files to show up"
|
33
33
|
run "while ((`ls #{current_path}/tmp/pids/mongrel.*.pid 2> /dev/null | wc -l` < #{pid_cnt})); do sleep 1; done"
|
34
34
|
end
|
@@ -36,7 +36,7 @@ namespace :rubber do
|
|
36
36
|
# serial_task can only be called after roles defined - not normally a problem, but
|
37
37
|
# rubber auto-roles don't get defined till after all tasks are defined
|
38
38
|
on :load do
|
39
|
-
rubber.serial_task self, :serial_restart, :roles => :
|
39
|
+
rubber.serial_task self, :serial_restart, :roles => :mongrel do
|
40
40
|
teardown_connections_to(sessions.keys)
|
41
41
|
mongrel_stop
|
42
42
|
mongrel_start
|
@@ -44,17 +44,17 @@ namespace :rubber do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
desc "Restarts the mongrel app server"
|
47
|
-
task :restart, :roles => :
|
47
|
+
task :restart, :roles => :mongrel do
|
48
48
|
serial_restart
|
49
49
|
end
|
50
50
|
|
51
51
|
desc "Stops the mongrel app server"
|
52
|
-
task :stop, :roles => :
|
52
|
+
task :stop, :roles => :mongrel do
|
53
53
|
mongrel_stop
|
54
54
|
end
|
55
55
|
|
56
56
|
desc "Starts the mongrel app server"
|
57
|
-
task :start, :roles => :
|
57
|
+
task :start, :roles => :mongrel do
|
58
58
|
mongrel_start
|
59
59
|
end
|
60
60
|
|
data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/mongrel_cluster.yml
RENAMED
@@ -2,11 +2,11 @@
|
|
2
2
|
@path = "#{RUBBER_ROOT}/config/mongrel_cluster.yml"
|
3
3
|
%>
|
4
4
|
---
|
5
|
-
user:
|
6
|
-
group:
|
5
|
+
user: <%= rubber_env.app_user %>
|
6
|
+
group: <%= rubber_env.app_user %>
|
7
7
|
cwd: <%= RUBBER_ROOT %>
|
8
|
-
port: "<%= rubber_env.
|
8
|
+
port: "<%= rubber_env.mongrel_base_port %>"
|
9
9
|
environment: <%= RUBBER_ENV %>
|
10
10
|
address: <%= rubber_env.host %>
|
11
11
|
pid_file: tmp/pids/mongrel.pid
|
12
|
-
servers: <%= rubber_env.
|
12
|
+
servers: <%= rubber_env.mongrel_count %>
|
data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/monit-mongrel.conf
RENAMED
@@ -2,9 +2,9 @@
|
|
2
2
|
@path = '/etc/monit/monit.d/monit-mongrel.conf'
|
3
3
|
%>
|
4
4
|
|
5
|
-
<% (0..(rubber_env.
|
5
|
+
<% (0..(rubber_env.mongrel_count.to_i - 1)).each do |i| %>
|
6
6
|
|
7
|
-
<% PORT = rubber_env.
|
7
|
+
<% PORT = rubber_env.mongrel_base_port + i %>
|
8
8
|
<% PIDFILE = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{PORT}.pid" %>
|
9
9
|
check process mongrel-<%= PORT %> with pidfile <%= PIDFILE %>
|
10
10
|
group mongrel-<%= RUBBER_ENV %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
# These will probably need to be used by the rubber module used for the web role (nginx)
|
3
|
-
|
4
|
-
|
3
|
+
mongrel_base_port: 7000
|
4
|
+
mongrel_count: "#{RUBBER_ENV == 'production' ? 8 : 2}"
|
5
5
|
|
6
6
|
roles:
|
7
7
|
app:
|
@@ -4,7 +4,23 @@ namespace :rubber do
|
|
4
4
|
namespace :munin do
|
5
5
|
|
6
6
|
rubber.allow_optional_tasks(self)
|
7
|
-
|
7
|
+
|
8
|
+
after "rubber:install_packages", "rubber:munin:custom_install"
|
9
|
+
|
10
|
+
# sometimes apt-get install of munin doesn't end up configuring
|
11
|
+
# plugins (e.g. installing postfix at same time, postfix plugin
|
12
|
+
# configure barfs as postfix not configured yet)
|
13
|
+
desc <<-DESC
|
14
|
+
Reconfigures munin
|
15
|
+
DESC
|
16
|
+
task :custom_install do
|
17
|
+
rubber.run_script 'setup_munin_plugins', <<-ENDSCRIPT
|
18
|
+
munin-node-configure --shell --remove-also > /tmp/setup-munin-plugins
|
19
|
+
sh /tmp/setup-munin-plugins
|
20
|
+
ENDSCRIPT
|
21
|
+
restart
|
22
|
+
end
|
23
|
+
|
8
24
|
# after "deploy:stop", "rubber:munin:stop"
|
9
25
|
# before "deploy:start", "rubber:munin:start"
|
10
26
|
# after "deploy:restart", "rubber:munin:restart"
|
@@ -5,35 +5,17 @@ namespace :rubber do
|
|
5
5
|
|
6
6
|
rubber.allow_optional_tasks(self)
|
7
7
|
|
8
|
-
after "rubber:create", "rubber:mysql:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
db_instances = rubber_cfg.instance.for_role("mysql_master")
|
13
|
-
db_instances.each do |instance|
|
14
|
-
if ! instance.role_names.find {|n| n == 'db'}
|
15
|
-
role = Rubber::Configuration::RoleItem.new('db')
|
16
|
-
primary_exists = rubber_cfg.instance.for_role("db", "primary" => true).size > 0
|
17
|
-
role.options["primary"] = true unless primary_exists
|
18
|
-
instance.roles << role
|
19
|
-
end
|
20
|
-
end
|
21
|
-
db_instances = rubber_cfg.instance.for_role("mysql_slave")
|
8
|
+
after "rubber:create", "rubber:mysql:validate_db_roles"
|
9
|
+
|
10
|
+
task :validate_db_roles do
|
11
|
+
db_instances = rubber_instances.for_role("mysql_slave")
|
22
12
|
db_instances.each do |instance|
|
23
13
|
if instance.role_names.find {|n| n == 'mysql_master'}
|
24
|
-
|
25
|
-
instance.roles.delete_if {|r| r.name == 'mysql_slave'}
|
26
|
-
next
|
27
|
-
end
|
28
|
-
if ! instance.role_names.find {|n| n == 'db'}
|
29
|
-
role = Rubber::Configuration::RoleItem.new('db')
|
30
|
-
instance.roles << role
|
14
|
+
fatal "Cannot have a mysql slave and master on the same instance, please removing slave role for #{instance.name}"
|
31
15
|
end
|
32
16
|
end
|
33
|
-
rubber_cfg.instance.save()
|
34
|
-
load_roles() unless rubber_cfg.environment.bind().disable_auto_roles
|
35
17
|
end
|
36
|
-
|
18
|
+
|
37
19
|
after "rubber:bootstrap", "rubber:mysql:bootstrap"
|
38
20
|
|
39
21
|
|
@@ -46,7 +28,7 @@ namespace :rubber do
|
|
46
28
|
# Conditionaly bootstrap for each node/role only if that node has not
|
47
29
|
# been boostrapped for that role before
|
48
30
|
|
49
|
-
master_instances =
|
31
|
+
master_instances = rubber_instances.for_role("mysql_master") & rubber_instances.filtered
|
50
32
|
master_instances.each do |ic|
|
51
33
|
task_name = "_bootstrap_mysql_master_#{ic.full_name}".to_sym()
|
52
34
|
task task_name, :hosts => ic.full_name do
|
@@ -67,7 +49,7 @@ namespace :rubber do
|
|
67
49
|
send task_name
|
68
50
|
end
|
69
51
|
|
70
|
-
slave_instances =
|
52
|
+
slave_instances = rubber_instances.for_role("mysql_slave") & rubber_instances.filtered
|
71
53
|
slave_instances.each do |ic|
|
72
54
|
task_name = "_bootstrap_mysql_slave_#{ic.full_name}".to_sym()
|
73
55
|
task task_name, :hosts => ic.full_name do
|
@@ -78,13 +60,13 @@ namespace :rubber do
|
|
78
60
|
sudo "dpkg-reconfigure --frontend=noninteractive mysql-server-5.0"
|
79
61
|
sleep 5
|
80
62
|
|
81
|
-
master =
|
63
|
+
master = rubber_instances.for_role("mysql_master").first
|
82
64
|
|
83
65
|
# Doing a mysqldump locks the db, so ideally we'd do it against a slave replica thats
|
84
66
|
# not serving traffic (mysql_util role), but if thats not available try a regular
|
85
67
|
# slave (mysql_slave role), and finally default dumping from master (mysql_master role)
|
86
68
|
# TODO: handle simultaneous creating of multi slaves/utils
|
87
|
-
slaves =
|
69
|
+
slaves = rubber_instances.for_role("mysql_slave")
|
88
70
|
slaves.delete(ic) # don't want to try and dump from self
|
89
71
|
source = slaves.find {|sc| sc.role_names.include?("mysql_util")}
|
90
72
|
source = slaves.first unless source
|
@@ -134,20 +116,16 @@ namespace :rubber do
|
|
134
116
|
rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/#{role}|role/db/my.cnf", :deploy_path => release_path)
|
135
117
|
end
|
136
118
|
|
137
|
-
|
119
|
+
before "rubber:munin:custom_install", "rubber:mysql:custom_install_munin"
|
138
120
|
|
139
121
|
desc <<-DESC
|
140
122
|
Installs some extra munin graphs
|
141
123
|
DESC
|
142
|
-
task :
|
124
|
+
task :custom_install_munin, :roles => [:mysql_master, :mysql_slave] do
|
143
125
|
rubber.run_script 'install_munin_mysql', <<-ENDSCRIPT
|
144
|
-
if [ ! -f /
|
145
|
-
wget -q -O /
|
126
|
+
if [ ! -f /usr/share/munin/plugins/mysql_ ]; then
|
127
|
+
wget -q -O /usr/share/munin/plugins/mysql_ http://github.com/kjellm/munin-mysql/raw/master/mysql_
|
146
128
|
wget -q -O /etc/munin/plugin-conf.d/mysql_.conf http://github.com/kjellm/munin-mysql/raw/master/mysql_.conf
|
147
|
-
|
148
|
-
cd /etc/munin/plugins
|
149
|
-
chmod +x mysql_
|
150
|
-
./mysql_ suggest | while read x; do ln -sf mysql_ $x; done
|
151
129
|
fi
|
152
130
|
ENDSCRIPT
|
153
131
|
end
|