lib/capistrano/tasks/monit.rake in capistrano-monit_runit-3.0.4 vs lib/capistrano/tasks/monit.rake in capistrano-monit_runit-3.1.0

- old
+ new

@@ -22,55 +22,19 @@ set :monit_dir, proc { shared_path.join('monit') } set :monit_available_path, proc { File.join(fetch(:monit_dir), 'available') } set :monit_enabled_path, proc { File.join(fetch(:monit_dir), 'enabled') } set :monit_application_group_name, proc { user_app_env_underscore } - set :monit_mailserver, 'localhost' - set :monit_mail_sender, 'monit@$HOST' - set :monit_mail_reciever, nil # if this is nil, alerts are disabled - set :monit_use_httpd, 'true' - set :monit_httpd_bind_address, 'localhost' - set :monit_httpd_allow_address, 'localhost' - set :monit_httpd_signature, 'enable' # or enable - set :monit_httpd_port, '2812' - - set :monit_daemon_time, '30' - set :monit_start_delay, '30' - - set :monit_monitrc_template, File.join(File.expand_path(File.join(File.dirname(__FILE__), '../../../templates', 'monit')), 'monitrc.erb') # rubocop:disable Metrics/LineLength: set :monit_application_conf_template, File.join(File.expand_path(File.join(File.dirname(__FILE__), '../../../templates', 'monit')), 'app_include.conf.erb') # rubocop:disable Metrics/LineLength: set :monit_application_conf_file, proc { File.join(fetch(:monit_dir), 'monit.conf') } set :monit_event_dir, File.join('/var', 'run', 'monit') end end namespace :monit do - desc 'Get the config needed to add to sudoers' - task :sudoers do - run_locally do - puts '# -----------------------------------------------------------------------------------------' - puts "# Sudo monit entries for #{fetch(:application)}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chmod 0700 #{monit_monitrc_file}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chmod 0775 #{monit_etc_path}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chmod 0700 #{monit_etc_path}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/mkdir -p #{monit_etc_conf_d_path}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chmod 6775 #{monit_etc_conf_d_path}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown #{fetch(:user)}\\:root #{monit_etc_path}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown #{fetch(:user)}\\:root #{monit_etc_conf_d_path}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown #{fetch(:user)}\\:root #{monit_monitrc_file}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown root\\:root #{monit_monitrc_file}" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown deploy\\:deploy #{monit_monitrc_file}" - puts "#{fetch(:user)} ALL=NOPASSWD: /usr/bin/monit *" - puts "#{fetch(:user)} ALL=NOPASSWD: /usr/sbin/service monit *" - puts "#{fetch(:user)} ALL=NOPASSWD: /bin/mkdir -p #{fetch(:monit_event_dir)}" - puts '# -----------------------------------------------------------------------------------------' - end - # info "#{fetch(:user)} ALL=NOPASSWD: /bin/chown deploy:root #{monit_monitrc_file}" - end - desc 'Setup monit for the application' task :setup do on roles(:app) do |host| info "MONIT: Setting up initial monit configuration on #{host}" if test "[ ! -d #{fetch(:monit_dir)} ]" @@ -81,46 +45,15 @@ end if test "[ ! -d #{fetch(:monit_enabled_path)} ]" execute :mkdir, "-p #{fetch(:monit_enabled_path)}" end - if test("[ ! -d #{monit_etc_conf_d_path} ]") - execute :sudo, :mkdir, "-p #{monit_etc_conf_d_path}" - end - execute :sudo, :chmod, "6775 #{monit_etc_conf_d_path}" - execute :sudo, :chown, "#{fetch(:user)}:root #{monit_etc_conf_d_path}" - # Upload application global monit include file upload! template_to_s_io(fetch(:monit_application_conf_template)), fetch(:monit_application_conf_file) end end - desc 'Setup main monit config file (/etc/monit/monitrc)' - task :main_config do - on roles(:app) do |host| - set :createmonitrc, ask("Create #{monit_monitrc_file} [Y/n]", 'Y') - if fetch(:createmonitrc) == 'Y' - info "MONIT: Creating #{monit_monitrc_file} on #{host}" - execute :sudo, :chown, "#{fetch(:user)}:root #{monit_etc_path}" - execute :sudo, :chmod, "0775 #{monit_etc_path}" - execute :sudo, :chown, "#{fetch(:user)}:root #{monit_monitrc_file}" - if test("[ -e #{monit_monitrc_file} ]") - execute :sudo, :chown, "deploy:deploy #{monit_monitrc_file}" - execute :rm, "-f #{monit_monitrc_file}" - end - - upload! template_to_s_io(fetch(:monit_monitrc_template)), monit_monitrc_file - execute :sudo, :chmod, "0700 #{monit_monitrc_file}" - execute :sudo, :chown, "root:root #{monit_monitrc_file}" - execute :sudo, :service, 'monit restart' - execute :sudo, :mkdir, "-p #{fetch(:monit_event_dir)}" - info "MONIT: Sleeping for #{fetch(:monit_start_delay).to_i} seconds to wait for monit to be ready" - sleep(fetch(:monit_start_delay).to_i) - end - end - end - desc 'Enable monit services for application' task :enable do on roles(:app) do |host| if test("[ ! -h #{monit_etc_app_symlink} ]") info "MONIT: Enabling for #{fetch(:application)} on #{host}" @@ -223,23 +156,11 @@ command_monit('validate') end end end -# after 'deploy:update', 'monit:enable' -# after 'deploy:setup', 'monit:setup' -before 'monit:setup', 'monit:main_config' -# after 'monit:setup', 'monit:enable' after 'monit:enable', 'monit:reload' -# This should be done in the app, as the sequence of restarting services can be specific -# must trigger monitor after deploy -# after 'deploy', 'monit:monitor' -# must trigger unmonitor before deploy -# before 'deploy', 'monit:unmonitor' - before 'monit:disable', 'monit:unmonitor' after 'monit:disable', 'monit:reload' before 'monit:purge', 'monit:unmonitor' - -after 'sudoers', 'monit:sudoers'