Empact-deprec 1.99.21

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 (148) hide show
  1. data/CHANGELOG +170 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +136 -0
  5. data/THANKS +5 -0
  6. data/bin/depify +133 -0
  7. data/docs/ANNOUNCE.deprec2 +47 -0
  8. data/docs/README.install +88 -0
  9. data/docs/README.nagios +28 -0
  10. data/docs/README.rails +20 -0
  11. data/docs/README.svn +31 -0
  12. data/docs/ROADMAP.txt +74 -0
  13. data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
  14. data/docs/deprec-1.x/notes.txt +12 -0
  15. data/docs/deprec_banner.gif +0 -0
  16. data/lib/deprec.rb +8 -0
  17. data/lib/deprec/capistrano_extensions.rb +378 -0
  18. data/lib/deprec/recipes.rb +40 -0
  19. data/lib/deprec/recipes/aoe.rb +117 -0
  20. data/lib/deprec/recipes/apache.rb +179 -0
  21. data/lib/deprec/recipes/ar_sendmail.rb +65 -0
  22. data/lib/deprec/recipes/canonical.rb +57 -0
  23. data/lib/deprec/recipes/deprec.rb +155 -0
  24. data/lib/deprec/recipes/deprecated.rb +71 -0
  25. data/lib/deprec/recipes/example.rb +115 -0
  26. data/lib/deprec/recipes/git.rb +168 -0
  27. data/lib/deprec/recipes/gitosis.rb +47 -0
  28. data/lib/deprec/recipes/god.rb +107 -0
  29. data/lib/deprec/recipes/heartbeat.rb +138 -0
  30. data/lib/deprec/recipes/iptables.rb +53 -0
  31. data/lib/deprec/recipes/logrotate.rb +51 -0
  32. data/lib/deprec/recipes/lvm.rb +20 -0
  33. data/lib/deprec/recipes/memcached.rb +102 -0
  34. data/lib/deprec/recipes/mongrel.rb +209 -0
  35. data/lib/deprec/recipes/monit.rb +130 -0
  36. data/lib/deprec/recipes/mysql.rb +115 -0
  37. data/lib/deprec/recipes/nagios.rb +302 -0
  38. data/lib/deprec/recipes/network.rb +84 -0
  39. data/lib/deprec/recipes/nginx.rb +154 -0
  40. data/lib/deprec/recipes/ntp.rb +96 -0
  41. data/lib/deprec/recipes/php.rb +99 -0
  42. data/lib/deprec/recipes/postfix.rb +105 -0
  43. data/lib/deprec/recipes/rails.rb +302 -0
  44. data/lib/deprec/recipes/ruby.rb +66 -0
  45. data/lib/deprec/recipes/sphinx.rb +83 -0
  46. data/lib/deprec/recipes/ssh.rb +93 -0
  47. data/lib/deprec/recipes/svn.rb +169 -0
  48. data/lib/deprec/recipes/swiftiply.rb +108 -0
  49. data/lib/deprec/recipes/thin.rb +201 -0
  50. data/lib/deprec/recipes/trac.rb +277 -0
  51. data/lib/deprec/recipes/ubuntu.rb +20 -0
  52. data/lib/deprec/recipes/users.rb +90 -0
  53. data/lib/deprec/recipes/utils.rb +39 -0
  54. data/lib/deprec/recipes/xen.rb +259 -0
  55. data/lib/deprec/templates/aoe/aoe-init +55 -0
  56. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  57. data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
  58. data/lib/deprec/templates/apache/httpd.conf +465 -0
  59. data/lib/deprec/templates/apache/index.html.erb +37 -0
  60. data/lib/deprec/templates/apache/master.css +72 -0
  61. data/lib/deprec/templates/ar_sendmail/logrotate.conf.erb +9 -0
  62. data/lib/deprec/templates/ar_sendmail/monit.conf.erb +5 -0
  63. data/lib/deprec/templates/coraid/aoe-init +55 -0
  64. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  65. data/lib/deprec/templates/god/god-init-script +71 -0
  66. data/lib/deprec/templates/god/god-notifications +0 -0
  67. data/lib/deprec/templates/god/god_mongrel.erb +81 -0
  68. data/lib/deprec/templates/god/god_mysql.erb +50 -0
  69. data/lib/deprec/templates/god/god_nginx.erb +61 -0
  70. data/lib/deprec/templates/god/god_thin.erb +80 -0
  71. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  72. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  73. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  74. data/lib/deprec/templates/iptables/iptables.up.erb +41 -0
  75. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  76. data/lib/deprec/templates/memcached/memcached-init-script +65 -0
  77. data/lib/deprec/templates/memcached/memcached.conf.erb +46 -0
  78. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  79. data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
  80. data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
  81. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  82. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  83. data/lib/deprec/templates/monit/monit-init-script +104 -0
  84. data/lib/deprec/templates/monit/monitrc.erb +227 -0
  85. data/lib/deprec/templates/monit/nothing +0 -0
  86. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  87. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  88. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  89. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  90. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  91. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  92. data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
  93. data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
  94. data/lib/deprec/templates/nagios/contacts.cfg.erb +75 -0
  95. data/lib/deprec/templates/nagios/hosts.cfg.erb +70 -0
  96. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  97. data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
  98. data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
  99. data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
  100. data/lib/deprec/templates/nagios/nrpe.cfg.erb +208 -0
  101. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  102. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  103. data/lib/deprec/templates/nagios/services.cfg.erb +7 -0
  104. data/lib/deprec/templates/nagios/templates.cfg.erb +190 -0
  105. data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
  106. data/lib/deprec/templates/network/hostname.erb +1 -0
  107. data/lib/deprec/templates/network/hosts.erb +2 -0
  108. data/lib/deprec/templates/network/interfaces.erb +18 -0
  109. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  110. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  111. data/lib/deprec/templates/nginx/nginx-init-script +62 -0
  112. data/lib/deprec/templates/nginx/nginx.conf.erb +53 -0
  113. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  114. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  115. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +45 -0
  116. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  117. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  118. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  119. data/lib/deprec/templates/postfix/main.cf.erb +41 -0
  120. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  121. data/lib/deprec/templates/rails/database.yml.erb +6 -0
  122. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  123. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  124. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  125. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  126. data/lib/deprec/templates/swiftiply/swiftiply-init-script +61 -0
  127. data/lib/deprec/templates/swiftiply/swiftiply.yml.erb +11 -0
  128. data/lib/deprec/templates/thin/thin-init-script +51 -0
  129. data/lib/deprec/templates/thin/thin.yml.erb +11 -0
  130. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  131. data/lib/deprec/templates/trac/nginx_vhost.conf.erb +26 -0
  132. data/lib/deprec/templates/trac/trac.ini.erb +169 -0
  133. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  134. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  135. data/lib/deprec/templates/trac/users.htdigest.erb +0 -0
  136. data/lib/deprec/templates/xen/15-disable-hwclock +40 -0
  137. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  138. data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
  139. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  140. data/lib/deprec/templates/xen/xend-init.erb +69 -0
  141. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  142. data/lib/deprec/templates/xen/xm.tmpl.erb +85 -0
  143. data/lib/vmbuilder_plugins/all.rb +20 -0
  144. data/lib/vmbuilder_plugins/apt.rb +93 -0
  145. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  146. data/lib/vmbuilder_plugins/gem.rb +90 -0
  147. data/lib/vmbuilder_plugins/std.rb +203 -0
  148. metadata +207 -0
