Puppet Class: kibana

Defined in:
puppet/modules/kibana/manifests/init.pp

Overview

Class: kibana

Kibana is a JavaScript web application for visualizing log data and other types of time-stamped data. It integrates with ElasticSearch and LogStash.



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

class kibana {
    require ::elasticsearch::repository

    package { 'kibana-oss':
        ensure => latest,
    }

    npm::global { 'elasticdump':
        # from 5.0.0 it requires node 8+
        version => '4.7.0',
    }

    file { '/etc/kibana/kibana.yml':
        ensure  => file,
        owner   => 'root',
        group   => 'root',
        mode    => '0444',
        content => ordered_yaml({
            'kibana.defaultAppId' => 'dashboard/default',
            'logging.quiet'       => true,
            'server.host'         => '0.0.0.0',
        }),
        require => Package['kibana-oss']
    }

    service { 'kibana':
        ensure  => running,
        enable  => true,
        require => [
            Package['kibana-oss'],
            File['/etc/kibana/kibana.yml'],
        ],
    }

    exec { 'import-kibana-index-mapping':
        command     => 'elasticdump --input=/vagrant/puppet/modules/kibana/files/kibana-mapping.json --output=http://127.0.0.1:9200/.kibana_1 --type=mapping',
        refreshonly => true,
        subscribe   => Service['kibana'],
        require     => [
            Exec['wait-for-elasticsearch'],
            Npm::Global['elasticdump'],
        ],
    }

    exec { 'import-kibana-index-data':
        command     => 'elasticdump --input=/vagrant/puppet/modules/kibana/files/kibana-data.json --output=http://127.0.0.1:9200/.kibana_1 --type=data',
        refreshonly => true,
        subscribe   => Exec['import-kibana-index-mapping'],
        require     => [
            Exec['wait-for-elasticsearch'],
            Npm::Global['elasticdump'],
        ],
    }
}