class nodo::subsystem::monitor::master {
  file { '/etc/nagios-plugins/check_rbl.ini':
    ensure  => present,
    owner   => root,
    group   => root,
    source  => 'puppet:///modules/nodo/etc/nagios-plugins/check_rbl.ini',
    require => Package['nagios'],
  }

  $main   = hiera('nodo::role::master::main', false)
  $ensure = $main ? {
    true    => 'present',
    default => 'absent',
  }

  # Munin configuration for apache
  file { '/etc/apache2/conf.d/munin':
    ensure  => present,
    owner   => root,
    group   => root,
    mode    => 0644,
    source  => 'puppet:///modules/nodo/munin/apache.conf',
    require => Package["apache"],
    notify  => Service["apache"],
  }

  # See http://www.jethrocarr.com/2012/05/26/munin-performance/
  file { "munin_graph_performance":
    ensure  => $ensure,
    path    => "/var/lib/puppet/modules/munin/nodes/00-performance",
    content => "max_graph_jobs 1\nmax_cgi_graph_jobs 1\n",
    require => $main ? {
      true    => Concatenated_file['/etc/munin/munin.conf'],
      default => undef,
    },
  }

  # See https://raymii.org/s/tutorials/Munin_optimalization_on_Debian.html
  file { '/usr/local/bin/munin-graph':
    ensure  => $ensure,
    owner   => root,
    group   => root,
    mode    => 0755,
    source  => 'puppet:///modules/nodo/bin/munin-graph',
  }

  file { '/etc/cron.d/munin-graph':
    ensure  => $ensure,
    owner   => root,
    group   => root,
    mode    => 0644,
    content => "10 * * * *      munin if [ -x /usr/local/bin/munin-graph ]; then /usr/bin/ionice -c 3 /usr/bin/nice -n 19 /usr/local/bin/munin-graph; fi\n",
    require => File['/usr/local/bin/munin-graph'],
  }

  # We won't mess with the package, so we distribute our own munin-cron
  file { '/usr/local/bin/munin-cron':
    ensure  => $ensure,
    owner   => root,
    group   => root,
    mode    => 0755,
    source  => 'puppet:///modules/nodo/bin/munin-cron',
  }

  file { '/etc/cron.d/munin':
    ensure  => $ensure,
    owner   => root,
    group   => root,
    mode    => 0644,
    source  => 'puppet:///modules/nodo/etc/cron.d/munin',
    require => File['/usr/local/bin/munin-cron'],
  }

  #
  # See https://raymii.org/s/tutorials/Munin_optimalization_on_Debian.html
  #     https://munin.readthedocs.org/en/latest/master/rrdcached.html
  #     http://kuszelas.eu/~eyck/log/Howto/Munin.Rrdcached.html
  #     http://munin-monitoring.org/wiki/rrdcached
  #
  package { 'rrdcached':
    ensure => $ensure,
  }

  file { '/etc/default/rrdcached':
    ensure  => $ensure,
    owner   => root,
    group   => root,
    source  => 'puppet:///modules/nodo/etc/default/rrdcached',
    require => Package['rrdcached'],
    notify  => $main ? {
      true    => Service['rrdcached'],
      default => undef,
    },
  }

  # Munin configuration for rrdcache
  file { "munin_rrdcache":
    ensure  => $ensure,
    path    => "/var/lib/puppet/modules/munin/nodes/00-rrdcache",
    content => "rrdcached_socket /var/run/rrdcached.sock\n",
    require => $main ? {
      true    => Concatenated_file['/etc/munin/munin.conf'],
      default => undef,
    },
  }

  if $main == true {
    service { 'rrdcached':
      ensure  => running,
      require => Package['rrdcached'],
    }
  }
}