Puppet Class: cflogsink

Inherits:
cflogsink::internal::defaults
Defined in:
manifests/init.pp

Overview

Parameters:

  • iface (Cfnetwork::Bindface) (defaults to: $cflogsink::internal::defaults::iface)
  • server (Variant[ Boolean, Hash ]) (defaults to: false)
  • target (Optional[String[1]]) (defaults to: undef)
  • tls (Optional[Boolean]) (defaults to: undef)


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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'manifests/init.pp', line 6

class cflogsink (
    Cfnetwork::Bindface
        $iface = $cflogsink::internal::defaults::iface,
    Variant[ Boolean, Hash ]
        $server = false,
    Optional[String[1]]
        $target = undef,
    Optional[Boolean]
        $tls = undef,
) inherits cflogsink::internal::defaults {
    include cfsystem

    $centralized = !!$target

    #---
    ensure_resource('package', 'rsyslog')
    Package['rsyslog']
    ->exec { 'cflogsink:rsyslog:refresh':
        command     => '/bin/systemctl reload-or-restart rsyslog.service',
        refreshonly => true,
    }

    #---
    ensure_resource('package', 'ulogd2')
    Package['ulogd2']
    -> exec { 'cflogsink:ulogd:refresh':
        command     => '/bin/systemctl reload-or-restart ulogd.service',
        refreshonly => true,
    }

    #---
    if $server {
        if $server =~ Hash {
            $server_conf = $server
        } else {
            $server_conf = {}
        }

        $merged_config = merge(
            {
                iface       => $cflogsink::iface,
                type        => 'logstash',
                port        => 2514,
                secure_port => 3514,
                dbaccess    => {
                    cluster => 'logsink',
                },
            },
            $server_conf
        )

        create_resources(
            'cflogsink::endpoint',
            { main => $merged_config }
        )
    }

    if $target {
        if $target == $::facts['fqdn'] and $server {
            $merged_iface = $merged_config['iface']
            $sink = [{
                'parameters' => {
                    'settings_tune' => {
                        'cflogsink' => {
                            'listen'      => $merged_iface ? {
                                'any'   => undef,
                                default => cfnetwork::bind_address($merged_iface),
                            },
                            'port'        => $merged_config['port'],
                            'secure_port' => $merged_config['secure_port'],
                        },
                    },
                    'location' => $cfsystem::location,
                }
            }]
        } else {
            $sink = cfsystem::query([
                'from', 'resources', ['extract', [ 'parameters' ],
                    ['and',
                        ['=', 'type', 'Cflogsink_endpoint'],
                        ['=', 'certname', $target],
                        ['=', 'title', 'main'],
                    ],
            ]])
        }

        if $sink.size > 0 {
            $target_params = $sink[0]['parameters']
            $target_tune = $target_params['settings_tune']['cflogsink']

            $target_tls = pick(
                $tls,
                ($cfsystem::location != $target_params['location'])
            )

            # rsyslog is used for TLS input
            #$target_tls_compress = ( $target_params['type'] != 'logstash' )
            $target_tls_compress = true

            if $target_tls {
                $target_host = $target
                $target_port = $target_tune['secure_port']
            } else {
                $target_host = pick( $target_tune['listen'], $target )
                $target_port = $target_tune['port']
            }

            include cflogsink::client
        } else {
            cf_notify { "cflogsink target '${target}' is unknown, skipping":
                loglevel => warning,
            }
        }
    } else {
        file { '/etc/rsyslog.conf':
            mode    => '0640',
            content => file('cflogsink/rsyslog-default.conf'),
        }
        ~> Exec['cflogsink:rsyslog:refresh']

        file { '/etc/ulogd.conf':
            mode    => '0640',
            content => file('cflogsink/ulogd-local.conf')
        }
        ~> Exec['cflogsink:ulogd:refresh']
    }
}