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.
Files changed (72) hide show
  1. data/VERSION +1 -1
  2. data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +13 -7
  3. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/deflate.conf +0 -0
  4. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/expires.conf +0 -0
  5. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/headers.conf +0 -0
  6. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  7. data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
  8. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/setenvif.conf +0 -0
  9. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
  10. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  11. data/generators/vulcanize/templates/{nginx/config/rubber/role/web_tools/index.html → apache/config/rubber/role/web_tools/tools-index.html} +8 -1
  12. data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +4 -12
  13. data/generators/vulcanize/templates/base/config/deploy.rb +5 -34
  14. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +4 -6
  15. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +29 -3
  16. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  17. data/generators/vulcanize/templates/{nginx/config/rubber/role/web/nginx.conf → complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf} +25 -45
  18. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  19. data/generators/vulcanize/templates/{complete_mysql → complete_mongrel_mysql}/templates.yml +0 -0
  20. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
  21. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
  22. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +3 -1
  23. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +8 -10
  24. data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +1 -1
  25. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  26. data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +1 -1
  27. data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +0 -5
  28. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +7 -7
  29. data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/mongrel_cluster.yml +4 -4
  30. data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/monit-mongrel.conf +2 -2
  31. data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +2 -2
  32. data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +1 -1
  33. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +17 -1
  34. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +1 -1
  35. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  36. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +14 -36
  37. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +1 -1
  38. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +8 -0
  39. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +7 -7
  40. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +6 -6
  41. data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/crontab +0 -0
  42. data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/monit-nginx.conf +0 -1
  43. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  44. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +43 -62
  45. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  46. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  47. data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +3 -26
  48. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +13 -40
  49. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -0
  50. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  51. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  52. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
  53. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +9 -11
  54. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +1 -1
  55. data/lib/rubber/cloud/aws.rb +30 -0
  56. data/lib/rubber/instance.rb +53 -2
  57. data/lib/rubber/recipes/rubber.rb +7 -6
  58. data/lib/rubber/recipes/rubber/deploy.rb +22 -1
  59. data/lib/rubber/recipes/rubber/instances.rb +74 -24
  60. data/lib/rubber/recipes/rubber/load_balancers.rb +27 -0
  61. data/lib/rubber/recipes/rubber/security_groups.rb +5 -7
  62. data/lib/rubber/recipes/rubber/setup.rb +50 -14
  63. data/lib/rubber/recipes/rubber/static_ips.rb +7 -7
  64. data/lib/rubber/recipes/rubber/utils.rb +6 -7
  65. data/lib/rubber/recipes/rubber/volumes.rb +8 -8
  66. data/lib/rubber/util.rb +4 -0
  67. data/test/instance_test.rb +55 -0
  68. metadata +32 -18
  69. data/generators/vulcanize/templates/apache/config/rubber/role/web/vhost.conf +0 -27
  70. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf +0 -44
  71. data/generators/vulcanize/templates/passenger/config/rubber/role/web/passenger.conf +0 -8
  72. 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]
@@ -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 %>
@@ -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]
@@ -2,7 +2,9 @@ description: A fairly complete and scalable mysql deployment setup
2
2
  dependent_templates:
3
3
  - base
4
4
  - mysql
5
+ - haproxy
5
6
  - apache
6
7
  - passenger
8
+ - monit
7
9
  - munin
8
- - memcached
10
+ - memcached
@@ -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="#{env.cruise_dir}"
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="#{env.cruise_dir}"
33
- export CRUISE_DATA_ROOT="#{env.cruise_data_dir}"
34
- export CRUISE_PROJECT_ROOT="#{env.cruise_project_dir}"
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 #{env.cruise_dir}
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 "#{env.cruise_repository}" ]]; then
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: #{env.cruise_repository}"
48
- ./cruise add #{env.app_name} #{env.cruise_repository}
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
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  cruise_host = rubber_instances.for_role('cruise').first
3
- @path = "/etc/nginx/rubber/cruise.conf"
3
+ @path = "/etc/nginx/rubber/tools/cruise.conf"
4
4
  %>
5
5
 
6
6
  <% if cruise_host %>
@@ -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
@@ -1,5 +1,5 @@
1
1
  <%
2
- @path = "/etc/nginx/rubber/haproxy.conf"
2
+ @path = "/etc/nginx/rubber/tools/haproxy.conf"
3
3
  %>
