aboutsummaryrefslogtreecommitdiff
path: root/personal_infra/puppet/modules/nagios/manifests/init.pp
blob: 8cbd787106f7b8ce3039027866a8151bdc311a66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
class nagios($otel_host) {
  package {'nagios':}
  ->
  service {'nagios':
    ensure => running,
    enable => true,
  }

  file {
    default:
      require => Package['nagios'],
      notify => Service['nagios'],
      ;
    '/etc/nagios':
      ensure => directory,
      recurse => true,
      force => true,
      purge => true,
      ;
    '/etc/nagios/nagios.cfg':
      content => epp('nagios/nagios.cfg'),
      ;
    # leave these unaffected
    ['/etc/nagios/passwd', '/etc/nagios/cgi.cfg', '/etc/nagios/private/resource.cfg', '/etc/nagios/objects', '/etc/nagios/private', '/etc/nagios/objects/commands.cfg', '/etc/nagios/objects/timeperiods.cfg', '/etc/nagios/objects/templates.cfg']:
      ensure => present,
      ;
  }

  nagios_contact {'nagiosadmin':
    use => 'generic-contact',
    email => lookup('mail.root_mail'),
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  nagios_contactgroup {'admins':
    members => 'nagiosadmin',
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  nagios_command {'check_ragent':
    command_name => 'check_ragent',
    command_line => '/usr/bin/check_ragent http://$HOSTADDRESS$:21488/ --warning-units dnf-makecache.service --warning-units dnf-automatic-install.service',
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  nagios_command {'process-host-perfdata-file':
    command_name => 'process-host-perfdata-file',
    command_line => "/opt/nagios-otel/venv/bin/python3 /opt/nagios-otel/examples/host_example.py ${otel_host} /var/log/nagios/host-perfdata",
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  nagios_command {'process-service-perfdata-file':
    command_name => 'process-service-perfdata-file',
    command_line => "/opt/nagios-otel/venv/bin/python3 /opt/nagios-otel/examples/service_example.py ${otel_host} /var/log/nagios/service-perfdata",
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  nagios_hostgroup {'linux':
    hostgroup_name => 'linux',
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
    ensure => present,
  }

  nagios_servicegroup {'ragent':
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
    ensure => present,
  }

  nagios_service {'check_ragent':
    use => 'generic-service',
    hostgroup_name => 'linux',
    service_description => 'check_ragent',
    servicegroups => 'ragent',
    check_command => 'check_ragent',
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  nagios_service {'check_ssh':
    use => 'generic-service',
    hostgroup_name => 'linux',
    service_description => 'ssh',
    check_command => 'check_ssh',
    require => Package['nagios'],
    notify => Service['nagios'],
    owner => 'nagios',
  }

  package {'httpd':}
  ->
  service {'httpd':
    ensure => running,
    enable => true,
  }

  if $facts['virtual'] == 'lxc' {
    file {'/bin/ping':
      mode => 'u+s',
    }
  }
}