class PoiseMonit::MonitProviders::System

A `system` provider for `monit` to install from system packages. Uses EPEL for RHEL-family platforms.

@see PoiseMonit::Resources::PoiseMonit::Resource @provides monit

Public Class Methods

default_inversion_options(node, resource) click to toggle source

@api private

# File lib/poise_monit/monit_providers/system.rb, line 42
def self.default_inversion_options(node, resource)
  {package: 'monit', no_epel: false}
end
provides_auto?(node, _resource) click to toggle source

Enable by default on Debian-oids. Doesn't really matter given that binaries outranks this provider.

@api private

# File lib/poise_monit/monit_providers/system.rb, line 37
def self.provides_auto?(node, _resource)
  node.platform_family?('debian', 'rhel')
end

Public Instance Methods

monit_binary() click to toggle source

Output value for the Monit binary we are installing.

@return [String]

# File lib/poise_monit/monit_providers/system.rb, line 49
def monit_binary
  # Until I run into a counter-example, probably always true.
  '/usr/bin/monit'
end

Private Instance Methods

install_monit() click to toggle source
# File lib/poise_monit/monit_providers/system.rb, line 56
def install_monit
  if node.platform_family?('rhel') && !options['no_epel']
    if run_context.unreachable_cookbook?(:'yum-epel')
      raise Chef::Exceptions::RecipeNotFound.new('Could not find recipe yum-epel. Please include it either on your run list or via a metadata.rb depends to install on RHEL or CentOS')
    end
    include_recipe 'yum-epel'
  end

  # We're taking care of the init system.
  init_file = file '/etc/init.d/monit' do
    action :nothing
  end

  package options['package'] do
    notifies :delete, init_file, :immediately
    if node.platform_family?('debian')
      options '-o Dpkg::Options::=--path-exclude=/etc/*'
    end
    version new_resource.version
  end
end
uninstall_monit() click to toggle source
# File lib/poise_monit/monit_providers/system.rb, line 78
def uninstall_monit
  package options['package'] do
    action(platform_family?('debian') ? :purge : :remove)
  end
end