@@ -0,0 +1,209 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+
4
+ namespace :deprec do
5
+ namespace :mongrel do
6
+
7
+ set :mongrel_servers, 2
8
+ set :mongrel_port, 8000
9
+ set :mongrel_address, "127.0.0.1"
10
+ set(:mongrel_environment) { rails_env }
11
+ set(:mongrel_log_dir) { "#{deploy_to}/shared/log" }
12
+ set(:mongrel_pid_dir) { "#{deploy_to}/shared/pids" }
13
+ set :mongrel_conf_dir, '/etc/mongrel_cluster'
14
+ set(:mongrel_conf) { "/etc/mongrel_cluster/#{application}.yml" }
15
+ set :mongrel_user_prefix, 'mongrel_'
16
+ set(:mongrel_user) { mongrel_user_prefix + application }
17
+ set :mongrel_group_prefix, 'app_'
18
+ set(:mongrel_group) { mongrel_group_prefix + application }
19
+
20
+
21
+ # Install
22
+
23
+ desc "Install mongrel"
24
+ task :install, :roles => :app do
25
+ gem2.select 'mongrel' # mongrel requires we select a version
26
+ gem2.install 'mongrel_cluster'
27
+ end
28
+
29
+ task :symlink_logrotate_config, :roles => :web do
30
+ sudo "ln -sf #{deploy_to}/mongrel/logrotate.conf /etc/logrotate.d/mongrel-#{application}"
31
+ end
32
+
33
+ # Configure
34
+
35
+ SYSTEM_CONFIG_FILES[:mongrel] = [
36
+
37
+ {:template => 'mongrel_cluster-init-script',
38
+ :path => '/etc/init.d/mongrel_cluster',
39
+ :mode => 0755,
40
+ :owner => 'root:root'}
41
+
42
+ ]
43
+
44
+ PROJECT_CONFIG_FILES[:mongrel] = [
45
+
46
+ {:template => 'mongrel_cluster.yml.erb',
47
+ :path => 'cluster.yml',
48
+ :mode => 0644,
49
+ :owner => 'root:root'},
50
+
51
+ {:template => 'monit.conf.erb',
52
+ :path => "monit.conf",
53
+ :mode => 0600,
54
+ :owner => 'root:root'},
55
+
56
+ {:template => 'logrotate.conf.erb',
57
+ :path => "logrotate.conf",
58
+ :mode => 0644,
59
+ :owner => 'root:root'}
60
+
61
+ ]
62
+
63
+ desc "Generate configuration file(s) for mongrel from template(s)"
64
+ task :config_gen do
65
+ config_gen_system
66
+ config_gen_project
67
+ end
68
+
69
+ task :config_gen_system do
70
+ SYSTEM_CONFIG_FILES[:mongrel].each do |file|
71
+ deprec2.render_template(:mongrel, file)
72
+ end
73
+ end
74
+
75
+ task :config_gen_project do
76
+ PROJECT_CONFIG_FILES[:mongrel].each do |file|
77
+ deprec2.render_template(:mongrel, file)
78
+ end
79
+ end
80
+
81
+ desc 'Deploy configuration files(s) for mongrel'
82
+ task :config, :roles => :app do
83
+ config_system
84
+ config_project
85
+ end
86
+
87
+ task :config_system, :roles => :app do
88
+ deprec2.push_configs(:mongrel, SYSTEM_CONFIG_FILES[:mongrel])
89
+ end
90
+
91
+ task :config_project, :roles => :app do
92
+ create_mongrel_user_and_group
93
+ deprec2.push_configs(:mongrel, PROJECT_CONFIG_FILES[:mongrel])
94
+ symlink_mongrel_cluster
95
+ symlink_monit_config
96
+ symlink_logrotate_config
97
+ end
98
+
99
+ task :symlink_monit_config, :roles => :app do
100
+ deprec2.mkdir(monit_confd_dir, :via => :sudo)
101
+ sudo "ln -sf #{deploy_to}/mongrel/monit.conf #{monit_confd_dir}/mongrel_#{application}.conf"
102
+ end
103
+
104
+ task :unlink_monit_config, :roles => :app do
105
+ sudo "test -L #{monit_confd_dir}/mongrel_#{application}.conf && unlink #{monit_confd_dir}/mongrel_#{application}.conf"
106
+ end
107
+
108
+ task :symlink_mongrel_cluster, :roles => :app do
109
+ deprec2.mkdir(mongrel_conf_dir, :via => :sudo)
110
+ sudo "ln -sf #{deploy_to}/mongrel/cluster.yml #{mongrel_conf}"
111
+ end
112
+
113
+ task :unlink_mongrel_cluster, :roles => :app do
114
+ sudo "test -L #{mongrel_conf} && unlink #{mongrel_conf}"
115
+ end
116
+
117
+
118
+ # Control
119
+
120
+ desc "Start application server."
121
+ task :start, :roles => :app do
122
+ send(run_method, "mongrel_rails cluster::start --clean -C #{mongrel_conf}")
123
+ end
124
+
125
+ desc "Stop application server."
126
+ task :stop, :roles => :app do
127
+ send(run_method, "mongrel_rails cluster::stop -C #{mongrel_conf}")
128
+ end
129
+
130
+ desc "Restart application server."
131
+ task :restart, :roles => :app do
132
+ send(run_method, "mongrel_rails cluster::restart --clean -C #{mongrel_conf}")
133
+ end
134
+
135
+ task :activate, :roles => :app do
136
+ activate_system
137
+ activate_project
138
+ end
139
+
140
+ task :activate_system, :roles => :app do
141
+ send(run_method, "update-rc.d mongrel_cluster defaults")
142
+ end
143
+
144
+ task :activate_project, :roles => :app do
145
+ symlink_mongrel_cluster
146
+ symlink_monit_config
147
+ end
148
+
149
+ task :deactivate, :roles => :app do
150
+ puts
151
+ puts "******************************************************************"
152
+ puts
153
+ puts "Danger!"
154
+ puts
155
+ puts "Do you want to deactivate just this project or all mongrel"
156
+ puts "clusters on this server? Try a more granular command:"
157
+ puts
158
+ puts "cap deprec:mongrel:deactivate_system # disable all clusters"
159
+ puts "cap deprec:mongrel:deactivate_project # disable only this project"
160
+ puts
161
+ puts "******************************************************************"
162
+ puts
163
+ end
164
+
165
+ task :deactivate_system, :roles => :app do
166
+ send(run_method, "update-rc.d -f mongrel_cluster remove")
167
+ end
168
+
169
+ task :deactivate_project, :roles => :app do
170
+ unlink_mongrel_cluster
171
+ unlink_monit_config
172
+ restart
173
+ end
174
+
175
+ task :backup, :roles => :app do
176
+ end
177
+
178
+ task :restore, :roles => :app do
179
+ end
180
+
181
+ desc "create user and group for mongel to run as"
182
+ task :create_mongrel_user_and_group, :roles => :app do
183
+ deprec2.groupadd(mongrel_group)
184
+ deprec2.useradd(mongrel_user, :group => mongrel_group, :homedir => false)
185
+ # Set the primary group for the mongrel user (in case user already existed
186
+ # when previous command was run)
187
+ sudo "usermod --gid #{mongrel_group} #{mongrel_user}"
188
+ end
189
+
190
+ desc "set group ownership and permissions on dirs mongrel needs to write to"
191
+ task :set_perms_for_mongrel_dirs, :roles => :app do
192
+ tmp_dir = "#{deploy_to}/current/tmp"
193
+ shared_dir = "#{deploy_to}/shared"
194
+ files = ["#{mongrel_log_dir}/mongrel.log", "#{mongrel_log_dir}/#{rails_env}.log"]
195
+
196
+ sudo "chgrp -R #{mongrel_group} #{tmp_dir} #{shared_dir}"
197
+ sudo "chmod -R g+w #{tmp_dir} #{shared_dir}"
198
+ # set owner and group of log files
199
+ files.each { |file|
200
+ sudo "touch #{file}"
201
+ sudo "chown #{mongrel_user} #{file}"
202
+ sudo "chgrp #{mongrel_group} #{file}"
203
+ sudo "chmod g+w #{file}"
204
+ }
205
+ end
206
+
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,130 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do namespace :monit do
4
+
5
+ set :monit_user, 'monit'
6
+ set :monit_group, 'monit'
7
+ set :monit_confd_dir, '/etc/monit.d'
8
+
9
+ set :monit_check_interval, 60
10
+ set :monit_log, 'syslog facility log_daemon'
11
+ set :monit_mailserver, nil
12
+ set :monit_mail_from, 'monit@deprec.enabled.slice'
13
+ set :monit_alert_recipients, %w(root@localhost)
14
+ set :monit_timeout_recipients, %w(root@localhost)
15
+ set :monit_webserver_enabled, true
16
+ set :monit_webserver_port, 2812
17
+ set :monit_webserver_address, 'localhost'
18
+ set :monit_webserver_allowed_hosts_and_networks, %w(localhost)
19
+ set :monit_webserver_auth_user, 'admin'
20
+ set :monit_webserver_auth_pass, 'monit'
21
+
22
+ # Upstream changes: http://www.tildeslash.com/monit/dist/CHANGES.txt
23
+ # Ubuntu package version = monit-4.8.1
24
+ SRC_PACKAGES[:monit] = {
25
+ :filename => 'monit-4.10.1.tar.gz',
26
+ :md5sum => "d3143b0bbd79b53f1b019d2fc1dae656 monit-4.10.1.tar.gz",
27
+ :dir => 'monit-4.10.1',
28
+ :url => "http://www.tildeslash.com/monit/dist/monit-4.10.1.tar.gz",
29
+ :unpack => "tar zxf monit-4.10.1.tar.gz;",
30
+ :configure => %w(
31
+ ./configure
32
+ ;
33
+ ).reject{|arg| arg.match '#'}.join(' '),
34
+ :make => 'make;',
35
+ :install => 'make install;'
36
+ }
37
+
38
+ desc "Install monit"
39
+ task :install do
40
+ install_deps
41
+ deprec2.download_src(SRC_PACKAGES[:monit], src_dir)
42
+ deprec2.install_from_src(SRC_PACKAGES[:monit], src_dir)
43
+ end
44
+
45
+ # install dependencies for monit
46
+ task :install_deps do
47
+ apt.install( {:base => %w(flex bison libssl-dev)}, :stable )
48
+ end
49
+
50
+ SYSTEM_CONFIG_FILES[:monit] = [
51
+
52
+ {:template => 'monit-init-script',
53
+ :path => '/etc/init.d/monit',
54
+ :mode => 0755,
55
+ :owner => 'root:root'},
56
+
57
+ {:template => 'monitrc.erb',
58
+ :path => "/etc/monitrc",
59
+ :mode => 0700,
60
+ :owner => 'root:root'},
61
+
62
+ {:template => 'nothing',
63
+ :path => "/etc/monit.d/nothing",
64
+ :mode => 0700,
65
+ :owner => 'root:root'}
66
+ ]
67
+
68
+ desc <<-DESC
69
+ Generate nginx config from template. Note that this does not
70
+ push the config to the server, it merely generates required
71
+ configuration files. These should be kept under source control.
72
+ The can be pushed to the server with the :config task.
73
+ DESC
74
+ task :config_gen do
75
+ SYSTEM_CONFIG_FILES[:monit].each do |file|
76
+ deprec2.render_template(:monit, file)
77
+ end
78
+ end
79
+
80
+ desc "Push monit config files to server"
81
+ task :config do
82
+ deprec2.push_configs(:monit, SYSTEM_CONFIG_FILES[:monit])
83
+ end
84
+
85
+ desc "Start Monit"
86
+ task :start, :roles => :app do
87
+ send(run_method, "/etc/init.d/monit start")
88
+ end
89
+
90
+ desc "Stop Monit"
91
+ task :stop, :roles => :app do
92
+ send(run_method, "/etc/init.d/monit stop")
93
+ end
94
+
95
+ desc "Restart Monit"
96
+ task :restart, :roles => :app do
97
+ send(run_method, "/etc/init.d/monit restart")
98
+ end
99
+
100
+ desc "Reload Monit"
101
+ task :reload, :roles => :app do
102
+ send(run_method, "/etc/init.d/monit reload")
103
+ end
104
+
105
+ desc <<-DESC
106
+ Activate monit start scripts on server.
107
+ Setup server to start monit on boot.
108
+ DESC
109
+ task :activate do
110
+ send(run_method, "update-rc.d monit defaults")
111
+ end
112
+
113
+ desc <<-DESC
114
+ Dectivate monit start scripts on server.
115
+ Setup server to start monit on boot.
116
+ DESC
117
+ task :deactivate do
118
+ send(run_method, "update-rc.d -f monit remove")
119
+ end
120
+
121
+ task :backup do
122
+ # there's nothing to backup for monit
123
+ end
124
+
125
+ task :restore do
126
+ # there's nothing to restore for monit
127
+ end
128
+
129
+ end end
130
+ end
@@ -0,0 +1,115 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do
4
+ namespace :mysql do
5
+
6
+ # Installation
7
+
8
+ desc "Install mysql"
9
+ task :install, :roles => :db do
10
+ install_deps
11
+ symlink_mysql_sockfile # XXX still needed?
12
+ end
13
+
14
+ # Install dependencies for Mysql
15
+ task :install_deps, :roles => :db do
16
+ apt.install( {:base => %w(mysql-server mysql-client)}, :stable )
17
+ end
18
+
19
+ task :symlink_mysql_sockfile, :roles => :db do
20
+ # rails puts "socket: /tmp/mysql.sock" into config/database.yml
21
+ # this is not the location for our ubuntu's mysql socket file
22
+ # so we create this link to make deployment using rails defaults simpler
23
+ sudo "ln -sf /var/run/mysqld/mysqld.sock /tmp/mysql.sock"
24
+ end
25
+
26
+ # Configuration
27
+
28
+ SYSTEM_CONFIG_FILES[:mysql] = [
29
+
30
+ {:template => "my.cnf.erb",
31
+ :path => '/etc/mysql/my.cnf',
32
+ :mode => 0644,
33
+ :owner => 'root:root'}
34
+ ]
35
+
36
+ desc "Generate configuration file(s) for mysql from template(s)"
37
+ task :config_gen do
38
+ SYSTEM_CONFIG_FILES[:mysql].each do |file|
39
+ deprec2.render_template(:mysql, file)
40
+ end
41
+ end
42
+
43
+ desc "Push trac config files to server"
44
+ task :config, :roles => :db do
45
+ deprec2.push_configs(:mysql, SYSTEM_CONFIG_FILES[:mysql])
46
+ end
47
+
48
+ task :activate, :roles => :db do
49
+ send(run_method, "update-rc.d mysql defaults")
50
+ end
51
+
52
+ task :deactivate, :roles => :db do
53
+ send(run_method, "update-rc.d -f mysql remove")
54
+ end
55
+
56
+ # Control
57
+
58
+ desc "Start Mysql"
59
+ task :start, :roles => :db do
60
+ send(run_method, "/etc/init.d/mysql start")
61
+ end
62
+
63
+ desc "Stop Mysql"
64
+ task :stop, :roles => :db do
65
+ send(run_method, "/etc/init.d/mysql stop")
66
+ end
67
+
68
+ desc "Restart Mysql"
69
+ task :restart, :roles => :db do
70
+ send(run_method, "/etc/init.d/mysql restart")
71
+ end
72
+
73
+ desc "Reload Mysql"
74
+ task :reload, :roles => :db do
75
+ send(run_method, "/etc/init.d/mysql reload")
76
+ end
77
+
78
+
79
+ task :backup, :roles => :db do
80
+ end
81
+
82
+ task :restore, :roles => :db do
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+
89
+ #
90
+ # Setup replication
91
+ #
92
+
93
+ # setup user for repl
94
+ # GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';
95
+
96
+ # get current position of binlog
97
+ # mysql> FLUSH TABLES WITH READ LOCK;
98
+ # Query OK, 0 rows affected (0.00 sec)
99
+ #
100
+ # mysql> SHOW MASTER STATUS;
101
+ # +------------------+----------+--------------+------------------+
102
+ # | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
103
+ # +------------------+----------+--------------+------------------+
104
+ # | mysql-bin.000012 | 296 | | |
105
+ # +------------------+----------+--------------+------------------+
106
+ # 1 row in set (0.00 sec)
107
+ #
108
+ # # get current data
109
+ # mysqldump --all-databases --master-data >dbdump.db
110
+ #
111
+ # UNLOCK TABLES;
112
+
113
+
114
+ # Replication Features and Issues
115
+ # http://dev.mysql.com/doc/refman/5.0/en/replication-features.html