Puppet Class: role::raita

Defined in:
puppet/modules/role/manifests/raita.pp

Overview

Class: role::raita

Raita is a dashboard built on Elasticsearch for visualizing and diagnosing browser test failures. The default URL for accessing the running dashboard will be raita.local.wmftest.net:8080/ though this may change according to your forwarded HTTP port or Hiera configuration.

dir

Repository clone directory

vhost_name

Apache virtual host name

Parameters:

  • dir (Any)
  • vhost_name (Any)


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 'puppet/modules/role/manifests/raita.pp', line 14

class role::raita(
    $dir,
    $vhost_name,
) {
    include ::elasticsearch
    include ::apache::mod::headers
    include ::apache::mod::proxy
    include ::apache::mod::proxy_http

    require_package('nodejs')

    $index_url = 'http://127.0.0.1:9200/raita'
    $index = template('role/raita/index.json.erb')

    git::clone { 'integration/raita':
        directory => $dir,
        require   => Package['nodejs'],
    }

    exec { 'raita elasticsearch index':
        command => "/usr/bin/curl -X PUT '${index_url}/' -d '${index}'",
        unless  => "/usr/bin/curl -sf '${index_url}/_settings' 2> /dev/null",
        require => [
            Class['elasticsearch'],
            Git::Clone['integration/raita'],
        ],
    }

    exec { 'raita elasticsearch mappings':
        command => "/usr/bin/nodejs scripts/mappings.js import '${index_url}'",
        unless  => "/usr/bin/nodejs scripts/mappings.js check '${index_url}'",
        cwd     => $dir,
        require => Exec['raita elasticsearch index'],
    }

    file { '/tmp/raita-data.json':
        source => 'puppet:///modules/role/raita/data.json',
    }

    exec { 'raita import elasticsearch data':
        command   => "/usr/bin/curl -X POST '${index_url}/_bulk' --data-binary @/tmp/raita-data.json",
        onlyif    => "/usr/bin/curl -sf '${index_url}/_count' | /bin/grep -q '\"count\":0'",
        require   => Exec['raita elasticsearch mappings'],
        subscribe => File['/tmp/raita-data.json'],
    }

    apache::site { $vhost_name:
        content => template('role/raita/apache.conf.erb'),
    }
}