deprec 2.1.19 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,6 +1,6 @@
|
|
1
1
|
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
2
2
|
Capistrano::Configuration.instance(:must_exist).load do
|
3
|
-
|
3
|
+
|
4
4
|
# Set the value if not already set
|
5
5
|
# This method is accessible to all recipe files
|
6
6
|
def self.default(name, *args, &block)
|
@@ -24,56 +24,38 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
24
24
|
# For each service, the details of the file to download and options
|
25
25
|
# to configure, build and install the service
|
26
26
|
SRC_PACKAGES = {} unless defined?(SRC_PACKAGES)
|
27
|
-
|
28
|
-
#
|
27
|
+
|
28
|
+
# deprec defines some generic recipes for common services
|
29
|
+
# including ruby interpreter, web, app and database servers
|
30
|
+
#
|
31
|
+
# They default to my current favourites which you can over ride
|
32
|
+
#
|
33
|
+
# Service options
|
29
34
|
CHOICES_RUBY_VM = [:mri, :ree]
|
30
|
-
CHOICES_WEBSERVER = [:
|
31
|
-
CHOICES_APPSERVER = [:
|
35
|
+
CHOICES_WEBSERVER = [:apache, :none] # :nginx not recipes out of date
|
36
|
+
CHOICES_APPSERVER = [:passenger, :none] # any colour you like guys
|
32
37
|
CHOICES_DATABASE = [:mysql, :postgresql, :sqlite, :none]
|
33
|
-
|
34
|
-
# Service defaults
|
35
|
-
#
|
36
|
-
# The defaults below are legacy values to support older deployments.
|
37
|
-
# Newly generated deploy.rb files have use apache, passenger and ree
|
38
|
-
default :ruby_vm_type, :ree
|
39
|
-
default :web_server_type, :apache
|
40
|
-
default :app_server_type, :passenger
|
41
|
-
default :db_server_type, :mysql
|
42
|
-
#
|
43
|
-
# default(:web_server_type) do
|
44
|
-
# Capistrano::CLI.ui.choose do |menu|
|
45
|
-
# CHOICES_WEBSERVER.each {|c| menu.choice(c)}
|
46
|
-
# menu.header = "select webserver type"
|
47
|
-
# end
|
48
|
-
# end
|
49
38
|
#
|
50
|
-
#
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# end
|
56
|
-
#
|
57
|
-
# default(:db_server_type) do
|
58
|
-
# Capistrano::CLI.ui.choose do |menu|
|
59
|
-
# CHOICES_DATABASE.each {|c| menu.choice(c)}
|
60
|
-
# menu.header = "select database server type"
|
61
|
-
# end
|
62
|
-
# end
|
39
|
+
# Service defaults
|
40
|
+
set :ruby_vm_type, :mri
|
41
|
+
set :web_server_type, :apache
|
42
|
+
set :app_server_type, :passenger
|
43
|
+
set :db_server_type, :mysql
|
63
44
|
|
64
|
-
|
45
|
+
# Prompt user for missing values if not supplied
|
46
|
+
set(:application) do
|
65
47
|
Capistrano::CLI.ui.ask "Enter name of project(no spaces)" do |q|
|
66
48
|
q.validate = /^[0-9a-z_]*$/
|
67
49
|
end
|
68
50
|
end
|
69
51
|
|
70
|
-
|
52
|
+
set(:domain) do
|
71
53
|
Capistrano::CLI.ui.ask "Enter domain name for project" do |q|
|
72
54
|
q.validate = /^[0-9a-z_\.]*$/
|
73
55
|
end
|
74
56
|
end
|
75
57
|
|
76
|
-
|
58
|
+
set(:repository) do
|
77
59
|
Capistrano::CLI.ui.ask "Enter repository URL for project" do |q|
|
78
60
|
# q.validate = //
|
79
61
|
end
|
@@ -84,23 +66,23 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
84
66
|
# :invoke_command "command", :via => run_method
|
85
67
|
# override this value if sudo is not an option
|
86
68
|
# in that case, your use will need the correct privileges
|
87
|
-
|
69
|
+
set :run_method, :sudo
|
88
70
|
|
89
|
-
|
71
|
+
set(:backup_dir) { '/var/backups'}
|
90
72
|
|
91
73
|
# XXX rails deploy stuff
|
92
|
-
set :apps_root,
|
93
|
-
|
94
|
-
|
95
|
-
|
74
|
+
set :apps_root, '/srv' # parent dir for apps
|
75
|
+
set(:deploy_to) { File.join(apps_root, application) } # dir for current app
|
76
|
+
set(:current_path) { File.join(deploy_to, "current") }
|
77
|
+
set(:shared_path) { File.join(deploy_to, "shared") }
|
96
78
|
|
97
79
|
# XXX more rails deploy stuff?
|
98
80
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
81
|
+
set :user, ENV['USER'] # user who is deploying
|
82
|
+
set :group, 'deploy' # deployment group
|
83
|
+
set(:group_src) { group } # group ownership for src dir
|
84
|
+
set :src_dir, '/usr/local/src' # 3rd party src on servers lives here
|
85
|
+
set(:web_server_aliases) { domain.match(/^www/) ? [] : ["www.#{domain}"] }
|
104
86
|
|
105
87
|
# XXX for some reason this is causing "before deprec:rails:install" to be executed twice
|
106
88
|
on :load, 'deprec:connect_canonical_tasks'
|
data/lib/deprec/recipes/git.rb
CHANGED
@@ -3,94 +3,11 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
3
3
|
namespace :deprec do
|
4
4
|
namespace :git do
|
5
5
|
|
6
|
-
|
7
|
-
set :git_group, 'git'
|
8
|
-
set :git_port, '9418'
|
9
|
-
set :git_keys_file, '/home/git/.ssh/authorized_keys'
|
10
|
-
set :git_root, '/var/git'
|
11
|
-
|
12
|
-
SRC_PACKAGES[:git] = {
|
13
|
-
:url => "http://kernel.org/pub/software/scm/git/git-1.6.4.3.tar.gz",
|
14
|
-
:md5sum => "95381cd27ad762c645c8e07f922879ce git-1.6.4.3.tar.gz"
|
15
|
-
}
|
16
|
-
|
6
|
+
# Ubuntu lucid has a new enough version of git
|
17
7
|
desc "Install git"
|
18
8
|
task :install do
|
19
|
-
|
20
|
-
deprec2.download_src(SRC_PACKAGES[:git], src_dir)
|
21
|
-
deprec2.install_from_src(SRC_PACKAGES[:git], src_dir)
|
22
|
-
# create_git_root
|
23
|
-
# create_git_user
|
24
|
-
end
|
25
|
-
|
26
|
-
# install dependencies for nginx
|
27
|
-
task :install_deps do
|
28
|
-
apt.install( {:base => %w(zlib1g-dev gettext libcurl4-gnutls-dev)}, :stable )
|
29
|
-
end
|
30
|
-
|
31
|
-
# "Start git server in local directory"
|
32
|
-
task :serve do
|
33
|
-
cmd = "git-daemon --verbose --port=#{git_port} --base-path=#{Dir.pwd} --base-path-relaxed"
|
34
|
-
puts cmd
|
35
|
-
`#{cmd}`
|
36
|
-
end
|
37
|
-
|
38
|
-
desc "Create git repos for current dir"
|
39
|
-
task :init do
|
40
|
-
`git init`
|
41
|
-
create_gitignore
|
42
|
-
create_files_in_empty_dirs
|
43
|
-
`git add . && git commit -m 'initial import'`
|
44
|
-
end
|
45
|
-
|
46
|
-
task :create_gitignore do
|
47
|
-
system("echo '.DS_Store' >> .gitignore") # files sometimes created by OSX
|
48
|
-
system("echo 'log/*' >> .gitignore") if File.directory?('log')
|
49
|
-
system("echo 'tmp/**/*' >> .gitignore") if File.directory?('tmp')
|
9
|
+
apt.install( {:base => %w(git-core)}, :stable )
|
50
10
|
end
|
51
|
-
|
52
|
-
task :create_files_in_empty_dirs do
|
53
|
-
%w(log tmp).each { |dir|
|
54
|
-
system("touch #{dir}/.gitignore") if File.directory?(dir)
|
55
|
-
}
|
56
|
-
end
|
57
|
-
|
58
|
-
desc "Create remote origin for current dir"
|
59
|
-
task :create_remote_origin do
|
60
|
-
File.directory?('.git') || init
|
61
|
-
|
62
|
-
# Push to remote git repo
|
63
|
-
hostname = capture "echo $CAPISTRANO:HOST$"
|
64
|
-
system "git remote add origin git@#{hostname.chomp}:#{application}"
|
65
|
-
system "git push origin master:refs/heads/master"
|
66
|
-
|
67
|
-
puts
|
68
|
-
puts "New remote Git repo: #{git_user}@#{hostname.chomp}:#{application}"
|
69
|
-
puts
|
70
|
-
|
71
|
-
# File.open('.git/config', 'w') do |c|
|
72
|
-
# c.write 'Add the following to .git/config'
|
73
|
-
# c.write '[branch "master"]'
|
74
|
-
# c.write ' remote = origin'
|
75
|
-
# c.write ' merge = refs/heads/master'
|
76
|
-
# end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
# Create root dir for git repositories
|
81
|
-
task :create_git_root do
|
82
|
-
deprec2.mkdir(git_root, :mode => 02775, :owner => git_user, :group => git_group, :via => :sudo)
|
83
|
-
sudo "chmod -R g+w #{git_root}"
|
84
|
-
end
|
85
|
-
|
86
|
-
# regenerate git authorized keys file from users file in same dir
|
87
|
-
task :regenerate_authorized_keys do
|
88
|
-
sudo "echo '' > #{git_keys_file}"
|
89
|
-
sudo "for file in `ls #{git_keys_file}-*`; do cat $file >> #{git_keys_file}; echo \"\n\" >> #{git_keys_file} ; done"
|
90
|
-
sudo "chown #{git_user}.#{git_group} #{git_keys_file}"
|
91
|
-
sudo "chmod 0600 #{git_keys_file}"
|
92
|
-
end
|
93
|
-
|
94
11
|
|
95
12
|
end
|
96
13
|
end
|
@@ -4,20 +4,19 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
4
4
|
namespace :haproxy do
|
5
5
|
|
6
6
|
SRC_PACKAGES[:haproxy] = {
|
7
|
-
:md5sum => "
|
8
|
-
:url => "http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.
|
7
|
+
:md5sum => "c1b4fc6028c6d8e23dde8c91ff47eabe haproxy-1.4.15.tar.gz",
|
8
|
+
:url => "http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.15.tar.gz",
|
9
9
|
:configure => '',
|
10
10
|
:make => "make TARGET=linux26"
|
11
11
|
}
|
12
12
|
|
13
13
|
desc "Install haproxy"
|
14
14
|
task :install, :roles => :haproxy do
|
15
|
-
install_deps
|
16
15
|
deprec2.download_src(SRC_PACKAGES[:haproxy], src_dir)
|
17
16
|
deprec2.install_from_src(SRC_PACKAGES[:haproxy], src_dir)
|
18
17
|
config
|
19
18
|
activate
|
20
|
-
create_check_file
|
19
|
+
# create_check_file
|
21
20
|
end
|
22
21
|
|
23
22
|
# default config expects this file in web root
|
@@ -25,9 +24,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
25
24
|
sudo "test -d /var/www && #{sudo} touch /var/www/check.txt"
|
26
25
|
end
|
27
26
|
|
28
|
-
task :install_deps, :roles => :haproxy do
|
29
|
-
apt.install( {:base => %w(build-essential)}, :stable )
|
30
|
-
end
|
31
27
|
|
32
28
|
SYSTEM_CONFIG_FILES[:haproxy] = [
|
33
29
|
|
@@ -45,10 +41,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
45
41
|
|
46
42
|
PROJECT_CONFIG_FILES[:haproxy] = [
|
47
43
|
|
48
|
-
# {:template => "example.conf.erb",
|
49
|
-
# :path => 'conf/example.conf',
|
50
|
-
# :mode => 0755,
|
51
|
-
# :owner => 'root:root'}
|
52
44
|
]
|
53
45
|
|
54
46
|
desc "Generate configuration files for haproxy from template(s)"
|
data/lib/deprec/recipes/mri.rb
CHANGED
@@ -4,53 +4,36 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
4
4
|
namespace :deprec do
|
5
5
|
namespace :mri do
|
6
6
|
|
7
|
-
SRC_PACKAGES[
|
8
|
-
:md5sum => "
|
9
|
-
:url => "ftp://ftp.ruby-lang.org
|
7
|
+
SRC_PACKAGES['ruby-1.8.7-p330'] = {
|
8
|
+
:md5sum => "50a49edb787211598d08e756e733e42e ruby-1.8.7-p330.tar.gz",
|
9
|
+
:url => "ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.gz",
|
10
|
+
:deps => %w(zlib1g-dev libssl-dev libncurses5-dev libreadline5-dev),
|
10
11
|
:configure => "./configure --with-readline-dir=/usr/local;"
|
11
12
|
}
|
12
|
-
|
13
|
-
desc "Install Ruby"
|
14
|
-
task :install do
|
15
|
-
install_deps
|
16
|
-
deprec2.download_src(SRC_PACKAGES[:mri], src_dir)
|
17
|
-
deprec2.install_from_src(SRC_PACKAGES[:mri], src_dir)
|
18
|
-
# Ruby versions from 1.9.1 install rubygems
|
19
|
-
# top.deprec.rubygems.install
|
20
|
-
end
|
21
|
-
|
22
|
-
task :install_deps do
|
23
|
-
apt.install( {:base => %w(zlib1g-dev libssl-dev libncurses5-dev libreadline5-dev)}, :stable )
|
24
|
-
end
|
25
13
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
SRC_PACKAGES[:rubygems] = {
|
34
|
-
:md5sum => "e85cfadd025ff6ab689375adbf344bbe rubygems-1.3.7.tgz",
|
35
|
-
:url => "http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz",
|
36
|
-
:configure => "",
|
37
|
-
:make => "",
|
38
|
-
:install => 'ruby setup.rb;'
|
14
|
+
SRC_PACKAGES['ruby-1.9.2-p180'] = {
|
15
|
+
:md5sum => "0d6953820c9918820dd916e79f4bfde8 ruby-1.9.2-p180.tar.gz",
|
16
|
+
:url => "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz",
|
17
|
+
:deps => %w(zlib1g-dev libssl-dev libncurses5-dev libreadline5-dev),
|
18
|
+
:configure => "./configure",
|
19
|
+
:post_install => 'sudo gem update --system'
|
39
20
|
}
|
40
|
-
|
41
|
-
|
21
|
+
|
22
|
+
src_package_options = SRC_PACKAGES.keys.select{|k| k.match /^ruby-\d\.\d\.\d/ }
|
23
|
+
set(:mri_src_package) {
|
24
|
+
puts "Select mri_src_package from list:"
|
25
|
+
Capistrano::CLI.ui.choose do |menu|
|
26
|
+
menu.choices(*src_package_options)
|
27
|
+
end
|
28
|
+
}
|
29
|
+
|
30
|
+
desc "Install Ruby"
|
42
31
|
task :install do
|
43
|
-
|
44
|
-
deprec2.
|
45
|
-
deprec2.install_from_src(SRC_PACKAGES[:rubygems], src_dir)
|
46
|
-
# gem2.upgrade # you may not want to upgrade your gems right now
|
47
|
-
end
|
48
|
-
|
49
|
-
# install dependencies for rubygems
|
50
|
-
task :install_deps do
|
32
|
+
deprec2.download_src(SRC_PACKAGES[mri_src_package])
|
33
|
+
deprec2.install_from_src(SRC_PACKAGES[mri_src_package])
|
51
34
|
end
|
52
35
|
|
53
36
|
end
|
54
|
-
|
55
37
|
end
|
38
|
+
|
56
39
|
end
|
data/lib/deprec/recipes/mysql.rb
CHANGED
@@ -10,15 +10,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
10
10
|
|
11
11
|
desc "Install mysql"
|
12
12
|
task :install, :roles => :db do
|
13
|
-
install_deps
|
14
|
-
config
|
15
|
-
start
|
16
|
-
# symlink_mysql_sockfile # XXX still needed?
|
17
|
-
end
|
18
|
-
|
19
|
-
# Install dependencies for Mysql
|
20
|
-
task :install_deps, :roles => :db do
|
21
13
|
apt.install( {:base => %w(mysql-server mysql-client libmysqlclient15-dev)}, :stable )
|
14
|
+
config
|
22
15
|
end
|
23
16
|
|
24
17
|
# Configuration
|
@@ -73,20 +66,10 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
73
66
|
task :reload, :roles => :db do
|
74
67
|
send(run_method, "/etc/init.d/mysql reload")
|
75
68
|
end
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
task :restore, :roles => :db do
|
82
|
-
end
|
83
|
-
|
84
|
-
desc "Create a mysql user"
|
85
|
-
task :create_user, :roles => :db do
|
86
|
-
# TBA
|
87
|
-
end
|
88
|
-
|
89
|
-
desc "Create a database"
|
69
|
+
|
70
|
+
|
71
|
+
# Extras (not sure if they still work)
|
72
|
+
# Create a database
|
90
73
|
task :create_database, :roles => :db do
|
91
74
|
cmd = "CREATE DATABASE IF NOT EXISTS #{db_name}"
|
92
75
|
run "mysql -u #{mysql_admin_user} -p -e '#{cmd}'" do |channel, stream, data|
|
@@ -96,7 +79,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
96
79
|
end
|
97
80
|
end
|
98
81
|
|
99
|
-
|
82
|
+
# "Grant user access to database"
|
100
83
|
task :grant_user_access_to_database, :roles => :db do
|
101
84
|
cmd = "GRANT ALL PRIVILEGES ON #{db_name}.* TO '#{db_user}'@localhost IDENTIFIED BY '#{db_password}';"
|
102
85
|
run "mysql -u #{mysql_admin_user} -p #{db_name} -e \"#{cmd}\"" do |channel, stream, data|
|
@@ -10,7 +10,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
10
10
|
set(:nagios_admin_pass) { Capistrano::CLI.ui.ask "Enter password for nagiosadmin user" }
|
11
11
|
set :nagios_cmd_group, 'nagcmd' # Submit external commands through the web interface
|
12
12
|
set :nagios_htpasswd_file, '/usr/local/nagios/etc/htpasswd.users'
|
13
|
-
# default :application, 'nagios'
|
14
13
|
|
15
14
|
SRC_PACKAGES[:nagios] = {
|
16
15
|
:url => "http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz",
|
@@ -139,7 +138,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
139
138
|
|
140
139
|
desc "Push nagios config files to server"
|
141
140
|
task :config, :roles => :nagios do
|
142
|
-
default :application, 'nagios'
|
141
|
+
# default :application, 'nagios'
|
143
142
|
deprec2.push_configs(:nagios, SYSTEM_CONFIG_FILES[:nagios])
|
144
143
|
config_check
|
145
144
|
restart
|
@@ -150,20 +149,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
150
149
|
send(run_method, "/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg")
|
151
150
|
end
|
152
151
|
|
153
|
-
# desc "Set Nagios to start on boot"
|
154
|
-
# task :activate, :roles => :nagios do
|
155
|
-
# send(run_method, "update-rc.d nagios defaults")
|
156
|
-
# sudo "a2ensite nagios"
|
157
|
-
# top.deprec.apache.reload
|
158
|
-
# end
|
159
|
-
#
|
160
|
-
# desc "Set Nagios to not start on boot"
|
161
|
-
# task :deactivate, :roles => :nagios do
|
162
|
-
# send(run_method, "update-rc.d -f nagios remove")
|
163
|
-
# sudo "a2dissite nagios"
|
164
|
-
# top.deprec.apache.reload
|
165
|
-
# end
|
166
|
-
|
167
152
|
# Control
|
168
153
|
|
169
154
|
desc "Start Nagios"
|
@@ -232,7 +217,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
232
217
|
|
233
218
|
namespace :nrpe do
|
234
219
|
|
235
|
-
|
220
|
+
set :nrpe_enable_command_args, false # set to true to compile nrpe to accept arguments
|
236
221
|
# note that you'll need to set it before these recipes are loaded (e.g. in .caprc)
|
237
222
|
|
238
223
|
SRC_PACKAGES[:nrpe] = {
|
@@ -0,0 +1,180 @@
|
|
1
|
+
# Copyright 2006-2008 by Mike Bailey. All rights reserved.
|
2
|
+
require 'socket'
|
3
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
4
|
+
namespace :deprec do
|
5
|
+
namespace :nagios do
|
6
|
+
|
7
|
+
# Deprec generally ships with the upstream vendor defaults
|
8
|
+
#
|
9
|
+
# In this case we override the default settings Nagios ships with
|
10
|
+
# to enable external command checking. This is needed if you want
|
11
|
+
# to be able to control things via the web interface.
|
12
|
+
set :nagios_check_external_commands, 1
|
13
|
+
set :nagios_command_check_interval, '15s'
|
14
|
+
|
15
|
+
desc "Install Nagios"
|
16
|
+
task :install, :roles => :nagios do
|
17
|
+
apt.install(
|
18
|
+
{:base => %w(nagios3 nagios-plugins nagios-nrpe-plugin)}, :stable
|
19
|
+
)
|
20
|
+
cull_configs
|
21
|
+
config
|
22
|
+
fix_command_file
|
23
|
+
puts
|
24
|
+
puts "Nagios should be accessible at #{find_servers_for_task(current_task).collect{|u| "http://#{u}/nagios3"}.join(' ')}"
|
25
|
+
end
|
26
|
+
|
27
|
+
task :cull_configs, :roles => :nagios do
|
28
|
+
%w(/etc/nagios3/conf.d/localhost_nagios2.cfg
|
29
|
+
/etc/nagios3/conf.d/host-gateway_nagios3.cfg).each do |file|
|
30
|
+
run "if [ -f #{file} ]; then #{sudo} rm #{file}; fi"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
task :fix_command_file, :roles => :nagios do
|
35
|
+
stop
|
36
|
+
sleep 5 # Give the stop command time to work. Race condition. GROSS!!
|
37
|
+
run "(dpkg-statoverride --list | grep 'nagios www-data 2710 /var/lib/nagios3/rw') || #{sudo} dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw"
|
38
|
+
run "(dpkg-statoverride --list | grep 'nagios nagios 751 /var/lib/nagios3') ||
|
39
|
+
#{sudo} dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3"
|
40
|
+
# sleep 5
|
41
|
+
start
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "Grant a user access to the web interface"
|
45
|
+
task :htpass, :roles => :nagios do
|
46
|
+
target_user = Capistrano::CLI.ui.ask "Userid" do |q|
|
47
|
+
q.default = 'nagiosadmin'
|
48
|
+
end
|
49
|
+
htpasswd_file = 'config/nagios/usr/local/nagios/etc/htpasswd.users'
|
50
|
+
system "htpasswd #{htpasswd_file} #{target_user}"
|
51
|
+
config
|
52
|
+
end
|
53
|
+
|
54
|
+
# All of the config files have same owner/mode...
|
55
|
+
SYSTEM_CONFIG_FILES[:nagios] ||= []
|
56
|
+
%w(
|
57
|
+
apache2.conf
|
58
|
+
cgi.cfg
|
59
|
+
commands.cfg
|
60
|
+
htpasswd.users
|
61
|
+
nagios.cfg
|
62
|
+
conf.d/contacts_nagios2.cfg
|
63
|
+
conf.d/extinfo_nagios2.cfg
|
64
|
+
conf.d/generic-host_nagios2.cfg
|
65
|
+
conf.d/generic-service_nagios2.cfg
|
66
|
+
conf.d/hostgroups_nagios2.cfg
|
67
|
+
conf.d/services_nagios2.cfg
|
68
|
+
conf.d/timeperiods_nagios2.cfg
|
69
|
+
conf.d/hosts/localhost_nagios2.cfg
|
70
|
+
).each do |filename|
|
71
|
+
SYSTEM_CONFIG_FILES[:nagios] << {
|
72
|
+
:path => "/etc/nagios3/#{filename}",
|
73
|
+
:template => "#{filename}",
|
74
|
+
:mode => 0644,
|
75
|
+
:owner => 'root:root'
|
76
|
+
}
|
77
|
+
end
|
78
|
+
# ..except this one.
|
79
|
+
SYSTEM_CONFIG_FILES[:nagios] << {
|
80
|
+
:path => "/etc/nagios3/resource.cfg",
|
81
|
+
:template => "resource.cfg",
|
82
|
+
:mode => 0640,
|
83
|
+
:owner => 'root:nagios'
|
84
|
+
}
|
85
|
+
|
86
|
+
desc "Generate configuration file(s) for nagios from template(s)"
|
87
|
+
task :config_gen do
|
88
|
+
SYSTEM_CONFIG_FILES[:nagios].each do |file|
|
89
|
+
deprec2.render_template(:nagios, file)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
desc "Push nagios config files to server"
|
94
|
+
task :config, :roles => :nagios do
|
95
|
+
add_host_configs
|
96
|
+
deprec2.push_configs(:nagios, SYSTEM_CONFIG_FILES[:nagios])
|
97
|
+
config_check
|
98
|
+
reload
|
99
|
+
end
|
100
|
+
|
101
|
+
# Dynamically add host config files to SYSTEM_CONFIG_FILES[:nagios]
|
102
|
+
task :add_host_configs, :roles => :nagios do
|
103
|
+
host_conf_dir = 'config/nagios/etc/nagios3/conf.d/hosts'
|
104
|
+
if File.directory? host_conf_dir
|
105
|
+
Dir.foreach(host_conf_dir).reject{|f| f =~ /\.\.?$/}.each do |filename|
|
106
|
+
SYSTEM_CONFIG_FILES[:nagios] << {
|
107
|
+
:path => "/etc/nagios3/conf.d/hosts/#{filename}",
|
108
|
+
:mode => 0644,
|
109
|
+
:owner => 'root:root'
|
110
|
+
}
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
desc "Run Nagios config check"
|
116
|
+
task :config_check, :roles => :nagios do
|
117
|
+
run "#{sudo} /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg"
|
118
|
+
end
|
119
|
+
|
120
|
+
desc "Generate a nagios host config file"
|
121
|
+
task :gen_host do
|
122
|
+
set(:nagios_target_host_name) { Capistrano::CLI.ui.ask "hostname"}
|
123
|
+
set(:nagios_target_hostgroups) {
|
124
|
+
Capistrano::CLI.ui.ask "hostgroups" do |q|
|
125
|
+
q.default = 'linux-servers'
|
126
|
+
end
|
127
|
+
}
|
128
|
+
set(:nagios_target_address) {
|
129
|
+
Capistrano::CLI.ui.ask "ip address" do |q|
|
130
|
+
q.default = IPSocket.getaddress(nagios_target_host_name)
|
131
|
+
end
|
132
|
+
}
|
133
|
+
file = {
|
134
|
+
:path => "/etc/nagios3/conf.d/hosts/#{nagios_target_host_name}.cfg",
|
135
|
+
:template => "host_template.erb",
|
136
|
+
:mode => 0644,
|
137
|
+
:owner => 'root:root'
|
138
|
+
}
|
139
|
+
deprec2.render_template(:nagios, file)
|
140
|
+
puts
|
141
|
+
puts "You can push it to the server with:"
|
142
|
+
puts
|
143
|
+
puts " cap deprec:nagios:config"
|
144
|
+
puts
|
145
|
+
end
|
146
|
+
|
147
|
+
# Control
|
148
|
+
|
149
|
+
desc "Start Nagios"
|
150
|
+
task :start, :roles => :nagios do
|
151
|
+
run "#{sudo} /etc/init.d/nagios3 start"
|
152
|
+
end
|
153
|
+
|
154
|
+
desc "Stop Nagios"
|
155
|
+
task :stop, :roles => :nagios do
|
156
|
+
run "#{sudo} /etc/init.d/nagios3 stop"
|
157
|
+
end
|
158
|
+
|
159
|
+
desc "Restart Nagios"
|
160
|
+
task :restart, :roles => :nagios do
|
161
|
+
run "#{sudo} /etc/init.d/nagios3 restart"
|
162
|
+
end
|
163
|
+
|
164
|
+
desc "Reload Nagios"
|
165
|
+
task :reload, :roles => :nagios do
|
166
|
+
run "#{sudo} /etc/init.d/nagios3 reload"
|
167
|
+
end
|
168
|
+
|
169
|
+
task :backup, :roles => :web do
|
170
|
+
# not yet implemented
|
171
|
+
end
|
172
|
+
|
173
|
+
task :restore, :roles => :web do
|
174
|
+
# not yet implemented
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
180
|
+
end
|