deprec 1.9.3 → 2.0.0

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 (188) hide show
  1. data/CHANGELOG +280 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +152 -0
  5. data/THANKS +17 -0
  6. data/bin/depify +128 -0
  7. data/docs/EXAMPLE-installing_tracks.txt +41 -0
  8. data/docs/README.nagios +22 -0
  9. data/docs/README.rails +17 -0
  10. data/docs/config_gen_explained.txt +39 -0
  11. data/docs/{README.quickstart → deprec-1.x/deprec-1.x.quickstart} +4 -1
  12. data/docs/{building_edge_capistrano.txt → deprec-1.x/notes.txt} +6 -3
  13. data/docs/old/deprec_banner.gif +0 -0
  14. data/docs/windows_linux.txt +350 -0
  15. data/docs/xen/traffic_monitoring_with_vnstat.txt +95 -0
  16. data/docs/xen/xen-tools-notes.txt +31 -0
  17. data/docs/xen/xen_on_hardy.txt +39 -0
  18. data/lib/deprec.rb +8 -1
  19. data/lib/deprec/capistrano_extensions.rb +442 -0
  20. data/lib/deprec/recipes.rb +50 -233
  21. data/lib/deprec/recipes/aoe.rb +79 -0
  22. data/lib/deprec/recipes/app/mongrel.rb +213 -0
  23. data/lib/deprec/recipes/app/passenger.rb +197 -0
  24. data/lib/deprec/recipes/apt_mirror.rb +99 -0
  25. data/lib/deprec/recipes/ar_sendmail.rb +67 -0
  26. data/lib/deprec/recipes/canonical.rb +68 -0
  27. data/lib/deprec/recipes/db/mysql.rb +144 -0
  28. data/lib/deprec/recipes/db/postgresql.rb +104 -0
  29. data/lib/deprec/recipes/db/sqlite.rb +37 -0
  30. data/lib/deprec/recipes/ddclient.rb +51 -0
  31. data/lib/deprec/recipes/deprec.rb +199 -0
  32. data/lib/deprec/recipes/deprecated.rb +71 -0
  33. data/lib/deprec/recipes/example.rb +115 -0
  34. data/lib/deprec/recipes/git.rb +97 -0
  35. data/lib/deprec/recipes/gitosis.rb +48 -0
  36. data/lib/deprec/recipes/heartbeat.rb +138 -0
  37. data/lib/deprec/recipes/logrotate.rb +54 -0
  38. data/lib/deprec/recipes/lvm.rb +20 -0
  39. data/lib/deprec/recipes/memcache.rb +6 -2
  40. data/lib/deprec/recipes/monit.rb +143 -0
  41. data/lib/deprec/recipes/nagios.rb +305 -0
  42. data/lib/deprec/recipes/network.rb +93 -0
  43. data/lib/deprec/recipes/ntp.rb +103 -0
  44. data/lib/deprec/recipes/php.rb +58 -0
  45. data/lib/deprec/recipes/postfix.rb +115 -0
  46. data/lib/deprec/recipes/rails.rb +300 -55
  47. data/lib/deprec/recipes/ruby/mri.rb +55 -0
  48. data/lib/deprec/recipes/ruby/ree.rb +41 -0
  49. data/lib/deprec/recipes/sphinx.rb +86 -0
  50. data/lib/deprec/recipes/ssh.rb +85 -18
  51. data/lib/deprec/recipes/ssl.rb +55 -0
  52. data/lib/deprec/recipes/starling.rb +119 -0
  53. data/lib/deprec/recipes/svn.rb +163 -183
  54. data/lib/deprec/recipes/trac.rb +239 -62
  55. data/lib/deprec/recipes/ubuntu.rb +18 -100
  56. data/lib/deprec/recipes/users.rb +90 -0
  57. data/lib/deprec/recipes/utils.rb +58 -0
  58. data/lib/deprec/recipes/vnstat.rb +85 -0
  59. data/lib/deprec/recipes/web/apache.rb +119 -0
  60. data/lib/deprec/recipes/web/nginx.rb +172 -0
  61. data/lib/deprec/recipes/wordpress.rb +96 -0
  62. data/lib/deprec/recipes/wpmu.rb +103 -0
  63. data/lib/deprec/recipes/xen.rb +267 -0
  64. data/lib/deprec/recipes/xentools.rb +75 -0
  65. data/lib/deprec/templates/aoe/aoe-init +55 -0
  66. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  67. data/lib/deprec/templates/apache/namevirtualhosts.conf +5 -0
  68. data/lib/deprec/templates/apt/sources.list +18 -0
  69. data/lib/deprec/templates/apt_mirror/apt-mirror-cron +4 -0
  70. data/lib/deprec/templates/apt_mirror/mirror.list +33 -0
  71. data/lib/deprec/templates/ar_sendmail/logrotate.conf.erb +9 -0
  72. data/lib/deprec/templates/ar_sendmail/monit.conf.erb +5 -0
  73. data/lib/deprec/templates/ddclient/ddclient.conf.erb +11 -0
  74. data/lib/deprec/templates/ddclient/ddclient.erb +15 -0
  75. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  76. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  77. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  78. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  79. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  80. data/lib/deprec/templates/mongrel/apache_vhost.erb +148 -0
  81. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  82. data/lib/deprec/{third_party/mongrel_cluster/resources/mongrel_cluster → templates/mongrel/mongrel_cluster-init-script} +19 -6
  83. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  84. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  85. data/lib/deprec/templates/mongrel/nginx_vhost.erb +41 -0
  86. data/lib/deprec/templates/monit/monit-init-script +104 -0
  87. data/lib/deprec/templates/monit/monitrc.erb +227 -0
  88. data/lib/deprec/templates/monit/nothing +0 -0
  89. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  90. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  91. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  92. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  93. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  94. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  95. data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
  96. data/lib/deprec/templates/nagios/check_linux_free_memory.pl +118 -0
  97. data/lib/deprec/templates/nagios/check_mongrel_cluster.rb +82 -0
  98. data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
  99. data/lib/deprec/templates/nagios/contacts.cfg.erb +57 -0
  100. data/lib/deprec/templates/nagios/hosts.cfg.erb +143 -0
  101. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  102. data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
  103. data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
  104. data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
  105. data/lib/deprec/templates/nagios/nrpe.cfg.erb +210 -0
  106. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  107. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  108. data/lib/deprec/templates/nagios/services.cfg.erb +79 -0
  109. data/lib/deprec/templates/nagios/templates.cfg.erb +9 -0
  110. data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
  111. data/lib/deprec/templates/network/hostname.erb +1 -0
  112. data/lib/deprec/templates/network/hosts.erb +2 -0
  113. data/lib/deprec/templates/network/interfaces.erb +18 -0
  114. data/lib/deprec/templates/network/resolv.conf.erb +6 -0
  115. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  116. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  117. data/lib/deprec/templates/nginx/nginx-init-script +62 -0
  118. data/lib/deprec/templates/nginx/nginx.conf.erb +125 -0
  119. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  120. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  121. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
  122. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  123. data/lib/deprec/templates/passenger/apache_vhost.erb +21 -0
  124. data/lib/deprec/templates/passenger/passenger.conf.erb +21 -0
  125. data/lib/deprec/templates/passenger/passenger.load.erb +3 -0
  126. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  127. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  128. data/lib/deprec/templates/{postfix_main.conf → postfix/main.cf.erb} +6 -8
  129. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  130. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  131. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  132. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  133. data/lib/deprec/templates/ssl/make-ssl-cert +138 -0
  134. data/lib/deprec/templates/ssl/ssl-cert-snakeoil.key +15 -0
  135. data/lib/deprec/templates/ssl/ssl-cert-snakeoil.pem +19 -0
  136. data/lib/deprec/templates/starling/monit.conf.erb +14 -0
  137. data/lib/deprec/templates/starling/starling-init-script.erb +71 -0
  138. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  139. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  140. data/lib/deprec/templates/trac/nginx_vhost.conf.erb +26 -0
  141. data/lib/deprec/templates/trac/trac.ini.erb +169 -0
  142. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  143. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  144. data/lib/deprec/templates/trac/users.htdigest.erb +0 -0
  145. data/lib/deprec/templates/vnstat/config.php +57 -0
  146. data/lib/deprec/templates/wordpress/apache2_wordpress_vhost.conf.erb +31 -0
  147. data/lib/deprec/templates/wordpress/wp-config.php.erb +31 -0
  148. data/lib/deprec/templates/wpmu/apache_vhost.conf.erb +13 -0
  149. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  150. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  151. data/lib/deprec/templates/xen/xend-init.erb +57 -0
  152. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  153. data/lib/deprec/templates/xentools/15-disable-hwclock +40 -0
  154. data/lib/deprec/templates/xentools/40-setup-networking +145 -0
  155. data/lib/deprec/templates/xentools/xen-tools.conf.erb +276 -0
  156. data/lib/deprec/templates/xentools/xm.tmpl.erb +138 -0
  157. data/lib/deprec_cmd_completion.sh +26 -0
  158. data/lib/vmbuilder_plugins/all.rb +20 -0
  159. data/lib/vmbuilder_plugins/apt.rb +93 -0
  160. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  161. data/lib/{deprec/third_party/vmbuilder/plugins → vmbuilder_plugins}/gem.rb +10 -17
  162. data/lib/{deprec/third_party/vmbuilder/plugins → vmbuilder_plugins}/std.rb +69 -19
  163. metadata +204 -55
  164. data/bin/deprec +0 -35
  165. data/docs/README.slicehost +0 -14
  166. data/docs/README.svn_trac +0 -19
  167. data/lib/deprec/capistrano_extensions/actor_extensions.rb +0 -89
  168. data/lib/deprec/capistrano_extensions/cli_extensions.rb +0 -38
  169. data/lib/deprec/capistrano_extensions/deprec_extensions.rb +0 -137
  170. data/lib/deprec/generators/deprec/USAGE +0 -11
  171. data/lib/deprec/generators/deprec/deprec_generator.rb +0 -24
  172. data/lib/deprec/generators/deprec/templates/deploy.rb +0 -90
  173. data/lib/deprec/generators/loader.rb +0 -20
  174. data/lib/deprec/recipes/apache.rb +0 -91
  175. data/lib/deprec/recipes/cache_svn.rb +0 -74
  176. data/lib/deprec/recipes/vmware.rb +0 -114
  177. data/lib/deprec/templates/trac.ini.erb +0 -106
  178. data/lib/deprec/third_party/THIRD_PARTY_README +0 -12
  179. data/lib/deprec/third_party/mongrel_cluster/LICENSE +0 -506
  180. data/lib/deprec/third_party/mongrel_cluster/recipes.rb +0 -96
  181. data/lib/deprec/third_party/railsmachine/LICENSE +0 -506
  182. data/lib/deprec/third_party/railsmachine/recipes/apache.rb +0 -92
  183. data/lib/deprec/third_party/railsmachine/recipes/mysql.rb +0 -73
  184. data/lib/deprec/third_party/railsmachine/recipes/templates/httpd-ssl.conf +0 -80
  185. data/lib/deprec/third_party/railsmachine/recipes/templates/httpd.conf +0 -57
  186. data/lib/deprec/third_party/vmbuilder/plugins.rb +0 -8
  187. data/lib/deprec/third_party/vmbuilder/plugins/apt.rb +0 -144
  188. data/resources/capistrano_include_dotfiles.patch +0 -17
