summaryrefslogtreecommitdiff
path: root/puppet/modules/check_mk/manifests/config.pp
blob: fba68361bcfd17bef7d3c983de9996229d5cb0d2 (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
# Deploy check_mk config
class check_mk::config (
  $site,
  $host_groups               = undef,
  $etc_dir                   = "/omd/sites/${site}/etc",
  $nagios_subdir             = 'nagios',
  $bin_dir                   = "/omd/sites/${site}/bin",
  $use_storedconfigs         = true,
  $inventory_only_on_changes = true
) {
  file {
    # for local check_mk checks
    "${etc_dir}/${nagios_subdir}/local":
      ensure => directory;

    # package provided and check_mk generated files, defined so the nagios
    #  module doesn't purge them
    "${etc_dir}/${nagios_subdir}/conf.d":
      ensure => directory;
    "${etc_dir}/${nagios_subdir}/conf.d/check_mk":
      ensure => directory;
  }
  file_line { 'nagios-add-check_mk-cfg_dir':
    ensure  => present,
    line    => "cfg_dir=${etc_dir}/${nagios_subdir}/local",
    path    => "${etc_dir}/${nagios_subdir}/nagios.cfg",
    require => File["${etc_dir}/${nagios_subdir}/local"],
    #notify  => Class['check_mk::service'],
  }
  file_line { 'add-guest-users':
    ensure => present,
    line   => 'guest_users = [ "guest" ]',
    path   => "${etc_dir}/check_mk/multisite.mk",
    #notify => Class['check_mk::service'],
  }
  concat { "${etc_dir}/check_mk/main.mk":
    owner  => 'root',
    group  => 'root',
    mode   => '0644',
    notify => Exec['check_mk-refresh'],
  }
  # all_hosts
  concat::fragment { 'all_hosts-header':
    target  => "${etc_dir}/check_mk/main.mk",
    content => "all_hosts = [\n",
    order   => 10,
  }
  concat::fragment { 'all_hosts-footer':
    target  => "${etc_dir}/check_mk/main.mk",
    content => "]\n",
    order   => 19,
  }
  if ( $use_storedconfigs ) {
    class { 'check_mk::server::collect_hosts': }
    class { 'check_mk::server::collect_ps': }
  }


  # local list of hosts is in /omd/sites/${site}/etc/check_mk/all_hosts_static and is appended
  concat::fragment { 'all-hosts-static':
    ensure => "${etc_dir}/check_mk/all_hosts_static",
    target => "${etc_dir}/check_mk/main.mk",
    order  => 18,
  }
  # host_groups
  if $host_groups {
    file { "${etc_dir}/nagios/local/hostgroups":
      ensure => directory,
    }
    concat::fragment { 'host_groups-header':
      target  => "${etc_dir}/check_mk/main.mk",
      content => "host_groups = [\n",
      order   => 20,
    }
    concat::fragment { 'host_groups-footer':
      target  => "${etc_dir}/check_mk/main.mk",
      content => "]\n",
      order   => 29,
    }
    $groups = keys($host_groups)
    check_mk::hostgroup { $groups:
      dir        => "${etc_dir}/nagios/local/hostgroups",
      hostgroups => $host_groups,
      target     => "${etc_dir}/check_mk/main.mk",
      notify     => Exec['check_mk-refresh']
    }
  }
  # local config is in /omd/sites/${site}/etc/check_mk/main.mk.local and is appended
  concat::fragment { 'check_mk-local-config':
    ensure => "${etc_dir}/check_mk/main.mk.local",
    target => "${etc_dir}/check_mk/main.mk",
    order  => 99,
  }
  # re-read config if it changes
  exec { 'check_mk-refresh':
    command     => "/bin/su -l -c '${bin_dir}/check_mk -II' ${site}",
    refreshonly => $inventory_only_on_changes,
    notify      => Exec['check_mk-reload'],
  }
  exec { 'check_mk-reload':
    command     => "/bin/su -l -c '${bin_dir}/check_mk -O' ${site}",
    refreshonly => $inventory_only_on_changes,
  }
  # re-read inventory at least daily
  exec { 'check_mk-refresh-inventory-daily':
    command  => "/bin/su -l -c '${bin_dir}/check_mk -O' ${site}",
    schedule => 'daily',
  }
}