Puppet Class: varnishkafka

Defined in:
modules/varnishkafka/manifests/init.pp

Overview

SPDX-License-Identifier: Apache-2.0

Class varnishkafka

Configures and runs varnishkafka Varnish to Kafka producer. See: github.com/wikimedia/varnishkafka



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
# File 'modules/varnishkafka/manifests/init.pp', line 6

class varnishkafka {
    package { 'varnishkafka':
        ensure => present,
    }

    file { '/etc/varnishkafka':
        ensure  => directory,
        owner   => 'root',
        group   => 'root',
        mode    => '0444',
        recurse => true,
        purge   => true,
        force   => true,
    }

    # Don't use the init script provided by the package, because it precludes
    # running multiple instances.

    file { '/var/cache/varnishkafka':
        ensure  => directory,
        owner   => 'varnishlog',
        group   => 'varnish',
        mode    => '0755',
        require => Package['varnishkafka'],
    }

    # Basic rsyslog.d configuration to create /var/log/varnishkafka.log
    if defined(Service['rsyslog']) {
        rsyslog::conf { 'varnishkafka':
            priority => 70,
            source   => 'puppet:///modules/varnishkafka/varnishkafka_rsyslog.conf',
        }
    }

    # Since we are doing per instance stats.json files, the logrotate
    # config that comes with the varnishkafka instance is not sufficient.
    # This file will rotate only the daemon log file at /var/log/varnishkafka.log
    # varnishkafka::instance will take care of installing a logrotate file for
    # the per-instance stats.json file.
    file { '/etc/logrotate.d/varnishkafka':
        owner  => 'root',
        group  => 'root',
        mode   => '0444',
        source => 'puppet:///modules/varnishkafka/varnishkafka_logrotate'
    }

    # Managing the varnishkafka service via its init script requires that the
    # init script be present and that the default file mark the service as
    # enabled. Invoking start-stop-daemon directly allows us to manage the
    # service without having a tricky ordering dependency on those two
    # resources.

    exec { 'stop-varnishkafka-service':
        command   => '/sbin/start-stop-daemon --stop --pidfile /var/run/varnishkafka/varnishkafka.pid --exec /usr/bin/varnishkafka',
        onlyif    => '/sbin/start-stop-daemon --status --pidfile /var/run/varnishkafka/varnishkafka.pid --exec /usr/bin/varnishkafka',
        subscribe => Package['varnishkafka'],
    }

    file { '/etc/init.d/varnishkafka':
        ensure    => absent,
        subscribe => Package['varnishkafka'],
    }

    file { '/etc/default/varnishkafka':
        ensure    => absent,
        subscribe => Package['varnishkafka'],
    }

    # Install a catch-all systemd service to ease stopping and starting
    # of all varnishkafka processes on this host.
    systemd::service { 'varnishkafka-all':
        content => systemd_template('varnishkafka-all'),
    }
}