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,302 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do
4
+ namespace :nagios do
5
+
6
+ set :nagios_user, 'nagios'
7
+ set :nagios_group, 'nagios'
8
+ set :nagios_cmd_group, 'nagcmd' # Allow external commands to be submitted through the web interface
9
+
10
+ SRC_PACKAGES[:nagios] = {
11
+ :filename => 'nagios-3.0rc1.tar.gz',
12
+ :md5sum => "d8b4fbf1c2527ddcc18a39372a41dba3 nagios-3.0rc1.tar.gz",
13
+ :dir => 'nagios-3.0rc1',
14
+ :url => "http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0rc1.tar.gz",
15
+ :unpack => "tar zxfv nagios-3.0rc1.tar.gz;",
16
+ :configure => %w(
17
+ ./configure
18
+ --with-command-group=nagcmd
19
+ ;
20
+ ).reject{|arg| arg.match '#'}.join(' '),
21
+ :make => 'make all;',
22
+ :install => 'make install install-init install-commandmode'
23
+ }
24
+
25
+ desc "Install nagios"
26
+ task :install do
27
+ install_deps
28
+ create_nagios_user
29
+ deprec2.add_user_to_group(nagios_user, apache_user)
30
+ deprec2.mkdir('/usr/local/nagios/etc', :owner => "#{nagios_user}.#{nagios_group}", :via => :sudo)
31
+ deprec2.mkdir('/usr/local/nagios/objects', :owner => "#{nagios_user}.#{nagios_group}", :via => :sudo)
32
+ deprec2.download_src(SRC_PACKAGES[:nagios], src_dir)
33
+ deprec2.install_from_src(SRC_PACKAGES[:nagios], src_dir)
34
+ end
35
+
36
+ task :create_nagios_user do
37
+ deprec2.groupadd(nagios_group)
38
+ deprec2.useradd(nagios_user, :group => nagios_group, :homedir => false)
39
+ deprec2.groupadd(nagios_cmd_group)
40
+ deprec2.add_user_to_group(nagios_user, nagios_cmd_group)
41
+ end
42
+
43
+ # Install dependencies for nagios
44
+ task :install_deps do
45
+ apt.install( {:base => %w(mailx)}, :stable )
46
+ end
47
+
48
+ SYSTEM_CONFIG_FILES[:nagios] = [
49
+
50
+ {:template => 'nagios.cfg.erb',
51
+ :path => '/usr/local/nagios/etc/nagios.cfg',
52
+ :mode => 0664,
53
+ :owner => 'nagios:nagios'},
54
+
55
+ {:template => 'resource.cfg.erb',
56
+ :path => '/usr/local/nagios/etc/resource.cfg',
57
+ :mode => 0660,
58
+ :owner => 'nagios:nagios'},
59
+
60
+ {:template => 'cgi.cfg.erb',
61
+ :path => '/usr/local/nagios/etc/cgi.cfg',
62
+ :mode => 0664,
63
+ :owner => 'nagios:nagios'},
64
+
65
+ {:template => 'htpasswd.users',
66
+ :path => '/usr/local/nagios/etc/htpasswd.users',
67
+ :mode => 0664,
68
+ :owner => 'nagios:nagios'},
69
+
70
+ {:template => 'templates.cfg.erb',
71
+ :path => '/usr/local/nagios/etc/objects/templates.cfg',
72
+ :mode => 0664,
73
+ :owner => 'nagios:nagios'},
74
+
75
+ {:template => 'commands.cfg.erb',
76
+ :path => '/usr/local/nagios/etc/objects/commands.cfg',
77
+ :mode => 0664,
78
+ :owner => 'nagios:nagios'},
79
+
80
+ {:template => 'timeperiods.cfg.erb',
81
+ :path => '/usr/local/nagios/etc/objects/timeperiods.cfg',
82
+ :mode => 0664,
83
+ :owner => 'nagios:nagios'},
84
+
85
+ {:template => 'localhost.cfg.erb',
86
+ :path => '/usr/local/nagios/etc/objects/localhost.cfg',
87
+ :mode => 0664,
88
+ :owner => 'nagios:nagios'},
89
+
90
+ {:template => 'contacts.cfg.erb',
91
+ :path => '/usr/local/nagios/etc/objects/contacts.cfg',
92
+ :mode => 0664,
93
+ :owner => 'nagios:nagios'},
94
+
95
+ {:template => 'hosts.cfg.erb',
96
+ :path => '/usr/local/nagios/etc/objects/hosts.cfg',
97
+ :mode => 0664,
98
+ :owner => 'nagios:nagios'},
99
+
100
+ {:template => 'services.cfg.erb',
101
+ :path => '/usr/local/nagios/etc/objects/services.cfg',
102
+ :mode => 0664,
103
+ :owner => 'nagios:nagios'},
104
+
105
+ {:template => 'localhost.cfg.erb',
106
+ :path => '/usr/local/nagios/etc/objects/localhost.cfg',
107
+ :mode => 0664,
108
+ :owner => 'nagios:nagios'},
109
+
110
+ {:template => 'nagios_apache_vhost.conf.erb',
111
+ :path => "conf/nagios_apache_vhost.conf",
112
+ :mode => 0644,
113
+ :owner => 'root:root'}
114
+
115
+ ]
116
+
117
+ desc "Generate configuration file(s) for nagios from template(s)"
118
+ task :config_gen do
119
+ SYSTEM_CONFIG_FILES[:nagios].each do |file|
120
+ deprec2.render_template(:nagios, file)
121
+ end
122
+ end
123
+
124
+ desc "Push nagios config files to server"
125
+ task :config, :roles => :nagios do
126
+ deprec2.push_configs(:nagios, SYSTEM_CONFIG_FILES[:nagios])
127
+ sudo "ln -sf #{deploy_to}/nagios/conf/nagios_apache_vhost.conf /usr/local/apache2/conf/apps"
128
+ config_check
129
+ restart
130
+ end
131
+
132
+ desc "Run Nagios config check"
133
+ task :config_check, :roles => :nagios do
134
+ send(run_method, "/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg")
135
+ end
136
+
137
+ desc "Set Nagios to start on boot"
138
+ task :activate, :roles => :nagios do
139
+ send(run_method, "update-rc.d nagios defaults")
140
+ sudo "ln -sf #{deploy_to}/nagios/conf/nagios_apache_vhost.conf #{apache_vhost_dir}/nagios_#{application}.conf"
141
+ end
142
+
143
+ desc "Set Nagios to not start on boot"
144
+ task :deactivate, :roles => :nagios do
145
+ send(run_method, "update-rc.d -f nagios remove")
146
+ link = "#{apache_vhost_dir}/nagios_#{application}.conf"
147
+ sudo "test -h #{link} && sudo unlink #{link} || true"
148
+ end
149
+
150
+
151
+ # Control
152
+
153
+ desc "Start Nagios"
154
+ task :start, :roles => :nagios do
155
+ send(run_method, "/etc/init.d/nagios start")
156
+ end
157
+
158
+ desc "Stop Nagios"
159
+ task :stop, :roles => :nagios do
160
+ send(run_method, "/etc/init.d/nagios stop")
161
+ end
162
+
163
+ desc "Restart Nagios"
164
+ task :restart, :roles => :nagios do
165
+ send(run_method, "/etc/init.d/nagios restart")
166
+ end
167
+
168
+ desc "Reload Nagios"
169
+ task :reload, :roles => :nagios do
170
+ send(run_method, "/etc/init.d/nagios reload")
171
+ end
172
+
173
+ task :backup, :roles => :web do
174
+ # not yet implemented
175
+ end
176
+
177
+ task :restore, :roles => :web do
178
+ # not yet implemented
179
+ end
180
+
181
+ #
182
+ # Service specific tasks
183
+ #
184
+
185
+ # XXX quick and dirty - clean up later
186
+ desc "Grant a user access to the web interface"
187
+ task :htpass, :roles => :nagios do
188
+ target_user = Capistrano::CLI.ui.ask "Userid" do |q|
189
+ q.default = 'nagiosadmin'
190
+ end
191
+ system "htpasswd config/nagios/usr/local/nagios/etc/htpasswd.users #{target_user}"
192
+ end
193
+
194
+ end
195
+
196
+
197
+ SRC_PACKAGES[:nagios_plugins] = {
198
+ :filename => 'nagios-plugins-1.4.11.tar.gz',
199
+ :md5sum => "042783a2180a6987e0b403870b3d01f7 nagios-plugins-1.4.11.tar.gz",
200
+ :dir => 'nagios-plugins-1.4.11',
201
+ :url => "http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz",
202
+ :unpack => "tar zxfv nagios-plugins-1.4.11.tar.gz;",
203
+ :configure => "./configure --with-nagios-user=#{nagios_user} --with-nagios-group=#{nagios_group};",
204
+ :make => 'make;',
205
+ :install => 'make install;'
206
+ }
207
+
208
+ namespace :nagios_plugins do
209
+
210
+ task :install do
211
+ install_deps
212
+ top.deprec.nagios.create_nagios_user
213
+ deprec2.download_src(SRC_PACKAGES[:nagios_plugins], src_dir)
214
+ deprec2.install_from_src(SRC_PACKAGES[:nagios_plugins], src_dir)
215
+ end
216
+
217
+ # Install dependencies for nagios plugins
218
+ task :install_deps do
219
+ apt.install( {:base => %w(libmysqlclient15-dev)}, :stable )
220
+ end
221
+
222
+
223
+ end
224
+
225
+
226
+
227
+ namespace :nrpe do
228
+
229
+ default :nrpe_enable_command_args, false # set to true to compile nrpe to accept arguments
230
+ # note that you'll need to set it before these recipes are loaded (e.g. in .caprc)
231
+
232
+ SRC_PACKAGES[:nrpe] = {
233
+ :filename => 'nrpe-2.11.tar.gz',
234
+ :md5sum => "dcf3b7c5b7c94c0ba6cbb4999c1161f0 nrpe-2.11.tar.gz",
235
+ :dir => 'nrpe-2.11',
236
+ :url => "http://easynews.dl.sourceforge.net/sourceforge/nagios/nrpe-2.11.tar.gz",
237
+ :unpack => "tar zxfv nrpe-2.11.tar.gz;",
238
+ :configure => "./configure --with-nagios-user=#{nagios_user} --with-nagios-group=#{nagios_group} #{ '--enable-command-args' if nrpe_enable_command_args};",
239
+ :make => 'make all;',
240
+ :install => 'make install-plugin; make install-daemon; make install-daemon-config;'
241
+ }
242
+
243
+ task :install do
244
+ install_deps
245
+ top.deprec.nagios.create_nagios_user
246
+ deprec2.download_src(SRC_PACKAGES[:nrpe], src_dir)
247
+ deprec2.install_from_src(SRC_PACKAGES[:nrpe], src_dir)
248
+ # XXX this should only be run on the nrpe clients
249
+ # XXX currently it's run on the nagios server too
250
+ # XXX shouldn't do any harm but we should split them up later
251
+ deprec2.append_to_file_if_missing('/etc/services', 'nrpe 5666/tcp # NRPE')
252
+ end
253
+
254
+ task :install_deps do
255
+ apt.install( {:base => %w(xinetd libssl-dev openssl)}, :stable )
256
+ end
257
+
258
+ SYSTEM_CONFIG_FILES[:nrpe] = [
259
+
260
+ {:template => 'nrpe.xinetd.erb',
261
+ :path => "/etc/xinetd.d/nrpe",
262
+ :mode => 0644,
263
+ :owner => 'root:root'},
264
+
265
+ {:template => 'nrpe.cfg.erb',
266
+ :path => "/usr/local/nagios/etc/nrpe.cfg",
267
+ :mode => 0644,
268
+ :owner => 'nagios:nagios'} # XXX hard coded file owner is bad...
269
+ # It's done here because we aren't using
270
+ # lazy eval in hash constant.
271
+
272
+ ]
273
+
274
+ desc "Generate configuration file(s) for nrpe from template(s)"
275
+ task :config_gen do
276
+ SYSTEM_CONFIG_FILES[:nrpe].each do |file|
277
+ deprec2.render_template(:nagios, file)
278
+ end
279
+ end
280
+
281
+ desc "Push nrpe config files to server"
282
+ task :config do
283
+ deprec2.push_configs(:nagios, SYSTEM_CONFIG_FILES[:nrpe])
284
+ # XXX should really only do this on targets
285
+ sudo "/etc/init.d/xinetd stop"
286
+ sudo "/etc/init.d/xinetd start"
287
+ end
288
+
289
+ task :test_local do
290
+ run "/usr/local/nagios/libexec/check_nrpe -H localhost"
291
+ end
292
+
293
+ task :test_remote, :roles => :nagios do
294
+ target_host = Capistrano::CLI.ui.ask "target hostname"
295
+ run "/usr/local/nagios/libexec/check_nrpe -H #{target_host}"
296
+ end
297
+
298
+ end
299
+
300
+
301
+ end
302
+ end
@@ -0,0 +1,84 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do
4
+ namespace :network do
5
+
6
+ set(:network_number_of_ports) {
7
+ Capistrano::CLI.ui.ask "Number of network ports" do |q|
8
+ q.default = 1
9
+ end
10
+ }
11
+
12
+ set(:network_interfaces) {
13
+ foo = {}
14
+ network_number_of_ports.to_i.times do |port|
15
+ foo[port] = {}
16
+ foo[port][:address] = Capistrano::CLI.ui.ask "address" do |q|
17
+ q.default = "192.168.#{port+1}.10"
18
+ end
19
+ foo[port][:netmask] = Capistrano::CLI.ui.ask "netmask" do |q|
20
+ q.default = '255.255.255.0'
21
+ end
22
+ foo[port][:broadcast] = Capistrano::CLI.ui.ask "broadcast" do |q|
23
+ q.default = "192.168.#{port+1}.255"
24
+ end
25
+
26
+ end
27
+ foo
28
+ }
29
+ set(:network_hostname) {
30
+ Capistrano::CLI.ui.ask "hostname" do |q|
31
+ # q.validate = /add hostname validation here/
32
+ end
33
+ }
34
+ set(:network_gateway) {
35
+ Capistrano::CLI.ui.ask "default gateway" do |q|
36
+ q.default = '192.168.1.1'
37
+ end
38
+ }
39
+ set(:network_dns_nameservers) {
40
+ Capistrano::CLI.ui.ask "dns nameservers (separated by spaces)" do |q|
41
+ q.default = '203.8.183.1 4.2.2.1'
42
+ end
43
+ }
44
+
45
+
46
+ SYSTEM_CONFIG_FILES[:network] = [
47
+
48
+ {:template => "interfaces.erb",
49
+ :path => '/etc/network/interfaces',
50
+ :mode => 0644,
51
+ :owner => 'root:root'},
52
+
53
+ {:template => "hosts.erb",
54
+ :path => '/etc/hosts',
55
+ :mode => 0644,
56
+ :owner => 'root:root'},
57
+
58
+ {:template => "hostname.erb",
59
+ :path => '/etc/hostname',
60
+ :mode => 0644,
61
+ :owner => 'root:root'}
62
+ ]
63
+
64
+ desc "Generate configuration file(s) for networking"
65
+ task :config_gen do
66
+ SYSTEM_CONFIG_FILES[:network].each do |file|
67
+ deprec2.render_template(:network, file)
68
+ end
69
+ end
70
+
71
+ desc 'Deploy configuration files(s) for networking configuration'
72
+ task :config do
73
+ deprec2.push_configs(:network, SYSTEM_CONFIG_FILES[:network])
74
+ end
75
+
76
+ desc "Restart network interface"
77
+ task :restart do
78
+ sudo '/etc/init.d/networking restart'
79
+ end
80
+
81
+ end
82
+ end
83
+
84
+ end
@@ -0,0 +1,154 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :deprec do
4
+ namespace :nginx do
5
+
6
+ set :nginx_server_name, nil
7
+ set :nginx_user, 'nobody'
8
+ set :nginx_group, 'nogroup'
9
+ set :nginx_vhost_dir, '/usr/local/nginx/conf/vhosts'
10
+ set :nginx_client_max_body_size, '50M'
11
+
12
+ SRC_PACKAGES[:nginx] = {
13
+ :filename => 'nginx-0.6.31.tar.gz',
14
+ :md5sum => "824bcc25bbd5b636f182237b69227bd2 nginx-0.5.34.tar.gz",
15
+ :dir => 'nginx-0.6.31',
16
+ :url => "http://sysoev.ru/nginx/nginx-0.6.31.tar.gz",
17
+ :unpack => "tar zxf nginx-0.6.31.tar.gz;",
18
+ :configure => %w(
19
+ ./configure
20
+ --sbin-path=/usr/local/sbin
21
+ --with-http_dav_module
22
+ --with-http_ssl_module
23
+ --with-http_stub_status_module
24
+ --with-mail
25
+ --with-mail_ssl_module
26
+ ;
27
+ ).reject{|arg| arg.match '#'}.join(' '),
28
+ :make => 'make;',
29
+ :install => 'make install;'
30
+ }
31
+
32
+ desc "Install nginx"
33
+ task :install do
34
+ install_deps
35
+ deprec2.download_src(SRC_PACKAGES[:nginx], src_dir)
36
+ deprec2.install_from_src(SRC_PACKAGES[:nginx], src_dir)
37
+ create_nginx_user
38
+ # setup_vhost_dir # XXX not done yet
39
+ # install_index_page # XXX not done yet
40
+ end
41
+
42
+ # install dependencies for nginx
43
+ task :install_deps do
44
+ apt.install( {:base => %w(libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev)}, :stable )
45
+ # do we need libgcrypt11-dev?
46
+ end
47
+
48
+ task :create_nginx_user do
49
+ deprec2.groupadd(nginx_group)
50
+ deprec2.useradd(nginx_user, :group => nginx_group, :homedir => false)
51
+ end
52
+
53
+ task :rename_index_page, :roles => :web do
54
+ index_file = '/usr/local/nginx/html/index.html'
55
+ sudo "test -f #{index_file} && sudo mv #{index_file} #{index_file}.orig || exit 0"
56
+ end
57
+
58
+ SYSTEM_CONFIG_FILES[:nginx] = [
59
+
60
+ {:template => 'nginx-init-script',
61
+ :path => '/etc/init.d/nginx',
62
+ :mode => 0755,
63
+ :owner => 'root:root'},
64
+
65
+ {:template => 'nginx.conf.erb',
66
+ :path => "/usr/local/nginx/conf/nginx.conf",
67
+ :mode => 0644,
68
+ :owner => 'root:root'},
69
+
70
+ {:template => 'mime.types.erb',
71
+ :path => "/usr/local/nginx/conf/mime.types",
72
+ :mode => 0644,
73
+ :owner => 'root:root'},
74
+
75
+ {:template => 'nothing.conf',
76
+ :path => "/usr/local/nginx/conf/vhosts/nothing.conf",
77
+ :mode => 0644,
78
+ :owner => 'root:root'}
79
+ ]
80
+
81
+ desc <<-DESC
82
+ Generate nginx config from template. Note that this does not
83
+ push the config to the server, it merely generates required
84
+ configuration files. These should be kept under source control.
85
+ The can be pushed to the server with the :config task.
86
+ DESC
87
+ task :config_gen do
88
+ SYSTEM_CONFIG_FILES[:nginx].each do |file|
89
+ deprec2.render_template(:nginx, file)
90
+ end
91
+ end
92
+
93
+ desc "Push nginx config files to server"
94
+ task :config, :roles => :web do
95
+ deprec2.push_configs(:nginx, SYSTEM_CONFIG_FILES[:nginx])
96
+ end
97
+
98
+ desc <<-DESC
99
+ Activate nginx start scripts on server.
100
+ Setup server to start nginx on boot.
101
+ DESC
102
+ task :activate, :roles => :web do
103
+ activate_system
104
+ end
105
+
106
+ task :activate_system, :roles => :web do
107
+ send(run_method, "update-rc.d nginx defaults")
108
+ end
109
+
110
+ desc <<-DESC
111
+ Dectivate nginx start scripts on server.
112
+ Setup server to start nginx on boot.
113
+ DESC
114
+ task :deactivate, :roles => :web do
115
+ send(run_method, "update-rc.d -f nginx remove")
116
+ end
117
+
118
+
119
+ # Control
120
+
121
+ desc "Start Nginx"
122
+ task :start, :roles => :web do
123
+ send(run_method, "/etc/init.d/nginx start")
124
+ end
125
+
126
+ desc "Stop Nginx"
127
+ task :stop, :roles => :web do
128
+ send(run_method, "/etc/init.d/nginx stop")
129
+ end
130
+
131
+ desc "Restart Nginx"
132
+ task :restart, :roles => :web do
133
+ # So that restart will work even if nginx is not running
134
+ # we call stop and ignore the return code. We then start it.
135
+ send(run_method, "/etc/init.d/nginx stop; exit 0")
136
+ send(run_method, "/etc/init.d/nginx start")
137
+ end
138
+
139
+ desc "Reload Nginx"
140
+ task :reload, :roles => :web do
141
+ send(run_method, "/etc/init.d/nginx reload")
142
+ end
143
+
144
+ task :backup, :roles => :web do
145
+ # there's nothing to backup for nginx
146
+ end
147
+
148
+ task :restore, :roles => :web do
149
+ # there's nothing to store for nginx
150
+ end
151
+
152
+ end
153
+ end
154
+ end