Puppet Class: varnish::nagiosplugin

Defined in:
manifests/nagiosplugin.pp

Overview

Class: varnish::nagiosplugin

Downloads the sources of the official nagios plugin for varnish, builds it, and installs it to $plugin_dir.

Attributes:

  • nagios_plugin_dir: directory where you want the built plugin to be installed. Defaults to ‘/usr/lib/nagios/plugins/contrib’.

Requires:

or

Parameters:

  • plugin_dir (Any) (defaults to: '/usr/lib/nagios/plugins/contrib')


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
# File 'manifests/nagiosplugin.pp', line 20

class varnish::nagiosplugin (
  $plugin_dir = '/usr/lib/nagios/plugins/contrib',
) {

  include ::varnish::dev

  $baseurl = 'https://github.com/varnish/varnish-nagios'

  # lint:ignore:empty_string_assignment
  case $::varnish_version {
    '2.1.1', '2.1.2': {
      # http://www.varnish-cache.org/trac/ticket/710
      $revision = '70e4ded1221846d4149dd743e2ac634946c313ad'
      $branch   = 'master'
      $buildopt = ''
    }
    '2.1.3': {
      $revision = '70e4ded1221846d4149dd743e2ac634946c313ad'
      $branch   = 'master'
      $buildopt = "VARNISHAPI_LIBS='-lvarnishapi -lvarnish -lvarnishcompat'"
    }
    /^2\.0\./: {
      $revision = 'a64abfb7e70fd1f6b53ff64f9ddeafb7209c0b23'
      $branch   = 'master'
      $buildopt = ''
    }
    default: {
      $revision = 'HEAD'
      $branch   = 'master'
      $buildopt = ''
    }
  }
  # lint:endignore

  $workdir = "/usr/src/check_varnish-${::varnish_version}-${revision}"

  vcsrepo { $workdir:
    provider => 'git',
    source   => "${baseurl}/",
    revision => $revision,
  }

  file { "${workdir}/build-plugin.sh":
    mode    => '0755',
    content => "#!/bin/sh
cd \$(dirname \$0) && ./autogen.sh && ./configure && make ${buildopt}
",
    require => [
      Package['gcc'],
      Package['libtool'],
      Class['varnish::dev'],
      Vcsrepo[$workdir],
    ],
  }

  exec { 'build check_varnish':
    command => "${workdir}/build-plugin.sh",
    creates => "${workdir}/check_varnish",
    require => File["${workdir}/build-plugin.sh"],
    #logoutput => true,
  }

  file { "${plugin_dir}/check_varnish":
    ensure  => file,
    mode    => '0755',
    owner   => 'root',
    group   => 'root',
    source  => "file://${workdir}/check_varnish",
    require => Exec['build check_varnish'],
  }
}