4
4
 
5
5
  <% rubber_instances.for_role('haproxy').each do |ic| %>
@@ -1,10 +1,5 @@
1
1
 
2
- # Uses from appserver (mongrel) rubber config
3
- # appserver_base_port: 8000
4
- # appserver_count: 8
5
-
6
2
  haproxy_monitor_port: 60001
7
- haproxy_listen_port: 9000
8
3
  haproxy_admin_port: 9100
9
4
 
10
5
  roles:
@@ -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 => :app do
10
+ task :custom_install, :roles => :mongrel do
11
11
  # Setup system to restart mongrel_cluster on reboot
12
- rubber.sudo_script 'install_app', <<-ENDSCRIPT
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 = rubber_cfg.environment.bind().appserver_count
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 => :app do
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 => :app do
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 => :app do
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 => :app do
57
+ task :start, :roles => :mongrel do
58
58
  mongrel_start
59
59
  end
60
60
 
@@ -2,11 +2,11 @@
2
2
  @path = "#{RUBBER_ROOT}/config/mongrel_cluster.yml"
3
3
  %>
4
4
  ---
5
- user: rails
6
- group: rails
5
+ user: <%= rubber_env.app_user %>
6
+ group: <%= rubber_env.app_user %>
7
7
  cwd: <%= RUBBER_ROOT %>
8
- port: "<%= rubber_env.appserver_base_port %>"
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.appserver_count %>
12
+ servers: <%= rubber_env.mongrel_count %>
@@ -2,9 +2,9 @@
2
2
  @path = '/etc/monit/monit.d/monit-mongrel.conf'
3
3
  %>
4
4
 
5
- <% (0..(rubber_env.appserver_count.to_i - 1)).each do |i| %>
5
+ <% (0..(rubber_env.mongrel_count.to_i - 1)).each do |i| %>
6
6
 
7
- <% PORT = rubber_env.appserver_base_port + i %>
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
- appserver_base_port: 8000
4
- appserver_count: "#{RUBBER_ENV == 'production' ? 8 : 2}"
3
+ mongrel_base_port: 7000
4
+ mongrel_count: "#{RUBBER_ENV == 'production' ? 8 : 2}"
5
5
 
6
6
  roles:
7
7
  app:
@@ -1,5 +1,5 @@
1
1
  <%
2
- @path = "/etc/nginx/rubber/monit.conf"
2
+ @path = "/etc/nginx/rubber/tools/monit.conf"
3
3
  %>
4
4
 
5
5
  <% rubber_instances.each do |ic| %>
@@ -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"
@@ -1,5 +1,5 @@
1
1
  <%
2
- @path = "/etc/nginx/rubber/munin.conf"
2
+ @path = "/etc/nginx/rubber/tools/munin.conf"
3
3
  %>
4
4
 
5
5
  location /munin
@@ -1,6 +1,6 @@
1
1
  # Uses admin_email from base
2
2
 
3
- packages: [munin-node]
3
+ packages: [munin-node, munin-plugins-extra]
4
4
 
5
5
  roles:
6
6
  web_tools:
@@ -5,35 +5,17 @@ namespace :rubber do
5
5
 
6
6
  rubber.allow_optional_tasks(self)
7
7
 
8
- after "rubber:create", "rubber:mysql:set_db_role"
9
-
10
- # Capistrano needs db:primary role for migrate to work
11
- task :set_db_role do
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
- logger.info "Cannot have a mysql slave and master on the same instance, removing slave role"
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 = rubber_cfg.instance.for_role("mysql_master") & rubber_cfg.instance.filtered
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 = rubber_cfg.instance.for_role("mysql_slave") & rubber_cfg.instance.filtered
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 = rubber_cfg.instance.for_role("mysql_master").first
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 = rubber_cfg.instance.for_role("mysql_slave")
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
- after "rubber:install_packages", "rubber:mysql:custom_install"
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 :custom_install, :roles => [:mysql_master, :mysql_slave] do
124
+ task :custom_install_munin, :roles => [:mysql_master, :mysql_slave] do
143
125
  rubber.run_script 'install_munin_mysql', <<-ENDSCRIPT
144
- if [ ! -f /etc/munin/plugins/mysql_ ]; then
145
- wget -q -O /etc/munin/plugins/mysql_ http://github.com/kjellm/munin-mysql/raw/master/mysql_
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