Puppet Class: nagios::server

Defined in:
manifests/server.pp

Overview

Class: nagios::server

This class downloads and installs the nagios and sets up the nagios configuration files to configure.

Parameters

version

The version of nagios to install

nrpe_version

The version of nrpe-plugin to install

user

The user which the nagios server should run as

group

The group which the server should run as

plugins_version

The version of the plugins to install

pnp4nagios_version

The version of the pnp4nagios to install

process_performance_data

If performance data should be processed

host_perfdata_file_processing_interval

Interval in which the performance data for hosts

should be bulk processed
service_perfdata_file_processing_interval

Interval in which the performance data

for servicesshould be bulk processed
users_file

The location of the users file which can be managed with nagios::user

config_files

The config files which are to be managed by puppet (sets these to mode 644)

Authors

Christopher Johnson - cjohn@ceh.ac.uk

Parameters:

  • version (Any) (defaults to: installed)
  • nrpe_version (Any) (defaults to: installed)
  • user (Any) (defaults to: $::nagios::user)
  • group (Any) (defaults to: $::nagios::group)
  • plugins_version (Any) (defaults to: installed)
  • pnp4nagios_version (Any) (defaults to: installed)
  • process_performance_data (Any) (defaults to: 1)
  • host_perfdata_file_processing_interval (Any) (defaults to: 15)
  • service_perfdata_file_processing_interval (Any) (defaults to: 15)
  • enable_embedded_perl (Any) (defaults to: 0)
  • use_embedded_perl_implicitly (Any) (defaults to: 0)
  • config_dirs (Any) (defaults to: [ '/etc/nagios-plugins/config', '/etc/nagios' ])
  • users_file (Any) (defaults to: '/etc/nagios3/htpasswd.users')
  • config_files (Any) (defaults to: [ '/etc/nagios/nagios_command.cfg', '/etc/nagios/nagios_contact.cfg', '/etc/nagios/nagios_contactgroup.cfg', '/etc/nagios/nagios_host.cfg', '/etc/nagios/nagios_hostdependency.cfg', '/etc/nagios/nagios_hostescalation.cfg', '/etc/nagios/nagios_hostextinfo.cfg', '/etc/nagios/nagios_hostgroup.cfg', '/etc/nagios/nagios_service.cfg', '/etc/nagios/nagios_servicedependency.cfg', '/etc/nagios/nagios_serviceescalation.cfg', '/etc/nagios/nagios_serviceextinfo.cfg', '/etc/nagios/nagios_servicegroup.cfg', '/etc/nagios/nagios_timeperiod.cfg' ])


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'manifests/server.pp', line 26

class nagios::server(
  $version                                   = installed,
  $nrpe_version                              = installed,
  $user                                      = $::nagios::user,
  $group                                     = $::nagios::group,
  $plugins_version                           = installed,
  $pnp4nagios_version                        = installed,
  $process_performance_data                  = 1,
  $host_perfdata_file_processing_interval    = 15,
  $service_perfdata_file_processing_interval = 15,
  $enable_embedded_perl                      = 0,
  $use_embedded_perl_implicitly              = 0,
  $config_dirs = [
    '/etc/nagios-plugins/config',
    '/etc/nagios'
  ],
  $users_file      = '/etc/nagios3/htpasswd.users',
  $config_files = [
    '/etc/nagios/nagios_command.cfg',
    '/etc/nagios/nagios_contact.cfg',
    '/etc/nagios/nagios_contactgroup.cfg',
    '/etc/nagios/nagios_host.cfg',
    '/etc/nagios/nagios_hostdependency.cfg',
    '/etc/nagios/nagios_hostescalation.cfg',
    '/etc/nagios/nagios_hostextinfo.cfg',
    '/etc/nagios/nagios_hostgroup.cfg',
    '/etc/nagios/nagios_service.cfg',
    '/etc/nagios/nagios_servicedependency.cfg',
    '/etc/nagios/nagios_serviceescalation.cfg',
    '/etc/nagios/nagios_serviceextinfo.cfg',
    '/etc/nagios/nagios_servicegroup.cfg',
    '/etc/nagios/nagios_timeperiod.cfg'
  ]
) {
  if ! defined(Class['::nagios']) {
    fail('You must include the nagios base class before nagios::server')
  }

  # Ensure that all packages are installed before starting nagios
  Package {
    before => [ 
      Service['nagios3'],
      File[$::nagios::plugins_path]
    ],
  }

  package { 'nagios3' :
    ensure => $version,
  }

  package { 'nagios-nrpe-plugin' :
    ensure => $nrpe_version,
  }

  package { 'nagios-plugins' :
    ensure => $plugins_version,
  }

  package { 'pnp4nagios' :
    ensure => $pnp4nagios_version,
  }

  file { '/etc/nagios3/nagios.cfg' :
    owner   => 'root',
    group   => 'root',
    mode    => '644',
    content => template('nagios/nagios.cfg.erb'),
    notify  => Exec['nagios3-verify'],
    require => Package['nagios3'],
  }
  
  file { '/etc/nagios' :
    ensure  => directory,
    recurse => true,
    mode    => 0644,
    purge   => true,
    before  => Service['nagios3'],
  }
  
  # Set all of the config files to the correct mode
  file { $config_files :
    mode    => 0644,
    ensure  => present,
    before  => Service['nagios3'],
  }

  concat { $users_file :
    require => Package['nagios3'],
  }

  # Verify that the nagios configuration is in a good state before restarting
  exec { 'nagios3-verify' :
    path        => '/usr/sbin',
    command     => 'nagios3 -v /etc/nagios3/nagios.cfg',
    refreshonly => true,
    notify      => Service['nagios3'],
  }

  service { 'nagios3' :
    ensure      => running,
    hasstatus   => true,
    hasrestart  => true,
  }
  
  # Gather the local resources
  Package['nagios3'] -> Nagios_command <||>           ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_contact <||>           ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_contactgroup <||>      ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_host <||>              ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostdependency <||>    ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostescalation <||>    ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostextinfo <||>       ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostgroup <||>         ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_service <||>           ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_servicedependency <||> ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_serviceescalation <||> ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_serviceextinfo <||>    ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_servicegroup <||>      ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_timeperiod <||>        ~> Exec['nagios3-verify']

  # Gather the exported nagios resources 
  Package['nagios3'] -> Nagios_command <<||>>           ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_contact <<||>>           ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_contactgroup <<||>>      ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_host <<||>>              ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostdependency <<||>>    ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostescalation <<||>>    ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostextinfo <<||>>       ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_hostgroup <<||>>         ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_service <<||>>           ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_servicedependency <<||>> ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_serviceescalation <<||>> ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_serviceextinfo <<||>>    ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_servicegroup <<||>>      ~> Exec['nagios3-verify']
  Package['nagios3'] -> Nagios_timeperiod <<||>>        ~> Exec['nagios3-verify']

  # Notify the nrpe service if the user or group change
  Package['nagios3'] -> User[$user]   ~> Service['nagios3']
  Package['nagios3'] -> Group[$group] ~> Service['nagios3']
}