Puppet Class: profile::icinga::ircbot

Defined in:
modules/profile/manifests/icinga/ircbot.pp

Overview

Class: profile::icinga::ircbot

Sets up an ircecho instance that sends icinga alerts to IRC

Parameters:

  • ensure (Wmflib::Ensure) (defaults to: 'present')
  • ircecho_nick (String) (defaults to: lookup('profile::icinga::ircbot::ircecho_nick'))
  • ircecho_server (String) (defaults to: lookup('profile::icinga::ircbot::ircecho_server'))
  • icinga_user (String) (defaults to: lookup('profile::icinga::icinga_user'))
  • icinga_group (String) (defaults to: lookup('profile::icinga::icinga_group'))


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
# File 'modules/profile/manifests/icinga/ircbot.pp', line 4

class profile::icinga::ircbot(
    # Overridden by profile::icinga considering active/passive and 'profile::icinga::ircbot::ensure'
    Wmflib::Ensure $ensure = 'present', # lint:ignore:wmf_styleguide
    String $ircecho_nick   = lookup('profile::icinga::ircbot::ircecho_nick'),
    String $ircecho_server = lookup('profile::icinga::ircbot::ircecho_server'),
    String $icinga_user    = lookup('profile::icinga::icinga_user'),
    String $icinga_group   = lookup('profile::icinga::icinga_group'),
) {
    $ircecho_logs   = {
        '/var/log/icinga/irc.log'                    => '#wikimedia-operations',
        '/var/log/icinga/irc-releng.log'             => '#wikimedia-releng',
        '/var/log/icinga/irc-cloud-feed.log'         => '#wikimedia-cloud-feed',
        '/var/log/icinga/irc-analytics.log'          => '#wikimedia-analytics',
        '/var/log/icinga/irc-interactive.log'        => '#wikimedia-interactive',
        '/var/log/icinga/irc-performance.log'        => '#wikimedia-perf-bots',
        '/var/log/icinga/irc-fundraising.log'        => '#wikimedia-fundraising',
        '/var/log/icinga/irc-reading-web.log'        => '#wikimedia-reading-web-bots',
        '/var/log/icinga/irc-dcops.log'              => '#wikimedia-dcops',
        '/var/log/icinga/irc-databases.log'          => '#wikimedia-data-persistence',
        '/var/log/icinga/irc-team-data-platform.log' => '#wikimedia-data-platform-alerts',
    }

    $password_file = '/etc/icinga/.irc_secret'
    file { $password_file:
        ensure    => $ensure,
        owner     => 'nobody',
        group     => 'nogroup',
        mode      => '0400',
        content   => secret('icinga/icinga-wm_irc.secret'),
        show_diff => false,
    }

    if $ensure == present {
        # Preemptively create log files for ircecho to read at startup
        # https://phabricator.wikimedia.org/T359292
        $ircecho_logs.each |String $file, String $channel| {
            exec { "create ${file}":
                command => "/usr/bin/install -o ${icinga_user} -g ${icinga_group} -m 644 /dev/null ${file}",
                creates => $file,
                before  => Class['ircecho'],
            }
        }
    }

    class { '::ircecho':
        ensure            => $ensure,
        ircecho_logs      => $ircecho_logs,
        ircecho_nick      => $ircecho_nick,
        ircecho_server    => $ircecho_server,
        ident_passwd_file => $password_file,
    }

    # T28784 - IRC bots process need nagios monitoring
    nrpe::monitor_service { 'ircecho':
        ensure       => $ensure,
        description  => 'ircecho_service_running',
        nrpe_command => '/usr/lib/nagios/plugins/check_procs -w 1:4 -c 1:20 -a ircecho',
        notes_url    => 'https://wikitech.wikimedia.org/wiki/Ircecho',
    }
}