deprec 2.1.19 → 2.2.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.
- data/CHANGELOG +11 -1
- data/{README → README.md} +33 -68
- data/bin/hosts.rb +44 -0
- data/docs/nagios.txt +28 -0
- data/lib/deprec/capistrano_extensions.rb +21 -32
- data/lib/deprec/recipes/apache.rb +54 -73
- data/lib/deprec/recipes/deprec.rb +30 -48
- data/lib/deprec/recipes/git.rb +2 -85
- data/lib/deprec/recipes/haproxy.rb +3 -11
- data/lib/deprec/recipes/mri.rb +23 -40
- data/lib/deprec/recipes/mysql.rb +6 -23
- data/lib/deprec/recipes/nagios.rb +2 -17
- data/lib/deprec/recipes/nagios3.rb +180 -0
- data/lib/deprec/recipes/network.rb +60 -28
- data/lib/deprec/recipes/nrpe.rb +82 -0
- data/lib/deprec/recipes/passenger.rb +15 -12
- data/lib/deprec/recipes/postgresql.rb +2 -2
- data/lib/deprec/recipes/rack.rb +44 -0
- data/lib/deprec/recipes/rails.rb +10 -32
- data/lib/deprec/recipes/ree.rb +27 -18
- data/lib/deprec/recipes/rubygems.rb +29 -0
- data/lib/deprec/recipes/sqlite.rb +1 -1
- data/lib/deprec/recipes/ssh.rb +1 -0
- data/lib/deprec/recipes/svn.rb +1 -160
- data/lib/deprec/recipes/users.rb +19 -16
- data/lib/deprec/recipes_minus_rails.rb +39 -36
- data/lib/deprec/templates/apache/CHANGES.txt +11 -0
- data/lib/deprec/templates/mysql/my.cnf.erb +21 -31
- data/lib/deprec/templates/{nagios → nagios.old}/README +0 -0
- data/lib/deprec/templates/nagios.old/apache_vhost.erb +25 -0
- data/lib/deprec/templates/{nagios → nagios.old}/cgi.cfg.erb +0 -0
- data/lib/deprec/templates/nagios.old/check_linux_free_memory.pl +118 -0
- data/lib/deprec/templates/{nagios → nagios.old}/check_mongrel_cluster.rb +0 -0
- data/lib/deprec/templates/nagios.old/htpasswd.users +1 -0
- data/lib/deprec/templates/{nagios → nagios.old}/mrtg.cfg +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/nagios.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/nrpe.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/nrpe.xinetd.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/objects/commands.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/objects/contacts.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/objects/hosts.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/objects/localhost.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/objects/services.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/objects/timeperiods.cfg.erb +0 -0
- data/lib/deprec/templates/{nagios → nagios.old}/resource.cfg.erb +0 -0
- data/lib/deprec/templates/nagios/apache2.conf +55 -0
- data/lib/deprec/templates/nagios/cgi.cfg +25 -0
- data/lib/deprec/templates/nagios/commands.cfg +52 -0
- data/lib/deprec/templates/nagios/conf.d/contacts_nagios2.cfg +23 -0
- data/lib/deprec/templates/nagios/conf.d/extinfo_nagios2.cfg +13 -0
- data/lib/deprec/templates/nagios/conf.d/generic-host_nagios2.cfg +19 -0
- data/lib/deprec/templates/nagios/conf.d/generic-service_nagios2.cfg +26 -0
- data/lib/deprec/templates/nagios/conf.d/hostgroups_nagios2.cfg +48 -0
- data/lib/deprec/templates/nagios/conf.d/hosts/localhost_nagios2.cfg +59 -0
- data/lib/deprec/templates/nagios/conf.d/services_nagios2.cfg +45 -0
- data/lib/deprec/templates/nagios/conf.d/timeperiods_nagios2.cfg +50 -0
- data/lib/deprec/templates/nagios/host_template.erb +6 -0
- data/lib/deprec/templates/nagios/htpasswd.users +1 -1
- data/lib/deprec/templates/nagios/nagios.cfg +1326 -0
- data/lib/deprec/templates/nagios/nrpe.cfg +28 -0
- data/lib/deprec/templates/nagios/resource.cfg +31 -0
- data/lib/deprec/templates/passenger/apache_vhost.erb +2 -2
- data/lib/deprec/templates/passenger/logrotate.conf.erb +1 -1
- data/lib/deprec/templates/passenger/passenger.conf.erb +12 -11
- data/lib/deprec/templates/passenger/passenger.load.erb +1 -1
- metadata +43 -42
- data/lib/deprec/recipes/wordpress.rb +0 -96
data/CHANGELOG
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# deprec changelog
|
2
2
|
|
3
|
-
= 2.1
|
3
|
+
= 2.2.1 (Jul 10, 2011)
|
4
|
+
|
5
|
+
* First release since rewrite of http://deprec.org
|
6
|
+
* Tidy up of various recipes
|
7
|
+
* Introduction of deprec:rack namespace
|
8
|
+
|
9
|
+
= 2.1.20 (Mar 4, 2011)
|
10
|
+
|
11
|
+
* generate apache vhost to current dir if config/ not present
|
12
|
+
|
13
|
+
= 2.1.19 (Mar 4, 2011)
|
4
14
|
|
5
15
|
* replaced mailx with mailutils
|
6
16
|
* cap deprec:apache:vhost # handy vhost generator
|
data/{README → README.md}
RENAMED
@@ -1,41 +1,39 @@
|
|
1
|
-
------------------------------------------
|
2
1
|
deprec - Deployment Recipes for Capistrano
|
3
|
-
|
2
|
+
==========================================
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
The deprec [1] gem is a set of tasks for Capistrano [2]. These tasks provide
|
4
|
+
The [deprec][1] gem is a set of tasks for [Capistrano][2]. These tasks provide
|
8
5
|
for the installation, configuration and control of system services on servers
|
9
6
|
running Ubuntu linux. Deprec was created in 2006 by Mike Bailey to setup an
|
10
7
|
environment for running Ruby on Rails web applications on Ubuntu servers. Since
|
11
|
-
then its uses have grown to installing Xen virtualization, mail, monitoring,
|
12
|
-
availability IP failover and other services.
|
8
|
+
then its uses have grown to installing Xen virtualization, mail, monitoring,
|
9
|
+
high availability IP failover and other services.
|
13
10
|
|
14
11
|
The tasks are run at the command line on your workstation and connect to
|
15
12
|
remote servers via ssh to run commands and copy out files.
|
16
13
|
|
17
14
|
Deprec-2.x is a complete rewrite of the project that achieves the following:
|
18
15
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
* support for Capistrano 2
|
17
|
+
* generated config files are stored locally to enable editing and version control
|
18
|
+
* support for more services (heartbeat, nagios, nginx, ntp, postfix, etc)
|
19
|
+
* multiple Rails deployment options (Passenger+Apache, Mongrel+Apache/Nginx)
|
20
|
+
* creation of a standard base set of task names
|
21
|
+
* tasks are cleanly separated into namespaced units (one file per service)
|
22
|
+
* interactive prompting for missing config values
|
26
23
|
|
27
|
-
Deprec and Capistrano are written in the Ruby programming language
|
24
|
+
Deprec and Capistrano are written in the [Ruby programming language][3] however
|
28
25
|
no knowledge of Ruby is required to use it. Users should be able to write
|
29
26
|
new tasks and modify existing options without prior knowledge of Ruby.
|
30
27
|
|
31
28
|
|
32
|
-
|
29
|
+
Installation
|
30
|
+
------------
|
33
31
|
|
34
|
-
Deprec can
|
32
|
+
Deprec can using rubygems[5].
|
35
33
|
|
36
34
|
sudo gem install deprec # installs deprec and dependancies
|
37
|
-
|
38
|
-
cap -T
|
35
|
+
depify -c # creates ~/.caprc which you may edit
|
36
|
+
cap -T # should list lots of deprec tasks
|
39
37
|
|
40
38
|
The .caprc file is loaded every time you use Capistrano. It in turn loads
|
41
39
|
the deprec tasks so you always have them available. Editing the .caprc file
|
@@ -45,56 +43,23 @@ also put tasks here that you want access to, regardless of the current working
|
|
45
43
|
directory.
|
46
44
|
|
47
45
|
|
48
|
-
|
49
|
-
|
50
|
-
This is still what brings people to deprec. You can install a full Rails stack
|
51
|
-
and get multiple apps running on it in much less time than it would take to
|
52
|
-
do it manually (e.g. an hour vs. a weekend).
|
53
|
-
|
54
|
-
Get your app running on a fresh Ubuntu (7.10, 8.04) server with these commands:
|
55
|
-
|
56
|
-
cd your_rails_app
|
57
|
-
depify .
|
58
|
-
# Edit config/deploy.rb
|
59
|
-
cap deprec:rails:install_stack
|
60
|
-
|
61
|
-
# WARNING! Don't run the following command if you are using a shared
|
62
|
-
# database server that has already been installed.
|
63
|
-
cap deprec:db:install
|
64
|
-
|
65
|
-
cap deploy:setup
|
66
|
-
cap deploy
|
67
|
-
cap deploy:migrate
|
68
|
-
|
69
|
-
Recorded times for complete install on Ubuntu hardy server (7.10 amd64)
|
70
|
-
|
71
|
-
* Passenger+REE+Apache : 14m29s
|
72
|
-
* Passenger+ruby-1.8.7+Apache : 17m51s
|
73
|
-
* nginx+mongrel : 16m25s
|
74
|
-
|
75
|
-
Note you can choose combinations of:
|
76
|
-
|
77
|
-
* Ruby Enterprise Edition or ruby-1.8.7
|
78
|
-
* Passenger or mongrel (passenger requires you choose to the apache option)
|
79
|
-
* Apache or nginx
|
80
|
-
|
81
|
-
You can find documentation on the deprec site. http://www.deprec.org/
|
82
|
-
|
83
|
-
|
84
|
-
== Installing other things
|
46
|
+
Installing other things
|
47
|
+
-----------------------
|
85
48
|
|
86
49
|
I plan to document other things I use deprec for on http://www.deprec.org/.
|
87
50
|
Feel free to poke around and see what's there. I use deprec to provision and
|
88
51
|
manage servers so you might find some things in there I haven't documented. Lucky you.
|
89
52
|
|
90
53
|
|
91
|
-
|
54
|
+
Disclaimer
|
55
|
+
----------
|
92
56
|
|
93
57
|
The tasks run commands that may make changes to your workstation and remote server.
|
94
58
|
You are advised to read the source and use at your own risk.
|
95
59
|
|
96
60
|
|
97
|
-
|
61
|
+
Credits
|
62
|
+
-------
|
98
63
|
|
99
64
|
Deprec is written and maintained by Mike Bailey <mike@bailey.net.au>.
|
100
65
|
More about me here: [http://mike.bailey.net.au/]
|
@@ -103,7 +68,8 @@ Deprec was inspired and uses the brilliantly executed Capistrano. Thanks Jamis!
|
|
103
68
|
This gem includes a modified copy of Neil Wilson's very useful vmbuilder_plugins gem.
|
104
69
|
|
105
70
|
|
106
|
-
|
71
|
+
Thanks
|
72
|
+
------
|
107
73
|
|
108
74
|
Deprec wouldn't be what it is without the contributions of many people, a few of whom are listed here:
|
109
75
|
|
@@ -120,7 +86,8 @@ Deprec wouldn't be what it is without the contributions of many people, a few of
|
|
120
86
|
zippy
|
121
87
|
|
122
88
|
|
123
|
-
|
89
|
+
License
|
90
|
+
-------
|
124
91
|
|
125
92
|
Deprec is licenced under the GPL. This means that you can use it in commercial
|
126
93
|
or open source applications. More details found here:
|
@@ -144,11 +111,9 @@ along with this program; if not, write to the Free Software
|
|
144
111
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
145
112
|
|
146
113
|
|
147
|
-
[1] http://www.deprec.org/
|
148
|
-
[2] http://www.capify.org/
|
149
|
-
[3] http://www.ruby-lang.org/en/
|
150
|
-
[4] http://rubyforge.org/
|
151
|
-
[5] http://rubygems.org/
|
152
|
-
[6] http://www.sct.com.au/
|
153
|
-
|
154
|
-
foo
|
114
|
+
[1]: http://www.deprec.org/
|
115
|
+
[2]: http://www.capify.org/
|
116
|
+
[3]: http://www.ruby-lang.org/en/
|
117
|
+
[4]: http://rubyforge.org/
|
118
|
+
[5]: http://rubygems.org/
|
119
|
+
[6]: http://www.sct.com.au/
|
data/bin/hosts.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Generate Nagios hosts files from unix hosts file
|
4
|
+
#
|
5
|
+
# e.g.
|
6
|
+
# 10.1.1.1 gw.failmode.com
|
7
|
+
# 10.1.1.5 mail.failmode.com
|
8
|
+
|
9
|
+
require 'erb'
|
10
|
+
|
11
|
+
hosts_file = ARGV[0] || '/etc/hosts'
|
12
|
+
|
13
|
+
template = ERB.new <<-EOF
|
14
|
+
define host{
|
15
|
+
use generic-host
|
16
|
+
hostgroups linux-servers
|
17
|
+
host_name <%= host_name %>
|
18
|
+
address <%= ip %>
|
19
|
+
}
|
20
|
+
EOF
|
21
|
+
|
22
|
+
ValidIpAddressRegex = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;
|
23
|
+
|
24
|
+
ValidHostnameRegex = /^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/;
|
25
|
+
|
26
|
+
# XXX Add hostgroups to hosts
|
27
|
+
# HOSTGROUPS = 'linux-servers', 'windows-servers', 'debian-servers', 'vmware-hosts'
|
28
|
+
|
29
|
+
open(hosts_file).each do |line|
|
30
|
+
ip, host_name = line.sub(/#.*/,'').split[0,2]
|
31
|
+
hostgroups = []
|
32
|
+
|
33
|
+
|
34
|
+
if ip =~ ValidIpAddressRegex and host_name =~ ValidHostnameRegex
|
35
|
+
filename = host_name + '.cfg'
|
36
|
+
File.open(filename, 'w') do |file|
|
37
|
+
file.write template.result(binding)
|
38
|
+
puts "writing #{filename}"
|
39
|
+
end
|
40
|
+
else
|
41
|
+
puts "not writing anything for '#{line}'"
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/docs/nagios.txt
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
Nagios with deprec
|
2
|
+
==================
|
3
|
+
|
4
|
+
For each command, append HOSTS=target.host.name
|
5
|
+
|
6
|
+
# Nagios server
|
7
|
+
cap deprec:nagios:install
|
8
|
+
cap deprec:nagios:gen_host # One way to add hosts to monitor
|
9
|
+
cap deprec:nagios:config
|
10
|
+
|
11
|
+
# servers to be monitored
|
12
|
+
cap deprec:nrpe:install
|
13
|
+
cap deprec:nrpe:test_local # does nrpe query from local host
|
14
|
+
cap deprec:nrpe:test_remote # does nrpe query from nagios server
|
15
|
+
|
16
|
+
|
17
|
+
# TODO
|
18
|
+
By maintaining a simple hosts file you can generate the nagios
|
19
|
+
hosts files. The following hosts file is valid:
|
20
|
+
|
21
|
+
# This hosts file is used to generate Nagios hosts configs
|
22
|
+
# The first two tokens are used only if they consist of a
|
23
|
+
# valid IP address and hostname.
|
24
|
+
#
|
25
|
+
# hostgroups can follow but must be preceded by a '#'
|
26
|
+
#
|
27
|
+
10.1.1.10 xen01 # linux-servers dom0
|
28
|
+
10.1.1.11 web01 # linux-servers domU
|
@@ -12,6 +12,7 @@ module Deprec2
|
|
12
12
|
yield
|
13
13
|
ENV['ROLES'] = old_roles.to_s unless ENV['HOSTS']
|
14
14
|
end
|
15
|
+
|
15
16
|
|
16
17
|
# Temporarily ignore ROLES and HOSTS
|
17
18
|
def ignoring_roles_and_hosts
|
@@ -77,10 +78,10 @@ module Deprec2
|
|
77
78
|
elsif path
|
78
79
|
# render to local file
|
79
80
|
full_path = File.join('config', stage, app.to_s, path)
|
80
|
-
path_dir = File.dirname(full_path)
|
81
|
+
path_dir = File.dirname(File.expand_path(full_path))
|
81
82
|
if File.exists?(full_path)
|
82
83
|
if IO.read(full_path) == rendered_template
|
83
|
-
puts "[skip]
|
84
|
+
puts "[skip] Identical file exists (#{full_path})."
|
84
85
|
return false
|
85
86
|
elsif overwrite?(full_path, rendered_template)
|
86
87
|
File.delete(full_path)
|
@@ -92,7 +93,7 @@ module Deprec2
|
|
92
93
|
FileUtils.mkdir_p "#{path_dir}" if ! File.directory?(path_dir)
|
93
94
|
# added line above to make windows compatible
|
94
95
|
# system "mkdir -p #{path_dir}" if ! File.directory?(path_dir)
|
95
|
-
File.open(full_path, 'w'){|f| f.write rendered_template }
|
96
|
+
File.open(File.expand_path(full_path), 'w'){|f| f.write rendered_template }
|
96
97
|
puts "[done] #{full_path} written"
|
97
98
|
else
|
98
99
|
# render to string
|
@@ -241,7 +242,7 @@ module Deprec2
|
|
241
242
|
end
|
242
243
|
|
243
244
|
# download source pkg if we don't already have it
|
244
|
-
def download_src(src_pkg, src_dir)
|
245
|
+
def download_src(src_pkg, src_dir=src_dir)
|
245
246
|
set_pkg_defaults(src_pkg)
|
246
247
|
create_src_dir
|
247
248
|
# check if file exists and if we have an MD5 hash or bytecount to compare
|
@@ -278,7 +279,7 @@ module Deprec2
|
|
278
279
|
end
|
279
280
|
|
280
281
|
# unpack src and make it writable by the group
|
281
|
-
def unpack_src(src_pkg, src_dir)
|
282
|
+
def unpack_src(src_pkg, src_dir=src_dir)
|
282
283
|
set_pkg_defaults(src_pkg)
|
283
284
|
pkg_dir = File.join([src_dir, src_pkg[:dir]].compact)
|
284
285
|
case src_pkg[:download_method]
|
@@ -319,7 +320,8 @@ module Deprec2
|
|
319
320
|
end
|
320
321
|
|
321
322
|
# install pkg from source
|
322
|
-
def install_from_src(src_pkg, src_dir)
|
323
|
+
def install_from_src(src_pkg, src_dir=src_dir)
|
324
|
+
install_deps(src_pkg[:deps])
|
323
325
|
set_pkg_defaults(src_pkg)
|
324
326
|
pkg_dir = File.join([src_dir, src_pkg[:dir]].compact)
|
325
327
|
unpack_src(src_pkg, src_dir)
|
@@ -329,6 +331,10 @@ module Deprec2
|
|
329
331
|
run "cd #{pkg_dir} && #{sudo} #{src_pkg[:install]}" if src_pkg[:install] != ''
|
330
332
|
run "cd #{pkg_dir} && #{sudo} #{src_pkg[:post_install]}" if src_pkg[:post_install] != ''
|
331
333
|
end
|
334
|
+
|
335
|
+
def install_deps(packages=[])
|
336
|
+
apt.install({:base => Array(packages)}, :stable)
|
337
|
+
end
|
332
338
|
|
333
339
|
def read_database_yml
|
334
340
|
stage = exists?(:stage) ? fetch(:stage).to_s : ''
|
@@ -384,32 +390,15 @@ module Deprec2
|
|
384
390
|
end
|
385
391
|
end
|
386
392
|
|
387
|
-
#
|
388
|
-
#
|
389
|
-
#
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
# std.connect_as_root do |tempuser|
|
397
|
-
# run shell_command
|
398
|
-
# end
|
399
|
-
# end
|
400
|
-
#
|
401
|
-
# ##
|
402
|
-
# # Run a task using root account.
|
403
|
-
# #
|
404
|
-
# # Some linux distros/VPS providers only give you a root login when you install.
|
405
|
-
# #
|
406
|
-
# # tempuser: contains the value replaced by 'root' for the duration of this call
|
407
|
-
#
|
408
|
-
# def as_root()
|
409
|
-
# std.connect_as_root do |tempuser|
|
410
|
-
# yield tempuser
|
411
|
-
# end
|
412
|
-
# end
|
393
|
+
# deprecated...I don't see any need for this
|
394
|
+
# Set the value if not already set
|
395
|
+
# This method is accessible to all recipe files
|
396
|
+
def self.default(name, *args, &block)
|
397
|
+
puts "********** deprecation warning **********"
|
398
|
+
puts "Could you use set() instead of default()?"
|
399
|
+
puts "*****************************************"
|
400
|
+
set(name, *args, &block) unless exists?(name)
|
401
|
+
end
|
413
402
|
|
414
403
|
private
|
415
404
|
|
@@ -13,41 +13,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
13
13
|
set :apache_modules_enabled,
|
14
14
|
%w(rewrite ssl proxy_balancer proxy_http deflate expires headers)
|
15
15
|
|
16
|
-
|
17
|
-
# These are only used for generating vhost files with:
|
18
|
-
#
|
19
|
-
# cap deprec:apache:vhost
|
20
|
-
#
|
21
|
-
set(:apache_vhost_domain) { Capistrano::CLI.ui.ask 'Primary domain' }
|
22
|
-
set(:apache_vhost_server_alii) {
|
23
|
-
Capistrano::CLI.ui.ask('ServerAlii (space separated)' ).split(' ')
|
24
|
-
}
|
25
|
-
set :apache_vhost_access_log_type, 'combined'
|
26
|
-
set :apache_vhost_canonicalize_hostname, true
|
27
|
-
set(:apache_vhost_access_log) {
|
28
|
-
File.join(apache_log_dir, "#{apache_vhost_domain}-access.log")
|
29
|
-
}
|
30
|
-
set(:apache_vhost_error_log) {
|
31
|
-
File.join(apache_log_dir, "#{apache_vhost_domain}-error.log")
|
32
|
-
}
|
33
|
-
set(:apache_vhost_document_root) {
|
34
|
-
File.join('/var/apps', "#{apache_vhost_domain}", 'public')
|
35
|
-
}
|
36
|
-
set :apache_vhost_rack_env, false
|
37
|
-
# End apache vhost extras
|
38
|
-
|
39
|
-
|
40
|
-
desc "Install apache"
|
16
|
+
desc "Install Apache"
|
41
17
|
task :install do
|
42
|
-
install_deps
|
43
|
-
config
|
44
|
-
end
|
45
|
-
|
46
|
-
# install dependencies for apache
|
47
|
-
task :install_deps do
|
48
18
|
apt.install(
|
49
19
|
{:base => %w(apache2-mpm-prefork apache2-prefork-dev rsync ssl-cert)},
|
50
20
|
:stable )
|
21
|
+
config
|
51
22
|
end
|
52
23
|
|
53
24
|
SYSTEM_CONFIG_FILES[:apache] = [
|
@@ -83,43 +54,30 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
83
54
|
# Not required
|
84
55
|
]
|
85
56
|
|
86
|
-
desc "Generate
|
57
|
+
desc "Generate Apache config files"
|
87
58
|
task :config_gen do
|
88
59
|
config_gen_system
|
89
60
|
end
|
90
61
|
|
62
|
+
# Generate system level apache configs
|
91
63
|
task :config_gen_system do
|
92
64
|
SYSTEM_CONFIG_FILES[:apache].each do |file|
|
93
65
|
deprec2.render_template(:apache, file)
|
94
66
|
end
|
95
67
|
end
|
96
68
|
|
69
|
+
# Not used here
|
97
70
|
task :config_gen_project do
|
98
|
-
PROJECT_CONFIG_FILES[:apache].each do |file|
|
99
|
-
deprec2.render_template(:apache, file)
|
100
|
-
end
|
101
|
-
# XXX Need to flesh out generation of custom certs
|
102
|
-
# In the meantime we'll just use the snakeoil cert
|
103
|
-
#
|
104
|
-
# top.deprec.ssl.config_gen if apache_ssl_enabled
|
105
|
-
top.deprec.ssl.config_gen if apache_ssl_enabled
|
106
71
|
end
|
107
72
|
|
108
|
-
desc "Push
|
73
|
+
desc "Push Apache config files to server"
|
109
74
|
task :config, :roles => :web do
|
110
75
|
config_system
|
111
76
|
enable_modules
|
112
77
|
reload
|
113
78
|
end
|
114
79
|
|
115
|
-
desc "
|
116
|
-
task :initial_config, :roles => :web do
|
117
|
-
SYSTEM_CONFIG_FILES[:apache].each do |file|
|
118
|
-
deprec2.render_template(:apache, file.merge(:remote => true))
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
desc "Push apache config files to server"
|
80
|
+
desc "Push Apache config files to server"
|
123
81
|
task :config_system, :roles => :web do
|
124
82
|
deprec2.push_configs(:apache, SYSTEM_CONFIG_FILES[:apache])
|
125
83
|
run "#{sudo} touch /var/www/check.txt" # Used to test webserver up
|
@@ -133,58 +91,81 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
133
91
|
top.deprec.ssl.config if apache_ssl_enabled
|
134
92
|
end
|
135
93
|
|
136
|
-
task :vhost do
|
137
|
-
file = {
|
138
|
-
:template => 'vhost.erb',
|
139
|
-
:path => "/etc/apache2/sites-available/#{apache_vhost_domain}",
|
140
|
-
:mode => 0644,
|
141
|
-
:owner => 'root:root'
|
142
|
-
}
|
143
|
-
deprec2.render_template(:apache, file)
|
144
|
-
end
|
145
|
-
|
146
94
|
task :enable_modules, :roles => :web do
|
147
95
|
apache_modules_enabled.each { |mod| sudo "a2enmod #{mod}" }
|
148
96
|
end
|
97
|
+
|
98
|
+
#
|
99
|
+
# Control
|
100
|
+
#
|
149
101
|
|
150
102
|
desc "Start Apache"
|
151
103
|
task :start, :roles => :web do
|
152
|
-
|
104
|
+
run "#{sudo} /etc/init.d/apache2 start"
|
153
105
|
end
|
154
106
|
|
155
107
|
desc "Stop Apache"
|
156
108
|
task :stop, :roles => :web do
|
157
|
-
|
109
|
+
run "#{sudo} /etc/init.d/apache2 stop"
|
158
110
|
end
|
159
111
|
|
160
112
|
desc "Restart Apache"
|
161
113
|
task :restart, :roles => :web do
|
162
|
-
|
114
|
+
run "#{sudo} /etc/init.d/apache2 restart"
|
163
115
|
end
|
164
116
|
|
165
117
|
desc "Reload Apache"
|
166
118
|
task :reload, :roles => :web do
|
167
|
-
|
119
|
+
run "#{sudo} /etc/init.d/apache2 force-reload"
|
168
120
|
end
|
169
121
|
|
170
|
-
desc "Set
|
122
|
+
desc "Set Apache to start on boot"
|
171
123
|
task :activate, :roles => :web do
|
172
|
-
|
124
|
+
run "#{sudo} update-rc.d apache2 defaults"
|
173
125
|
end
|
174
126
|
|
175
|
-
desc "Set
|
127
|
+
desc "Set Apache to not start on boot"
|
176
128
|
task :deactivate, :roles => :web do
|
177
|
-
|
129
|
+
run "#{sudo} update-rc.d -f apache2 remove"
|
178
130
|
end
|
179
131
|
|
180
|
-
|
181
|
-
|
132
|
+
# Apache vhost extras
|
133
|
+
#
|
134
|
+
# These are only used for generating vhost files with:
|
135
|
+
#
|
136
|
+
# cap deprec:apache:vhost
|
137
|
+
#
|
138
|
+
set(:apache_vhost_domain) { Capistrano::CLI.ui.ask 'Primary domain' }
|
139
|
+
set(:apache_vhost_server_alii) {
|
140
|
+
Capistrano::CLI.ui.ask('ServerAlii (space separated)' ).split(' ')
|
141
|
+
}
|
142
|
+
set :apache_vhost_access_log_type, 'combined'
|
143
|
+
set :apache_vhost_canonicalize_hostname, true
|
144
|
+
set(:apache_vhost_access_log) {
|
145
|
+
File.join(apache_log_dir, "#{apache_vhost_domain}-access.log")
|
146
|
+
}
|
147
|
+
set(:apache_vhost_error_log) {
|
148
|
+
File.join(apache_log_dir, "#{apache_vhost_domain}-error.log")
|
149
|
+
}
|
150
|
+
set(:apache_vhost_document_root) {
|
151
|
+
File.join('/var/apps', "#{apache_vhost_domain}", 'public')
|
152
|
+
}
|
153
|
+
set :apache_vhost_rack_env, false
|
154
|
+
#
|
155
|
+
task :vhost do
|
156
|
+
file = {
|
157
|
+
:template => 'vhost.erb',
|
158
|
+
:path => "/etc/apache2/sites-available/#{apache_vhost_domain}",
|
159
|
+
:mode => 0644,
|
160
|
+
:owner => 'root:root'
|
161
|
+
}
|
162
|
+
if ! File.exists? 'config'
|
163
|
+
file[:path] = "../../#{apache_vhost_domain}"
|
164
|
+
end
|
165
|
+
deprec2.render_template(:apache, file)
|
182
166
|
end
|
183
167
|
|
184
|
-
|
185
|
-
# not yet implemented
|
186
|
-
end
|
187
|
-
|
168
|
+
# End apache vhost extras
|
188
169
|
end
|
189
170
|
end
|
190
171
|
end
|