@@ -0,0 +1,197 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do
4
+ namespace :passenger do
5
+
6
+ set(:passenger_install_dir) {
7
+ if ruby_vm_type == :ree
8
+ "#{ree_install_dir}/lib/ruby/gems/1.8/gems/passenger-2.0.6"
9
+ else
10
+ '/opt/passenger'
11
+ end
12
+ }
13
+
14
+ set(:passenger_document_root) { "#{current_path}/public" }
15
+ set :passenger_rails_allow_mod_rewrite, 'off'
16
+ # Default settings for Passenger config files
17
+ set :passenger_log_level, 0
18
+ set :passenger_user_switching, 'on'
19
+ set :passenger_default_user, 'nobody'
20
+ set :passenger_max_pool_size, 6
21
+ set :passenger_max_instances_per_app, 0
22
+ set :passenger_pool_idle_time, 300
23
+ set :passenger_rails_autodetect, 'on'
24
+ set :passenger_rails_spawn_method, 'smart' # smart | conservative
25
+
26
+ SRC_PACKAGES[:passenger] = {
27
+ :url => "git://github.com/FooBarWidget/passenger.git",
28
+ :download_method => :git,
29
+ :version => 'release-2.0.6', # Specify a tagged release to deploy
30
+ :configure => '',
31
+ :make => '',
32
+ :install => './bin/passenger-install-apache2-module'
33
+ }
34
+
35
+ desc "Install passenger"
36
+ task :install, :roles => :app do
37
+ install_deps
38
+ deprec2.download_src(SRC_PACKAGES[:passenger], src_dir)
39
+
40
+ if ruby_vm_type.to_s == 'ree'
41
+ # Install the Passenger that came with Ruby Enterprise Edition
42
+ run "yes | #{sudo} env PATH=#{ree_install_dir}/bin:$PATH #{ree_install_dir}/bin/passenger-install-apache2-module"
43
+ else
44
+ # Non standard - passenger requires input
45
+ package_dir = File.join(src_dir, 'passenger.git')
46
+ dest_dir = passenger_install_dir + '-' + (SRC_PACKAGES[:passenger][:version] || 'trunk')
47
+ run "#{sudo} rsync -avz #{package_dir}/ #{dest_dir}"
48
+ run "cd #{dest_dir} && yes '' | #{sudo} ./bin/passenger-install-apache2-module"
49
+ run "#{sudo} unlink #{passenger_install_dir} 2>/dev/null; #{sudo} ln -sf #{dest_dir} #{passenger_install_dir}"
50
+ end
51
+
52
+ initial_config_push
53
+
54
+ end
55
+
56
+ task :initial_config_push, :roles => :web do
57
+ # XXX Non-standard!
58
+ # We need to push out the .load and .conf files for Passenger
59
+ SYSTEM_CONFIG_FILES[:passenger].each do |file|
60
+ deprec2.render_template(:passenger, file.merge(:remote => true))
61
+ end
62
+ end
63
+
64
+ # Install dependencies for Passenger
65
+ task :install_deps, :roles => :app do
66
+ apt.install( {:base => %w(apache2-mpm-prefork apache2-prefork-dev rsync)}, :stable )
67
+ gem2.install 'fastthread'
68
+ gem2.install 'rack'
69
+ gem2.install 'rake'
70
+ # These are more Rails than Passenger - Mike
71
+ # gem2.install 'rails'
72
+ # gem2.install "mysql -- --with-mysql-config='/usr/bin/mysql_config'"
73
+ # gem2.install 'sqlite3-ruby'
74
+ # gem2.install 'postgres'
75
+ end
76
+
77
+ SYSTEM_CONFIG_FILES[:passenger] = [
78
+
79
+ {:template => 'passenger.load.erb',
80
+ :path => '/etc/apache2/mods-available/passenger.load',
81
+ :mode => 0755,
82
+ :owner => 'root:root'},
83
+
84
+ {:template => 'passenger.conf.erb',
85
+ :path => '/etc/apache2/mods-available/passenger.conf',
86
+ :mode => 0755,
87
+ :owner => 'root:root'}
88
+
89
+ ]
90
+
91
+ PROJECT_CONFIG_FILES[:passenger] = [
92
+
93
+ { :template => 'apache_vhost.erb',
94
+ :path => "apache_vhost",
95
+ :mode => 0755,
96
+ :owner => 'root:root'}
97
+
98
+ ]
99
+
100
+ desc "Generate Passenger apache configs (system & project level)."
101
+ task :config_gen do
102
+ config_gen_system
103
+ config_gen_project
104
+ end
105
+
106
+ desc "Generate Passenger apache configs (system level) from template."
107
+ task :config_gen_system do
108
+ SYSTEM_CONFIG_FILES[:passenger].each do |file|
109
+ deprec2.render_template(:passenger, file)
110
+ end
111
+ end
112
+
113
+ desc "Generate Passenger apache configs (project level) from template."
114
+ task :config_gen_project do
115
+ PROJECT_CONFIG_FILES[:passenger].each do |file|
116
+ deprec2.render_template(:passenger, file)
117
+ end
118
+ end
119
+
120
+ desc "Push Passenger config files (system & project level) to server"
121
+ task :config, :roles => :app do
122
+ config_system
123
+ config_project
124
+ end
125
+
126
+ desc "Push Passenger configs (system level) to server"
127
+ task :config_system, :roles => :app do
128
+ deprec2.push_configs(:passenger, SYSTEM_CONFIG_FILES[:passenger])
129
+ activate_system
130
+ end
131
+
132
+ desc "Push Passenger configs (project level) to server"
133
+ task :config_project, :roles => :app do
134
+ deprec2.push_configs(:passenger, PROJECT_CONFIG_FILES[:passenger])
135
+ symlink_apache_vhost
136
+ activate_project
137
+ end
138
+
139
+ task :symlink_apache_vhost, :roles => :app do
140
+ sudo "ln -sf #{deploy_to}/passenger/apache_vhost #{apache_vhost_dir}/#{application}"
141
+ end
142
+
143
+ task :activate, :roles => :app do
144
+ activate_system
145
+ activate_project
146
+ end
147
+
148
+ task :activate_system, :roles => :app do
149
+ sudo "a2enmod passenger"
150
+ top.deprec.web.reload
151
+ end
152
+
153
+ task :activate_project, :roles => :app do
154
+ sudo "a2ensite #{application}"
155
+ top.deprec.web.reload
156
+ end
157
+
158
+ task :deactivate do
159
+ puts
160
+ puts "******************************************************************"
161
+ puts
162
+ puts "Danger!"
163
+ puts
164
+ puts "Do you want to deactivate just this project or all Passenger"
165
+ puts "projects on this server? Try a more granular command:"
166
+ puts
167
+ puts "cap deprec:passenger:deactivate_system # disable Passenger"
168
+ puts "cap deprec:passenger:deactivate_project # disable only this project"
169
+ puts
170
+ puts "******************************************************************"
171
+ puts
172
+ end
173
+
174
+ task :deactivate_system, :roles => :app do
175
+ sudo "a2dismod passenger"
176
+ top.deprec.web.reload
177
+ end
178
+
179
+ task :deactivate_project, :roles => :app do
180
+ sudo "a2dissite #{application}"
181
+ top.deprec.web.reload
182
+ end
183
+
184
+ desc "Restart Application"
185
+ task :restart, :roles => :app do
186
+ run "touch #{current_path}/tmp/restart.txt"
187
+ end
188
+
189
+ desc "Restart Apache"
190
+ task :restart_apache, :roles => :passenger do
191
+ run "#{sudo} /etc/init.d/apache2 restart"
192
+ end
193
+
194
+ end
195
+
196
+ end
197
+ end
@@ -0,0 +1,99 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ # ref: http://www.howtoforge.com/local_debian_ubuntu_mirror
4
+ namespace :deprec do
5
+
6
+ set :apt_mirror_hostname, 'archive.ubuntu.com'
7
+ set :apt_releases_to_mirror, %w(gutsy)
8
+
9
+ namespace :apt_normal do # XXX Find a better name
10
+ # :apt was clashing with the vmbuilder plugin
11
+
12
+ SYSTEM_CONFIG_FILES[:apt] = [
13
+
14
+ {:template => 'sources.list',
15
+ :path => '/etc/apt/sources.list',
16
+ :mode => 0755,
17
+ :owner => 'root:root'}
18
+ ]
19
+
20
+ desc <<-DESC
21
+ Generate apt config from template. Note that this does not
22
+ push the config to the server, it merely generates required
23
+ configuration files. These should be kept under source control.
24
+ The can be pushed to the server with the :config task.
25
+ DESC
26
+ task :config_gen do
27
+ SYSTEM_CONFIG_FILES[:apt].each do |file|
28
+ deprec2.render_template(:apt, file)
29
+ end
30
+ end
31
+
32
+ desc "Push apt_mirror config files to server"
33
+ task :config do
34
+ deprec2.push_configs(:apt, SYSTEM_CONFIG_FILES[:apt])
35
+ end
36
+
37
+ end
38
+
39
+ namespace :apt_mirror do
40
+
41
+ desc "Install apt-mirror"
42
+ task :install, :roles => :apt_mirror do
43
+ install_deps
44
+ SYSTEM_CONFIG_FILES[:apt_mirror].each do |file|
45
+ deprec2.render_template(:apt_mirror, file.merge(:remote => true))
46
+ end
47
+ activate
48
+ end
49
+
50
+ # install dependencies for apt_mirror
51
+ task :install_deps do
52
+ apt.install( {:base => %w(apt-mirror apache2 cron)}, :stable )
53
+ end
54
+
55
+ SYSTEM_CONFIG_FILES[:apt_mirror] = [
56
+
57
+ {:template => 'mirror.list',
58
+ :path => '/etc/apt/mirror.list',
59
+ :mode => 0755,
60
+ :owner => 'root:root'},
61
+
62
+ {:template => 'apt-mirror-cron',
63
+ :path => '/etc/cron.d/apt-mirror',
64
+ :mode => 0755,
65
+ :owner => 'root:root'}
66
+ ]
67
+
68
+ desc <<-DESC
69
+ Generate apt_mirror 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[:apt_mirror].each do |file|
76
+ deprec2.render_template(:apt_mirror, file)
77
+ end
78
+ end
79
+
80
+ desc "Push apt_mirror config files to server"
81
+ task :config, :roles => :apt_mirror do
82
+ deprec2.push_configs(:apt_mirror, SYSTEM_CONFIG_FILES[:apt_mirror])
83
+ end
84
+
85
+ # Create mirror for the first time
86
+ #
87
+ # su - apt-mirror -c apt-mirror
88
+
89
+ # Add cron job to update
90
+
91
+ # Symlink for apache
92
+ # ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu
93
+
94
+ # Update sources.list on all hosts:
95
+ # deb http://192.168.0.100/ubuntu/ gutsy main restricted universe
96
+
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,67 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do
4
+ namespace :ar_sendmail do
5
+
6
+ desc "Install ar_mailer"
7
+ task :install, :roles => :app do
8
+ gem2.install 'ar_mailer'
9
+ end
10
+
11
+ # install dependencies for ar_sendmail
12
+ task :install_deps, :roles => :app do
13
+ #pass
14
+ end
15
+
16
+ PROJECT_CONFIG_FILES[:ar_sendmail] = [
17
+
18
+ {:template => 'monit.conf.erb',
19
+ :path => "monit.conf",
20
+ :mode => 0600,
21
+ :owner => 'root:root'},
22
+
23
+ {:template => 'logrotate.conf.erb',
24
+ :path => "logrotate.conf",
25
+ :mode => 0644,
26
+ :owner => 'root:root'}
27
+ ]
28
+
29
+ task :config_gen do
30
+ config_gen_project
31
+ end
32
+
33
+ desc "Generate configuration file(s) for ar_sendmail from template(s)"
34
+ task :config_gen_project do
35
+ PROJECT_CONFIG_FILES[:ar_sendmail].each do |file|
36
+ deprec2.render_template(:ar_sendmail, file)
37
+ end
38
+ end
39
+
40
+ desc "Push ar_sendmail config files to server"
41
+ task :config, :roles => :app do
42
+ config_project
43
+ end
44
+
45
+ task :config_project, :roles => :app do
46
+ deprec2.push_configs(:ar_sendmail, PROJECT_CONFIG_FILES[:ar_sendmail])
47
+ symlink_monit_config
48
+ symlink_logrotate_config
49
+ end
50
+
51
+ task :symlink_monit_config, :roles => :app do
52
+ deprec2.mkdir(monit_confd_dir, :via => :sudo)
53
+ sudo "ln -sf #{deploy_to}/ar_sendmail/monit.conf #{monit_confd_dir}/ar_sendmail_#{application}.conf"
54
+ end
55
+
56
+ task :unlink_monit_config, :roles => :app do
57
+ link = "#{monit_confd_dir}/ar_sendmail_#{application}.conf"
58
+ sudo "test -L #{link} && unlink #{link}"
59
+ end
60
+
61
+ task :symlink_logrotate_config, :roles => :app do
62
+ sudo "ln -sf #{deploy_to}/ar_sendmail/logrotate.conf /etc/logrotate.d/ar_sendmail-#{application}"
63
+ end
64
+
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,68 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ # canonical.rb
3
+ #
4
+ # Running deprec:web:stop will be the same as running deprec:apache:stop or
5
+ # deprec:nginx:stop depending what you have chosen.
6
+ #
7
+ # generic namespaces are linked up to chosen applications at runtime but these
8
+ # stubs are so they'll be included in the output of "cap -T"
9
+ #
10
+ Capistrano::Configuration.instance(:must_exist).load do
11
+
12
+ %w(ruby).each do |package|
13
+ namespace "deprec:#{package}" do
14
+
15
+ desc "Install #{package.capitalize}"
16
+ task :install do
17
+ end
18
+
19
+ end
20
+ end
21
+
22
+ %w(web app db).each do |server|
23
+ namespace "deprec:#{server}" do
24
+
25
+ desc "Install #{server.capitalize} server"
26
+ task :install, :roles => server do
27
+ end
28
+
29
+ desc "Generate config file(s) for #{server} server from template(s)"
30
+ task :config_gen do
31
+ end
32
+
33
+ desc "Deploy configuration files(s) for #{server} server"
34
+ task :config, :roles => server do
35
+ end
36
+
37
+ desc "Start #{server} server"
38
+ task :start, :roles => server do
39
+ end
40
+
41
+ desc "Stop #{server} server"
42
+ task :stop, :roles => server do
43
+ end
44
+
45
+ desc "Stop #{server} server"
46
+ task :restart, :roles => server do
47
+ end
48
+
49
+ desc "Enable startup script for #{server} server"
50
+ task :activate, :roles => server do
51
+ end
52
+
53
+ desc "Disable startup script for #{server} server"
54
+ task :deactivate, :roles => server do
55
+ end
56
+
57
+ desc "Backup data for #{server} server"
58
+ task :backup, :roles => server do
59
+ end
60
+
61
+ desc "Restore data for #{server} server from backup"
62
+ task :restore, :roles => server do
63
+ end
64
+
65
+ end
66
+ end
67
+
68
+ end
@@ -0,0 +1,144 @@
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
+ set :mysql_admin_user, 'root'
7
+ set(:mysql_admin_pass) { Capistrano::CLI.password_prompt "Enter database password for '#{mysql_admin_user}':"}
8
+
9
+ # Installation
10
+
11
+ desc "Install mysql"
12
+ task :install, :roles => :db do
13
+ install_deps
14
+ start
15
+ # symlink_mysql_sockfile # XXX still needed?
16
+ end
17
+
18
+ # Install dependencies for Mysql
19
+ task :install_deps, :roles => :db do
20
+ apt.install( {:base => %w(mysql-server mysql-client libmysqlclient15-dev)}, :stable )
21
+ end
22
+
23
+ # task :symlink_mysql_sockfile, :roles => :db do
24
+ # # rails puts "socket: /tmp/mysql.sock" into config/database.yml
25
+ # # this is not the location for our ubuntu's mysql socket file
26
+ # # so we create this link to make deployment using rails defaults simpler
27
+ # sudo "ln -sf /var/run/mysqld/mysqld.sock /tmp/mysql.sock"
28
+ # end
29
+
30
+ # Configuration
31
+
32
+ SYSTEM_CONFIG_FILES[:mysql] = [
33
+
34
+ {:template => "my.cnf.erb",
35
+ :path => '/etc/mysql/my.cnf',
36
+ :mode => 0644,
37
+ :owner => 'root:root'}
38
+ ]
39
+
40
+ desc "Generate configuration file(s) for mysql from template(s)"
41
+ task :config_gen do
42
+ SYSTEM_CONFIG_FILES[:mysql].each do |file|
43
+ deprec2.render_template(:mysql, file)
44
+ end
45
+ end
46
+
47
+ desc "Push mysql config files to server"
48
+ task :config, :roles => :db do
49
+ deprec2.push_configs(:mysql, SYSTEM_CONFIG_FILES[:mysql])
50
+ end
51
+
52
+ task :activate, :roles => :db do
53
+ send(run_method, "update-rc.d mysql defaults")
54
+ end
55
+
56
+ task :deactivate, :roles => :db do
57
+ send(run_method, "update-rc.d -f mysql remove")
58
+ end
59
+
60
+ # Control
61
+
62
+ desc "Start Mysql"
63
+ task :start, :roles => :db do
64
+ send(run_method, "/etc/init.d/mysql start")
65
+ end
66
+
67
+ desc "Stop Mysql"
68
+ task :stop, :roles => :db do
69
+ send(run_method, "/etc/init.d/mysql stop")
70
+ end
71
+
72
+ desc "Restart Mysql"
73
+ task :restart, :roles => :db do
74
+ send(run_method, "/etc/init.d/mysql restart")
75
+ end
76
+
77
+ desc "Reload Mysql"
78
+ task :reload, :roles => :db do
79
+ send(run_method, "/etc/init.d/mysql reload")
80
+ end
81
+
82
+
83
+ task :backup, :roles => :db do
84
+ end
85
+
86
+ task :restore, :roles => :db do
87
+ end
88
+
89
+ desc "Create a mysql user"
90
+ task :create_user, :roles => :db do
91
+ # TBA
92
+ end
93
+
94
+ desc "Create a database"
95
+ task :create_database, :roles => :db do
96
+ cmd = "CREATE DATABASE IF NOT EXISTS #{db_name}"
97
+ run "mysql -u #{mysql_admin_user} -p -e '#{cmd}'" do |channel, stream, data|
98
+ if data =~ /^Enter password:/
99
+ channel.send_data "#{mysql_admin_pass}\n"
100
+ end
101
+ end
102
+ end
103
+
104
+ desc "Grant user access to database"
105
+ task :grant_user_access_to_database, :roles => :db do
106
+ cmd = "GRANT ALL PRIVILEGES ON #{db_name}.* TO '#{db_user}'@localhost IDENTIFIED BY '#{db_password}';"
107
+ run "mysql -u #{mysql_admin_user} -p #{db_name} -e \"#{cmd}\"" do |channel, stream, data|
108
+ if data =~ /^Enter password:/
109
+ channel.send_data "#{mysql_admin_pass}\n"
110
+ end
111
+ end
112
+ end
113
+
114
+ end
115
+ end
116
+ end
117
+
118
+ #
119
+ # Setup replication
120
+ #
121
+
122
+ # setup user for repl
123
+ # GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';
124
+
125
+ # get current position of binlog
126
+ # mysql> FLUSH TABLES WITH READ LOCK;
127
+ # Query OK, 0 rows affected (0.00 sec)
128
+ #
129
+ # mysql> SHOW MASTER STATUS;
130
+ # +------------------+----------+--------------+------------------+
131
+ # | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
132
+ # +------------------+----------+--------------+------------------+
133
+ # | mysql-bin.000012 | 296 | | |
134
+ # +------------------+----------+--------------+------------------+
135
+ # 1 row in set (0.00 sec)
136
+ #
137
+ # # get current data
138
+ # mysqldump --all-databases --master-data >dbdump.db
139
+ #
140
+ # UNLOCK TABLES;
141
+
142
+
143
+ # Replication Features and Issues
144
+ # http://dev.mysql.com/doc/refman/5.0/en/replication-features.html