pvcglue 0.1.25 → 0.1.26
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.
- checksums.yaml +4 -4
- data/lib/pvcglue.rb +4 -2
- data/lib/pvcglue/cli.rb +2 -3
- data/lib/pvcglue/cloud.rb +23 -0
- data/lib/pvcglue/configuration.rb +18 -0
- data/lib/pvcglue/local.rb +1 -1
- data/lib/pvcglue/monit.rb +32 -0
- data/lib/pvcglue/nodes.rb +1 -1
- data/lib/pvcglue/packages/monit-bootstrap.rb +117 -0
- data/lib/pvcglue/packages/monit-web.rb +10 -0
- data/lib/pvcglue/packages/role_web.rb +1 -0
- data/lib/pvcglue/packages/rvm.rb +2 -0
- data/lib/pvcglue/pvcify.rb +9 -0
- data/lib/pvcglue/templates/deploy.rb.erb +62 -33
- data/lib/pvcglue/templates/monit.app.monitrc.erb +33 -0
- data/lib/pvcglue/templates/monit.etc-default.erb +1 -0
- data/lib/pvcglue/templates/monit.init.d.erb +105 -0
- data/lib/pvcglue/templates/monit.monitrc.erb +279 -0
- data/lib/pvcglue/templates/monit.upstart-conf.erb +34 -0
- data/lib/pvcglue/version.rb +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04b3f92f71e7038cd74f78ac832f0d93604cd2dc
|
4
|
+
data.tar.gz: e4cf248f20b858e705e2f81496f59f1557c0d428
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad1bd550284cb3b4e7d59e980b7e14b4845d7d8a1185afdd832723914fe12cce6dd1a666e74bb4d6852cadc11e1ddf355cae17963c057291ec760b5cfa233da1
|
7
|
+
data.tar.gz: 71422b3c7ae4b4396b61018d4bdbb2ca57b1e59072bd3a2289b29523584be371808a0285d04b65bf63ecff05a803d7f1735221ca1a52284a55375a9d1de177e0
|
data/lib/pvcglue.rb
CHANGED
@@ -11,8 +11,10 @@ require "pvcglue/deploy"
|
|
11
11
|
require "pvcglue/capistrano"
|
12
12
|
require "pvcglue/ssl"
|
13
13
|
require "pvcglue/db"
|
14
|
-
require "pvcglue/toml_pvc_dumper
|
15
|
-
require "pvcglue/local
|
14
|
+
require "pvcglue/toml_pvc_dumper"
|
15
|
+
require "pvcglue/local"
|
16
|
+
require "pvcglue/monit"
|
17
|
+
require "pvcglue/pvcify"
|
16
18
|
require "tilt"
|
17
19
|
|
18
20
|
# puts File.join(File.dirname(__FILE__), 'pvcglue', 'packages', '*.rb')
|
data/lib/pvcglue/cli.rb
CHANGED
@@ -59,7 +59,7 @@ module Pvcglue
|
|
59
59
|
# puts node.inspect
|
60
60
|
puts "Connection to #{node_name} (#{node_data[:public_ip]}) as user 'deploy'..."
|
61
61
|
working_dir = Pvcglue.cloud.deploy_to_app_current_dir
|
62
|
-
system(%(ssh -t deploy@#{node_data[:public_ip]} "cd #{working_dir} && echo 'Starting #{options[:stage].upcase} Rails console in #{working_dir}' &&
|
62
|
+
system(%(ssh -t deploy@#{node_data[:public_ip]} "cd #{working_dir} && echo 'Starting #{options[:stage].upcase} Rails console in #{working_dir}' && bundle exec rails c #{options[:stage].downcase}"))
|
63
63
|
|
64
64
|
end
|
65
65
|
|
@@ -170,8 +170,7 @@ module Pvcglue
|
|
170
170
|
method_option :stage, :required => true, :aliases => "-s"
|
171
171
|
|
172
172
|
def pvcify
|
173
|
-
Pvcglue::
|
174
|
-
Pvcglue::Db.configure_database_yml
|
173
|
+
Pvcglue::Pvcify.run
|
175
174
|
end
|
176
175
|
|
177
176
|
desc "start", "start local virtual machines (build first, if required)"
|
data/lib/pvcglue/cloud.rb
CHANGED
@@ -27,6 +27,11 @@ module Pvcglue
|
|
27
27
|
@current_node
|
28
28
|
end
|
29
29
|
|
30
|
+
def current_node_data
|
31
|
+
current_node.values.first
|
32
|
+
end
|
33
|
+
|
34
|
+
|
30
35
|
def current_hostname
|
31
36
|
raise "Current current_hostname not set." if @current_hostname.nil?
|
32
37
|
@current_hostname
|
@@ -122,6 +127,10 @@ module Pvcglue
|
|
122
127
|
File.join(deploy_to_app_dir, 'shared')
|
123
128
|
end
|
124
129
|
|
130
|
+
def deploy_to_app_shared_pids_dir
|
131
|
+
File.join(deploy_to_app_shared_dir, 'pids')
|
132
|
+
end
|
133
|
+
|
125
134
|
def env_file_name
|
126
135
|
File.join(deploy_to_app_shared_dir, ".env.#{stage_name_validated}")
|
127
136
|
end
|
@@ -130,6 +139,10 @@ module Pvcglue
|
|
130
139
|
File.join(deploy_to_app_current_dir, 'public')
|
131
140
|
end
|
132
141
|
|
142
|
+
def deploy_to_app_current_bin_dir
|
143
|
+
File.join(deploy_to_app_current_dir, Pvcglue.configuration.rails_bin_dir)
|
144
|
+
end
|
145
|
+
|
133
146
|
def maintenance_files_dir
|
134
147
|
File.join(deploy_to_app_dir, 'maintenance')
|
135
148
|
end
|
@@ -301,6 +314,16 @@ module Pvcglue
|
|
301
314
|
puts "Setting port_in_node_context to #{@port_in_node_context}"
|
302
315
|
@port_in_node_context
|
303
316
|
end
|
317
|
+
|
318
|
+
def delayed_job_worker_count
|
319
|
+
return 0 unless gems[:delayed_job]
|
320
|
+
(stage[:delayed_job_workers] || 1).to_i
|
321
|
+
end
|
322
|
+
|
323
|
+
def resque_worker_count
|
324
|
+
return 0 unless gems[:resque]
|
325
|
+
(stage[:resque_workers] || 1).to_i
|
326
|
+
end
|
304
327
|
end
|
305
328
|
|
306
329
|
def self.cloud
|
@@ -170,6 +170,24 @@ module Pvcglue
|
|
170
170
|
File.read(ruby_version_file_name).strip
|
171
171
|
end
|
172
172
|
|
173
|
+
def rails_version
|
174
|
+
@rails_version ||= begin
|
175
|
+
`bundle exec rails -v`.sub('Rails ', '').strip
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def rails_version_major
|
180
|
+
rails_version.split('.').first
|
181
|
+
end
|
182
|
+
|
183
|
+
def rails_bin_dir
|
184
|
+
if rails_version_major.to_i >= 4
|
185
|
+
'bin'
|
186
|
+
else
|
187
|
+
'script'
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
173
191
|
def web_app_base_dir
|
174
192
|
'/sites'
|
175
193
|
end
|
data/lib/pvcglue/local.rb
CHANGED
@@ -253,7 +253,7 @@ module Pvcglue
|
|
253
253
|
end
|
254
254
|
raise "Public IP not found" unless machines[machine][:public_ip]
|
255
255
|
raise "Private IP not found" unless machines[machine][:private_ip]
|
256
|
-
puts "Adding
|
256
|
+
puts "Adding your public key to the root user for #{machine_name}..."
|
257
257
|
# cat ~/.ssh/id_rsa.pub | vagrant ssh manager -c 'sudo tee /root/.ssh/authorized_keys'
|
258
258
|
raise $? unless system %Q(cat ~/.ssh/id_rsa.pub | vagrant ssh #{machine_name} -c 'sudo tee /root/.ssh/authorized_keys')
|
259
259
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Pvcglue
|
2
|
+
class Monit
|
3
|
+
def self.monitify
|
4
|
+
Pvcglue.render_template('monit.app.monitrc.erb', monitrc_file_name)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.monitrc_file_name
|
8
|
+
File.join(Pvcglue.configuration.application_dir, 'monitrc')
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.worker_control_name
|
12
|
+
"#{Pvcglue.cloud.app_and_stage_name}_worker_control"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.delayed_job_queue_name(n)
|
16
|
+
"#{Pvcglue.cloud.app_and_stage_name}_delayed_job.#{n}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.resque_queue_name(n)
|
20
|
+
"#{Pvcglue.cloud.app_and_stage_name}_resque_worker.#{n}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.resque_pid_file_name(n)
|
24
|
+
"#{Pvcglue.cloud.deploy_to_app_shared_pids_dir}/resque_worker.#{n}.pid"
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.safe_name(s)
|
28
|
+
s.gsub(/\W/, '_')
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/pvcglue/nodes.rb
CHANGED
@@ -0,0 +1,117 @@
|
|
1
|
+
# check process delayed_job.0
|
2
|
+
# with pidfile /sites/pvcglue_dev_box/local/shared/pids/delayed_job.0.pid
|
3
|
+
# start program = "/home/deploy/.rvm/bin/rvm-shell -c 'cd /sites/pvcglue_dev_box/local/current && RAILS_ENV=local /sites/pvcglue_dev_box/local/current/bin/delayed_job start -i 0 --pid-dir=/sites/pvcglue_dev_box/local/shared/pids/'" as uid deploy and gid deploy
|
4
|
+
# stop program = "/home/deploy/.rvm/bin/rvm-shell -c 'cd /sites/pvcglue_dev_box/local/current && RAILS_ENV=local /sites/pvcglue_dev_box/local/current/bin/delayed_job stop -i 0 --pid-dir=/sites/pvcglue_dev_box/local/shared/pids/'" as uid deploy and gid deploy
|
5
|
+
# group delayed
|
6
|
+
# depends on deploy_in_progress
|
7
|
+
#
|
8
|
+
# check file deploy_in_progress with path /sites/pvcglue_dev_box/local/shared/pids/deploying
|
9
|
+
# if does not exist then exec "/bin/echo Does not exist" else if succeeded then exec "/bin/echo Exists"
|
10
|
+
# # group delayed
|
11
|
+
# # if changed timestamp then exec "/bin/echo"
|
12
|
+
#
|
13
|
+
# check process monit
|
14
|
+
# with pidfile /var/run/monit.pid
|
15
|
+
# restart program = "/usr/bin/monit reload"
|
16
|
+
|
17
|
+
# curl http://localhost:2812/monit -d "action=restart"
|
18
|
+
|
19
|
+
# curl http://localhost:2812/deploy_in_progress -d "action=start"
|
20
|
+
|
21
|
+
# For development
|
22
|
+
#
|
23
|
+
# Stop the service:
|
24
|
+
# sudo service monit stop
|
25
|
+
#
|
26
|
+
# Run it manually:
|
27
|
+
# sudo monit -Iv
|
28
|
+
#
|
29
|
+
#
|
30
|
+
package 'monit-bootstrap' do
|
31
|
+
depends_on 'monit-install'
|
32
|
+
depends_on 'monit-upstart'
|
33
|
+
end
|
34
|
+
|
35
|
+
package 'monit-install' do
|
36
|
+
depends_on 'monit-config-files'
|
37
|
+
|
38
|
+
validate do
|
39
|
+
# next: thanks to http://stackoverflow.com/questions/2325471/using-return-in-a-ruby-block
|
40
|
+
next false unless run('monit -V') =~ /5\.14/
|
41
|
+
next false unless sudo('monit -t') =~ /Control file syntax OK/
|
42
|
+
sudo('monit status') =~ /status\s*Running/
|
43
|
+
end
|
44
|
+
|
45
|
+
apply do
|
46
|
+
# Thanks to https://rtcamp.com/tutorials/monitoring/monit/
|
47
|
+
sudo 'rm monit-5.14-linux-x64.tar.gz'
|
48
|
+
sudo 'wget https://mmonit.com/monit/dist/binary/5.14/monit-5.14-linux-x64.tar.gz'
|
49
|
+
sudo 'tar zxvf monit-5.14-linux-x64.tar.gz'
|
50
|
+
sudo 'cp ~/monit-5.14/bin/monit /usr/bin/monit'
|
51
|
+
sudo 'ln -s /etc/monit/monitrc /etc/monitrc'
|
52
|
+
sudo 'mkdir -p /var/lib/monit/'
|
53
|
+
sudo 'mkdir -p /etc/monit/conf.d/'
|
54
|
+
sudo 'monit quit' # quit 'manually' and then start it as a service (or service monit stop, doesn't)
|
55
|
+
sudo 'service monit start'
|
56
|
+
end
|
57
|
+
|
58
|
+
remove do
|
59
|
+
raise "removing monit not supported, yet."
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
package 'monit-config-files' do
|
64
|
+
file({
|
65
|
+
:template => Pvcglue.template_file_name('monit.init.d.erb'),
|
66
|
+
:destination => '/etc/init.d/monit',
|
67
|
+
:permissions => 0755,
|
68
|
+
:user => 'root',
|
69
|
+
:group => 'root'
|
70
|
+
}) { sudo('service monit restart') }
|
71
|
+
|
72
|
+
file({
|
73
|
+
:template => Pvcglue.template_file_name('monit.monitrc.erb'),
|
74
|
+
:destination => '/etc/monit/monitrc',
|
75
|
+
:create_dirs => true,
|
76
|
+
:permissions => 0700,
|
77
|
+
:user => 'root',
|
78
|
+
:group => 'root'
|
79
|
+
}) { sudo('service monit restart') }
|
80
|
+
|
81
|
+
file({
|
82
|
+
:template => Pvcglue.template_file_name('monit.etc-default.erb'),
|
83
|
+
:destination => '/etc/default/monit',
|
84
|
+
:permissions => 0644,
|
85
|
+
:user => 'root',
|
86
|
+
:group => 'root'
|
87
|
+
}) {}
|
88
|
+
end
|
89
|
+
|
90
|
+
package 'monit-upstart' do
|
91
|
+
depends_on 'monit-upstart-files'
|
92
|
+
|
93
|
+
validate do
|
94
|
+
sudo('initctl status monit') =~ /monit start\/running/
|
95
|
+
end
|
96
|
+
|
97
|
+
apply do
|
98
|
+
sudo 'service monit start'
|
99
|
+
end
|
100
|
+
|
101
|
+
remove do
|
102
|
+
raise "removing monit not supported, yet."
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
package 'monit-upstart-files' do
|
107
|
+
file({
|
108
|
+
:template => Pvcglue.template_file_name('monit.upstart-conf.erb'),
|
109
|
+
:destination => '/etc/init/monit.conf',
|
110
|
+
:permissions => 0644,
|
111
|
+
:user => 'root',
|
112
|
+
:group => 'root'
|
113
|
+
}) { sudo 'initctl reload-configuration' }
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
package 'monit-web' do
|
2
|
+
depends_on 'monit-bootstrap'
|
3
|
+
|
4
|
+
apply do
|
5
|
+
#include /etc/monit/conf.d/*
|
6
|
+
sudo "ln -s #{Pvcglue.cloud.deploy_to_app_current_dir}/monitrc /etc/monit/conf.d/#{Pvcglue.cloud.app_name}_#{Pvcglue.cloud.stage_name}.conf"
|
7
|
+
# sudo 'service monit restart'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
data/lib/pvcglue/packages/rvm.rb
CHANGED
@@ -8,6 +8,8 @@ package 'rvm' do
|
|
8
8
|
|
9
9
|
apply do
|
10
10
|
run 'gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3'
|
11
|
+
run 'gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3' # Do it again, the first time only sets things up, and does not import the keys
|
12
|
+
# run 'curl -sSL https://rvm.io/mpapis.asc | gpg --import -'
|
11
13
|
run '\curl -sSL https://get.rvm.io | bash -s stable --with-default-gems="bundler"'
|
12
14
|
run "rvm requirements"
|
13
15
|
end
|
@@ -23,48 +23,77 @@ task :invoke, [:command] => 'deploy:set_rails_env' do |task, args|
|
|
23
23
|
end
|
24
24
|
|
25
25
|
namespace :deploy do
|
26
|
-
<% if Pvcglue.cloud.gems[:delayed_job] %>
|
27
|
-
def args
|
28
|
-
fetch(:delayed_job_args, "")
|
29
|
-
end
|
30
|
-
|
31
|
-
def delayed_job_roles
|
32
|
-
fetch(:delayed_job_server_role, :app)
|
33
|
-
end
|
26
|
+
<% if Pvcglue.cloud.gems[:delayed_job] || Pvcglue.cloud.gems[:resque] %>
|
34
27
|
|
35
|
-
desc 'Stop the
|
36
|
-
task :
|
37
|
-
on roles(
|
38
|
-
|
39
|
-
with rails_env: fetch(:rails_env) do
|
40
|
-
execute :'script/delayed_job', :stop
|
41
|
-
end
|
42
|
-
end
|
28
|
+
desc 'Stop the workers'
|
29
|
+
task :stop_workers do
|
30
|
+
on roles(:app) do
|
31
|
+
execute :'curl -sS http://localhost:2812/<%= Pvcglue::Monit.worker_control_name %> -d "action=stop"'
|
43
32
|
end
|
44
33
|
end
|
45
34
|
|
46
|
-
desc 'Start the
|
47
|
-
task :
|
48
|
-
on roles(
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
35
|
+
desc 'Start the workers'
|
36
|
+
task :start_workers do
|
37
|
+
on roles(:app) do
|
38
|
+
execute :'curl -sS http://localhost:2812/monit_reload -d "action=restart"'
|
39
|
+
execute :'sleep 5' # must wait for reload
|
40
|
+
execute :'curl -sS http://localhost:2812/<%= Pvcglue::Monit.worker_control_name %> -d "action=start"'
|
54
41
|
end
|
55
42
|
end
|
56
43
|
|
57
|
-
desc 'Restart the
|
58
|
-
task :
|
59
|
-
on roles(
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
44
|
+
desc 'Restart the workers'
|
45
|
+
task :restart_workers do
|
46
|
+
on roles(:app) do
|
47
|
+
execute :'curl -sS http://localhost:2812/monit_reload -d "action=restart"'
|
48
|
+
execute :'sleep 5' # must wait for reload
|
49
|
+
execute :'curl -sS http://localhost:2812/<%= Pvcglue::Monit.worker_control_name %> -d "action=restart"'
|
65
50
|
end
|
66
51
|
end
|
67
52
|
|
53
|
+
after :started, :stop_workers
|
54
|
+
after :publishing, :start_workers
|
55
|
+
|
56
|
+
# def args
|
57
|
+
# fetch(:delayed_job_args, "")
|
58
|
+
# end
|
59
|
+
#
|
60
|
+
# def delayed_job_roles
|
61
|
+
# fetch(:delayed_job_server_role, :app)
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
# desc 'Stop the delayed_job process'
|
65
|
+
# task :delayed_job_stop do
|
66
|
+
# on roles(delayed_job_roles) do
|
67
|
+
# within release_path do
|
68
|
+
# with rails_env: fetch(:rails_env) do
|
69
|
+
# execute :'<%= Pvcglue.configuration.rails_bin_dir %>/delayed_job', :stop
|
70
|
+
# end
|
71
|
+
# end
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# desc 'Start the delayed_job process'
|
76
|
+
# task :delayed_job_start do
|
77
|
+
# on roles(delayed_job_roles) do
|
78
|
+
# within release_path do
|
79
|
+
# with rails_env: fetch(:rails_env) do
|
80
|
+
# execute :'<%= Pvcglue.configuration.rails_bin_dir %>/delayed_job', args, :start
|
81
|
+
# end
|
82
|
+
# end
|
83
|
+
# end
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# desc 'Restart the delayed_job process'
|
87
|
+
# task :delayed_job_restart do
|
88
|
+
# on roles(delayed_job_roles) do
|
89
|
+
# within release_path do
|
90
|
+
# with rails_env: fetch(:rails_env) do
|
91
|
+
# execute :'<%= Pvcglue.configuration.rails_bin_dir %>/delayed_job', args, :restart
|
92
|
+
# end
|
93
|
+
# end
|
94
|
+
# end
|
95
|
+
# end
|
96
|
+
|
68
97
|
#desc 'Restart Delayed Job'
|
69
98
|
#task :restart_delayed_job do
|
70
99
|
# on roles(:app), in: :sequence, wait: 5 do
|
@@ -77,7 +106,7 @@ namespace :deploy do
|
|
77
106
|
#end
|
78
107
|
|
79
108
|
|
80
|
-
after :publishing, :delayed_job_restart # calling this directly is a work-around due to "NoMethodError: undefined method `verbosity'" error when calling task from a task in capistrano 3.1.0 and SSHKit 1.3.0
|
109
|
+
# after :publishing, :delayed_job_restart # calling this directly is a work-around due to "NoMethodError: undefined method `verbosity'" error when calling task from a task in capistrano 3.1.0 and SSHKit 1.3.0
|
81
110
|
<% end %>
|
82
111
|
|
83
112
|
desc 'Restart passenger app'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Used to control the all of the workers that depend on it.
|
2
|
+
# Allows workers to be started/stopped without needing root, using the web interface
|
3
|
+
#
|
4
|
+
# Example
|
5
|
+
# curl http://localhost:2812/pvcglue_dev_box_local_control -d "action=start"
|
6
|
+
#
|
7
|
+
|
8
|
+
check file <%= Pvcglue::Monit.worker_control_name %> with path <%= "#{Pvcglue.cloud.deploy_to_app_shared_dir}/worker_control" %>
|
9
|
+
# this is a "no-op" so that the default monit actions do not execute
|
10
|
+
if does not exist then exec "/bin/true" else if succeeded then exec "/bin/true"
|
11
|
+
|
12
|
+
<% Pvcglue.cloud.delayed_job_worker_count.times do |n| %>
|
13
|
+
check process <%= Pvcglue::Monit.safe_name(Pvcglue::Monit.delayed_job_queue_name(n)) %>
|
14
|
+
with pidfile <%= Pvcglue.cloud.deploy_to_app_shared_pids_dir %>/delayed_job.<%= n %>.pid
|
15
|
+
start program = "/home/deploy/.rvm/bin/rvm-shell -c 'cd <%= Pvcglue.cloud.deploy_to_app_current_dir %> && RAILS_ENV=<%= Pvcglue.cloud.stage_name %> <%= Pvcglue.cloud.deploy_to_app_current_bin_dir %>/delayed_job start -i <%= n %> --pid-dir=<%= Pvcglue.cloud.deploy_to_app_shared_pids_dir %>'" as uid deploy and gid deploy
|
16
|
+
stop program = "/home/deploy/.rvm/bin/rvm-shell -c 'cd <%= Pvcglue.cloud.deploy_to_app_current_dir %> && RAILS_ENV=<%= Pvcglue.cloud.stage_name %> <%= Pvcglue.cloud.deploy_to_app_current_bin_dir %>/delayed_job stop -i <%= n %> --pid-dir=<%= Pvcglue.cloud.deploy_to_app_shared_pids_dir %>'" as uid deploy and gid deploy
|
17
|
+
group <%= "#{Pvcglue.cloud.app_and_stage_name}_delayed_job" %>
|
18
|
+
group <%= "#{Pvcglue.cloud.app_and_stage_name}_workers" %>
|
19
|
+
depends on <%= Pvcglue::Monit.worker_control_name %>
|
20
|
+
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% Pvcglue.cloud.resque_worker_count.times do |n| %>
|
24
|
+
# Based on https://github.com/resque/resque/blob/master/examples/monit/resque.monit
|
25
|
+
check process <%= Pvcglue::Monit.safe_name(Pvcglue::Monit.resque_queue_name(n)) %>
|
26
|
+
with pidfile <%= Pvcglue::Monit.resque_pid_file_name(n) %>
|
27
|
+
start program = "/home/deploy/.rvm/bin/rvm-shell -c 'cd <%= Pvcglue.cloud.deploy_to_app_current_dir %> && nohup bundle exec rake environment resque:work RAILS_ENV=<%= Pvcglue.cloud.stage_name %> QUEUE=* VERBOSE=1 PIDFILE=<%= Pvcglue::Monit.resque_pid_file_name(n) %> >> log/resque_worker.log 2>&1'" as uid deploy and gid deploy
|
28
|
+
stop program = "/bin/sh -c 'kill -9 $(cat <%= Pvcglue::Monit.resque_pid_file_name(n) %>) && rm -f <%= Pvcglue::Monit.resque_pid_file_name(n) %>; exit 0;'" as uid deploy and gid deploy
|
29
|
+
group <%= "#{Pvcglue.cloud.app_and_stage_name}_resque" %>
|
30
|
+
group <%= "#{Pvcglue.cloud.app_and_stage_name}_workers" %>
|
31
|
+
depends on <%= Pvcglue::Monit.worker_control_name %>
|
32
|
+
|
33
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
START=yes
|
@@ -0,0 +1,105 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
### BEGIN INIT INFO
|
4
|
+
# Provides: monit
|
5
|
+
# Required-Start: $remote_fs
|
6
|
+
# Required-Stop: $remote_fs
|
7
|
+
# Should-Start: $all
|
8
|
+
# Should-Stop: $all
|
9
|
+
# Default-Start: 2 3 4 5
|
10
|
+
# Default-Stop: 0 1 6
|
11
|
+
# Short-Description: service and resource monitoring daemon
|
12
|
+
# Description: monit is a utility for managing and monitoring
|
13
|
+
# processes, programs, files, directories and filesystems
|
14
|
+
# on a Unix system. Monit conducts automatic maintenance
|
15
|
+
# and repair and can execute meaningful causal actions
|
16
|
+
# in error situations.
|
17
|
+
### END INIT INFO
|
18
|
+
|
19
|
+
set -e
|
20
|
+
|
21
|
+
. /lib/lsb/init-functions
|
22
|
+
|
23
|
+
DAEMON=/usr/bin/monit
|
24
|
+
CONFIG=/etc/monit/monitrc
|
25
|
+
NAME=monit
|
26
|
+
DESC="daemon monitor"
|
27
|
+
MONIT_OPTS=
|
28
|
+
PID="/run/$NAME.pid"
|
29
|
+
|
30
|
+
# Check if DAEMON binary exist
|
31
|
+
[ -f $DAEMON ] || exit 0
|
32
|
+
|
33
|
+
[ -f "/etc/default/$NAME" ] && . /etc/default/$NAME
|
34
|
+
|
35
|
+
MONIT_OPTS="-c $CONFIG $MONIT_OPTS"
|
36
|
+
|
37
|
+
monit_not_configured () {
|
38
|
+
if [ "$1" != "stop" ]
|
39
|
+
then
|
40
|
+
printf "\tplease configure $NAME and then edit /etc/default/$NAME\n"
|
41
|
+
printf "\tand set the \"START\" variable to \"yes\" in order to allow\n"
|
42
|
+
printf "\t$NAME to start\n"
|
43
|
+
fi
|
44
|
+
exit 0
|
45
|
+
}
|
46
|
+
|
47
|
+
monit_checks () {
|
48
|
+
# Check if START variable is set to "yes", if not we exit.
|
49
|
+
if [ "$START" != "yes" ]
|
50
|
+
then
|
51
|
+
monit_not_configured $1
|
52
|
+
fi
|
53
|
+
}
|
54
|
+
|
55
|
+
case "$1" in
|
56
|
+
start)
|
57
|
+
log_daemon_msg "Starting $DESC" "$NAME"
|
58
|
+
monit_checks $1
|
59
|
+
if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $MONIT_OPTS 1>/dev/null
|
60
|
+
then
|
61
|
+
log_end_msg 0
|
62
|
+
else
|
63
|
+
log_end_msg 1
|
64
|
+
fi
|
65
|
+
;;
|
66
|
+
stop)
|
67
|
+
log_daemon_msg "Stopping $DESC" "$NAME"
|
68
|
+
if start-stop-daemon --retry TERM/5/KILL/5 --oknodo --stop --quiet --pidfile $PID 1>/dev/null
|
69
|
+
then
|
70
|
+
log_end_msg 0
|
71
|
+
else
|
72
|
+
log_end_msg 1
|
73
|
+
fi
|
74
|
+
;;
|
75
|
+
reload)
|
76
|
+
log_daemon_msg "Reloading $DESC configuration" "$NAME"
|
77
|
+
if start-stop-daemon --stop --signal HUP --quiet --oknodo --pidfile $PID --exec $DAEMON -- $MONIT_OPTS 1>/dev/null
|
78
|
+
then
|
79
|
+
log_end_msg 0
|
80
|
+
else
|
81
|
+
log_end_msg 1
|
82
|
+
fi
|
83
|
+
;;
|
84
|
+
restart|force-reload)
|
85
|
+
log_daemon_msg "Restarting $DESC" "$NAME"
|
86
|
+
start-stop-daemon --retry TERM/5/KILL/5 --oknodo --stop --quiet --pidfile $PID 1>/dev/null
|
87
|
+
if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $MONIT_OPTS 1>/dev/null
|
88
|
+
then
|
89
|
+
log_end_msg 0
|
90
|
+
else
|
91
|
+
log_end_msg 1
|
92
|
+
fi
|
93
|
+
;;
|
94
|
+
syntax)
|
95
|
+
$DAEMON $MONIT_OPTS -t
|
96
|
+
;;
|
97
|
+
status)
|
98
|
+
status_of_proc -p $PID $DAEMON $NAME
|
99
|
+
;;
|
100
|
+
*)
|
101
|
+
log_action_msg "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload|syntax|status}"
|
102
|
+
;;
|
103
|
+
esac
|
104
|
+
|
105
|
+
exit 0
|
@@ -0,0 +1,279 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Monit control file
|
3
|
+
###############################################################################
|
4
|
+
##
|
5
|
+
## Comments begin with a '#' and extend through the end of the line. Keywords
|
6
|
+
## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'.
|
7
|
+
##
|
8
|
+
## Below you will find examples of some frequently used statements. For
|
9
|
+
## information about the control file and a complete list of statements and
|
10
|
+
## options, please have a look in the Monit manual.
|
11
|
+
##
|
12
|
+
##
|
13
|
+
###############################################################################
|
14
|
+
## Global section
|
15
|
+
###############################################################################
|
16
|
+
##
|
17
|
+
## Start Monit in the background (run as a daemon):
|
18
|
+
#
|
19
|
+
set daemon 15 # check services at 2-minute intervals
|
20
|
+
# set daemon 60 # check services at 2-minute intervals
|
21
|
+
# with start delay 240 # optional: delay the first check by 4-minutes (by
|
22
|
+
# # default Monit check immediately after Monit start)
|
23
|
+
#
|
24
|
+
#
|
25
|
+
## Set syslog logging with the 'daemon' facility. If the FACILITY option is
|
26
|
+
## omitted, Monit will use 'user' facility by default. If you want to log to
|
27
|
+
## a standalone log file instead, specify the full path to the log file
|
28
|
+
#
|
29
|
+
# set logfile syslog facility log_daemon
|
30
|
+
set logfile /var/log/monit.log
|
31
|
+
#
|
32
|
+
#
|
33
|
+
## Set the location of the Monit id file which stores the unique id for the
|
34
|
+
## Monit instance. The id is generated and stored on first Monit start. By
|
35
|
+
## default the file is placed in $HOME/.monit.id.
|
36
|
+
#
|
37
|
+
# set idfile /var/.monit.id
|
38
|
+
set idfile /var/lib/monit/id
|
39
|
+
#
|
40
|
+
## Set the location of the Monit state file which saves monitoring states
|
41
|
+
## on each cycle. By default the file is placed in $HOME/.monit.state. If
|
42
|
+
## the state file is stored on a persistent filesystem, Monit will recover
|
43
|
+
## the monitoring state across reboots. If it is on temporary filesystem, the
|
44
|
+
## state will be lost on reboot which may be convenient in some situations.
|
45
|
+
#
|
46
|
+
set statefile /var/lib/monit/state
|
47
|
+
#
|
48
|
+
## Set the list of mail servers for alert delivery. Multiple servers may be
|
49
|
+
## specified using a comma separator. If the first mail server fails, Monit
|
50
|
+
# will use the second mail server in the list and so on. By default Monit uses
|
51
|
+
# port 25 - it is possible to override this with the PORT option.
|
52
|
+
#
|
53
|
+
# set mailserver mail.bar.baz, # primary mailserver
|
54
|
+
# backup.bar.baz port 10025, # backup mailserver on port 10025
|
55
|
+
# localhost # fallback relay
|
56
|
+
#
|
57
|
+
#
|
58
|
+
## By default Monit will drop alert events if no mail servers are available.
|
59
|
+
## If you want to keep the alerts for later delivery retry, you can use the
|
60
|
+
## EVENTQUEUE statement. The base directory where undelivered alerts will be
|
61
|
+
## stored is specified by the BASEDIR option. You can limit the maximal queue
|
62
|
+
## size using the SLOTS option (if omitted, the queue is limited by space
|
63
|
+
## available in the back end filesystem).
|
64
|
+
#
|
65
|
+
set eventqueue
|
66
|
+
basedir /var/lib/monit/events # set the base directory where events will be stored
|
67
|
+
slots 100 # optionally limit the queue size
|
68
|
+
#
|
69
|
+
#
|
70
|
+
## Send status and events to M/Monit (for more informations about M/Monit
|
71
|
+
## see http://mmonit.com/). By default Monit registers credentials with
|
72
|
+
## M/Monit so M/Monit can smoothly communicate back to Monit and you don't
|
73
|
+
## have to register Monit credentials manually in M/Monit. It is possible to
|
74
|
+
## disable credential registration using the commented out option below.
|
75
|
+
## Though, if safety is a concern we recommend instead using https when
|
76
|
+
## communicating with M/Monit and send credentials encrypted.
|
77
|
+
#
|
78
|
+
# set mmonit http://monit:monit@192.168.1.10:8080/collector
|
79
|
+
# # and register without credentials # Don't register credentials
|
80
|
+
#
|
81
|
+
#
|
82
|
+
## Monit by default uses the following format for alerts if the the mail-format
|
83
|
+
## statement is missing::
|
84
|
+
## --8<--
|
85
|
+
## set mail-format {
|
86
|
+
## from: monit@$HOST
|
87
|
+
## subject: monit alert -- $EVENT $SERVICE
|
88
|
+
## message: $EVENT Service $SERVICE
|
89
|
+
## Date: $DATE
|
90
|
+
## Action: $ACTION
|
91
|
+
## Host: $HOST
|
92
|
+
## Description: $DESCRIPTION
|
93
|
+
##
|
94
|
+
## Your faithful employee,
|
95
|
+
## Monit
|
96
|
+
## }
|
97
|
+
## --8<--
|
98
|
+
##
|
99
|
+
## You can override this message format or parts of it, such as subject
|
100
|
+
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.
|
101
|
+
## are expanded at runtime. For example, to override the sender, use:
|
102
|
+
#
|
103
|
+
# set mail-format { from: monit@foo.bar }
|
104
|
+
#
|
105
|
+
#
|
106
|
+
## You can set alert recipients whom will receive alerts if/when a
|
107
|
+
## service defined in this file has errors. Alerts may be restricted on
|
108
|
+
## events by using a filter as in the second example below.
|
109
|
+
#
|
110
|
+
# set alert sysadm@foo.bar # receive all alerts
|
111
|
+
## Do not alert when Monit start,stop or perform a user initiated action
|
112
|
+
# set alert manager@foo.bar not on { instance, action }
|
113
|
+
#
|
114
|
+
#
|
115
|
+
## Monit has an embedded web server which can be used to view status of
|
116
|
+
## services monitored and manage services from a web interface. See the
|
117
|
+
## Monit Wiki if you want to enable SSL for the web server.
|
118
|
+
#
|
119
|
+
set httpd port 2812 and
|
120
|
+
use address localhost # only accept connection from localhost
|
121
|
+
allow localhost # allow localhost to connect to the server and
|
122
|
+
# allow admin:monit # require user 'admin' with password 'monit'
|
123
|
+
# allow @monit # allow users of group 'monit' to connect (rw)
|
124
|
+
# allow @users readonly # allow users of group 'users' to connect readonly
|
125
|
+
#
|
126
|
+
###############################################################################
|
127
|
+
## Services
|
128
|
+
###############################################################################
|
129
|
+
##
|
130
|
+
## Check general system resources such as load average, cpu and memory
|
131
|
+
## usage. Each test specifies a resource, conditions and the action to be
|
132
|
+
## performed should a test fail.
|
133
|
+
#
|
134
|
+
# check system myhost.mydomain.tld
|
135
|
+
# if loadavg (1min) > 4 then alert
|
136
|
+
# if loadavg (5min) > 2 then alert
|
137
|
+
# if memory usage > 75% then alert
|
138
|
+
# if swap usage > 25% then alert
|
139
|
+
# if cpu usage (user) > 70% then alert
|
140
|
+
# if cpu usage (system) > 30% then alert
|
141
|
+
# if cpu usage (wait) > 20% then alert
|
142
|
+
#
|
143
|
+
#
|
144
|
+
## Check if a file exists, checksum, permissions, uid and gid. In addition
|
145
|
+
## to alert recipients in the global section, customized alert can be sent to
|
146
|
+
## additional recipients by specifying a local alert handler. The service may
|
147
|
+
## be grouped using the GROUP option. More than one group can be specified by
|
148
|
+
## repeating the 'group name' statement.
|
149
|
+
#
|
150
|
+
# check file apache_bin with path /usr/local/apache/bin/httpd
|
151
|
+
# if failed checksum and
|
152
|
+
# expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor
|
153
|
+
# if failed permission 755 then unmonitor
|
154
|
+
# if failed uid root then unmonitor
|
155
|
+
# if failed gid root then unmonitor
|
156
|
+
# alert security@foo.bar on {
|
157
|
+
# checksum, permission, uid, gid, unmonitor
|
158
|
+
# } with the mail-format { subject: Alarm! }
|
159
|
+
# group server
|
160
|
+
#
|
161
|
+
#
|
162
|
+
## Check that a process is running, in this case Apache, and that it respond
|
163
|
+
## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
|
164
|
+
## and number of children. If the process is not running, Monit will restart
|
165
|
+
## it by default. In case the service is restarted very often and the
|
166
|
+
## problem remains, it is possible to disable monitoring using the TIMEOUT
|
167
|
+
## statement. This service depends on another service (apache_bin) which
|
168
|
+
## is defined above.
|
169
|
+
#
|
170
|
+
# check process apache with pidfile /usr/local/apache/logs/httpd.pid
|
171
|
+
# start program = "/etc/init.d/httpd start" with timeout 60 seconds
|
172
|
+
# stop program = "/etc/init.d/httpd stop"
|
173
|
+
# if cpu > 60% for 2 cycles then alert
|
174
|
+
# if cpu > 80% for 5 cycles then restart
|
175
|
+
# if totalmem > 200.0 MB for 5 cycles then restart
|
176
|
+
# if children > 250 then restart
|
177
|
+
# if loadavg(5min) greater than 10 for 8 cycles then stop
|
178
|
+
# if failed host www.tildeslash.com port 80 protocol http
|
179
|
+
# and request "/somefile.html"
|
180
|
+
# then restart
|
181
|
+
# if failed port 443 type tcpssl protocol http
|
182
|
+
# with timeout 15 seconds
|
183
|
+
# then restart
|
184
|
+
# if 3 restarts within 5 cycles then timeout
|
185
|
+
# depends on apache_bin
|
186
|
+
# group server
|
187
|
+
#
|
188
|
+
#
|
189
|
+
## Check filesystem permissions, uid, gid, space and inode usage. Other services,
|
190
|
+
## such as databases, may depend on this resource and an automatically graceful
|
191
|
+
## stop may be cascaded to them before the filesystem will become full and data
|
192
|
+
## lost.
|
193
|
+
#
|
194
|
+
# check filesystem datafs with path /dev/sdb1
|
195
|
+
# start program = "/bin/mount /data"
|
196
|
+
# stop program = "/bin/umount /data"
|
197
|
+
# if failed permission 660 then unmonitor
|
198
|
+
# if failed uid root then unmonitor
|
199
|
+
# if failed gid disk then unmonitor
|
200
|
+
# if space usage > 80% for 5 times within 15 cycles then alert
|
201
|
+
# if space usage > 99% then stop
|
202
|
+
# if inode usage > 30000 then alert
|
203
|
+
# if inode usage > 99% then stop
|
204
|
+
# group server
|
205
|
+
#
|
206
|
+
#
|
207
|
+
## Check a file's timestamp. In this example, we test if a file is older
|
208
|
+
## than 15 minutes and assume something is wrong if its not updated. Also,
|
209
|
+
## if the file size exceed a given limit, execute a script
|
210
|
+
#
|
211
|
+
# check file database with path /data/mydatabase.db
|
212
|
+
# if failed permission 700 then alert
|
213
|
+
# if failed uid data then alert
|
214
|
+
# if failed gid data then alert
|
215
|
+
# if timestamp > 15 minutes then alert
|
216
|
+
# if size > 100 MB then exec "/my/cleanup/script" as uid dba and gid dba
|
217
|
+
#
|
218
|
+
#
|
219
|
+
## Check directory permission, uid and gid. An event is triggered if the
|
220
|
+
## directory does not belong to the user with uid 0 and gid 0. In addition,
|
221
|
+
## the permissions have to match the octal description of 755 (see chmod(1)).
|
222
|
+
#
|
223
|
+
# check directory bin with path /bin
|
224
|
+
# if failed permission 755 then unmonitor
|
225
|
+
# if failed uid 0 then unmonitor
|
226
|
+
# if failed gid 0 then unmonitor
|
227
|
+
#
|
228
|
+
#
|
229
|
+
## Check a remote host availability by issuing a ping test and check the
|
230
|
+
## content of a response from a web server. Up to three pings are sent and
|
231
|
+
## connection to a port and an application level network check is performed.
|
232
|
+
#
|
233
|
+
# check host myserver with address 192.168.1.1
|
234
|
+
# if failed icmp type echo count 3 with timeout 3 seconds then alert
|
235
|
+
# if failed port 3306 protocol mysql with timeout 15 seconds then alert
|
236
|
+
# if failed url http://user:password@www.foo.bar:8080/?querystring
|
237
|
+
# and content == 'action="j_security_check"'
|
238
|
+
# then alert
|
239
|
+
#
|
240
|
+
#
|
241
|
+
###############################################################################
|
242
|
+
## Includes
|
243
|
+
###############################################################################
|
244
|
+
##
|
245
|
+
## It is possible to include additional configuration parts from other files or
|
246
|
+
## directories.
|
247
|
+
#
|
248
|
+
include /etc/monit/conf.d/*
|
249
|
+
|
250
|
+
###############################################################################
|
251
|
+
## Allow monit to be reloaded from the web interface, so that root is not
|
252
|
+
## needed when deploying.
|
253
|
+
##
|
254
|
+
## Example
|
255
|
+
## curl http://localhost:2812/monit_reload -d "action=restart"
|
256
|
+
###############################################################################
|
257
|
+
check process monit_reload
|
258
|
+
with pidfile /var/run/monit.pid
|
259
|
+
restart program = "/bin/bash -c '/bin/sleep 1 && /usr/bin/monit reload &'"
|
260
|
+
#restart program = "/bin/bash -c '/usr/bin/monit reload &'"
|
261
|
+
|
262
|
+
#Nginx
|
263
|
+
#check process nginx with pidfile "/var/run/nginx.pid"
|
264
|
+
#if cpu > 80% for 2 cycles then alert
|
265
|
+
|
266
|
+
#System Monitoring
|
267
|
+
#check system PUT_YOUR_HOSTNAME_HERE
|
268
|
+
#if memory usage > 80% for 2 cycles then alert
|
269
|
+
#if cpu usage (user) > 70% for 2 cycles then alert
|
270
|
+
#if cpu usage (system) > 30% then alert
|
271
|
+
#if cpu usage (wait) > 20% then alert
|
272
|
+
#if loadavg (1min) > 6 for 2 cycles then alert
|
273
|
+
#if loadavg (5min) > 4 for 2 cycles then alert
|
274
|
+
#if swap usage > 5% then alert
|
275
|
+
|
276
|
+
#check filesystem rootfs with path /
|
277
|
+
#if space usage > 80% then alert
|
278
|
+
#set mailserver localhost
|
279
|
+
#set alert you@example.com
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Based on: https://mmonit.com/wiki/Monit/Upstart
|
2
|
+
#
|
3
|
+
# This is an upstart script to keep monit running.
|
4
|
+
# To install disable the old way of doing things:
|
5
|
+
#
|
6
|
+
# /etc/init.d/monit stop && update-rc.d -f monit remove
|
7
|
+
#
|
8
|
+
# then put this script here:
|
9
|
+
#
|
10
|
+
# /etc/init/monit.conf
|
11
|
+
#
|
12
|
+
# and reload upstart configuration:
|
13
|
+
#
|
14
|
+
# initctl reload-configuration
|
15
|
+
#
|
16
|
+
# You can manually start and stop monit like this:
|
17
|
+
#
|
18
|
+
# start monit
|
19
|
+
# stop monit
|
20
|
+
#
|
21
|
+
|
22
|
+
description "Monit service manager"
|
23
|
+
|
24
|
+
limit core unlimited unlimited
|
25
|
+
|
26
|
+
start on runlevel [2345]
|
27
|
+
stop on starting rc RUNLEVEL=[016]
|
28
|
+
|
29
|
+
expect daemon
|
30
|
+
respawn
|
31
|
+
|
32
|
+
exec /usr/bin/monit -c /etc/monitrc
|
33
|
+
|
34
|
+
pre-stop exec /usr/bin/monit -c /etc/monitrc quit
|
data/lib/pvcglue/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pvcglue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Lyric
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -232,12 +232,15 @@ files:
|
|
232
232
|
- lib/pvcglue/env.rb
|
233
233
|
- lib/pvcglue/local.rb
|
234
234
|
- lib/pvcglue/manager.rb
|
235
|
+
- lib/pvcglue/monit.rb
|
235
236
|
- lib/pvcglue/nodes.rb
|
236
237
|
- lib/pvcglue/packages.rb
|
237
238
|
- lib/pvcglue/packages/bootstrap.rb
|
238
239
|
- lib/pvcglue/packages/env.rb
|
239
240
|
- lib/pvcglue/packages/firewall.rb
|
240
241
|
- lib/pvcglue/packages/manager.rb
|
242
|
+
- lib/pvcglue/packages/monit-bootstrap.rb
|
243
|
+
- lib/pvcglue/packages/monit-web.rb
|
241
244
|
- lib/pvcglue/packages/nginx.rb
|
242
245
|
- lib/pvcglue/packages/nodejs.rb
|
243
246
|
- lib/pvcglue/packages/passenger.rb
|
@@ -250,6 +253,7 @@ files:
|
|
250
253
|
- lib/pvcglue/packages/rvm.rb
|
251
254
|
- lib/pvcglue/packages/timezone.rb
|
252
255
|
- lib/pvcglue/packages/ubuntu.rb
|
256
|
+
- lib/pvcglue/pvcify.rb
|
253
257
|
- lib/pvcglue/railtie.rb
|
254
258
|
- lib/pvcglue/ssl.rb
|
255
259
|
- lib/pvcglue/templates/20auto-upgrades.erb
|
@@ -264,6 +268,11 @@ files:
|
|
264
268
|
- lib/pvcglue/templates/lb.sites-enabled.erb
|
265
269
|
- lib/pvcglue/templates/maintenance_mode.erb
|
266
270
|
- lib/pvcglue/templates/memcached.conf.erb
|
271
|
+
- lib/pvcglue/templates/monit.app.monitrc.erb
|
272
|
+
- lib/pvcglue/templates/monit.etc-default.erb
|
273
|
+
- lib/pvcglue/templates/monit.init.d.erb
|
274
|
+
- lib/pvcglue/templates/monit.monitrc.erb
|
275
|
+
- lib/pvcglue/templates/monit.upstart-conf.erb
|
267
276
|
- lib/pvcglue/templates/passenger.list.erb
|
268
277
|
- lib/pvcglue/templates/pg_hba.conf.erb
|
269
278
|
- lib/pvcglue/templates/postgresql.conf.erb
|