Defined Type: logstash::plugin
- Defined in:
- manifests/plugin.pp
Overview
Manage the installation of a Logstash plugin.
By default, plugins are downloaded from RubyGems, but it is also possible to install from a local Gem, or one stored in Puppet.
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 |
# File 'manifests/plugin.pp', line 33
define logstash::plugin (
$source = undef,
$ensure = present,
)
{
require logstash::package
$exe = "${logstash::home_dir}/bin/logstash-plugin"
case $source { # Where should we get the plugin from?
undef: {
# No explict source, so search Rubygems for the plugin, by name.
# ie. "logstash-plugin install logstash-output-elasticsearch"
$plugin = $name
}
/^(\/|file:)/: {
# A gem file that is already available on the local filesystem.
# Install from the local path.
# ie. "logstash-plugin install /tmp/logtash-filter-custom.gem" or
# "logstash-plugin install file:///tmp/logtash-filter-custom.gem" or
$plugin = $source
}
/^puppet:/: {
# A 'puppet:///' URL. Download the gem from Puppet, then install
# the plugin from the downloaded file.
$downloaded_file = sprintf('/tmp/%s', basename($source))
file { $downloaded_file:
source => $source,
before => Exec["install-${name}"],
}
$plugin = $downloaded_file
}
/^https?:/: {
# An 'http(s):///' URL.
$plugin = $source
}
default: {
fail('"source" should be a local path, a "puppet:///" url, or undef.')
}
}
case $ensure {
'present': {
exec { "install-${name}":
command => "${exe} install ${plugin}",
unless => "${exe} list ^${name}$",
}
}
/^\d+\.\d+\.\d+/: {
exec { "install-${name}":
command => "${exe} install --version ${ensure} ${plugin}",
unless => "${exe} list --verbose ^${name}$ | grep --fixed-strings --quiet '(${ensure})'",
}
}
'absent': {
exec { "remove-${name}":
command => "${exe} remove ${name}",
onlyif => "${exe} list | grep -q ^${name}$",
}
}
default: {
fail "'ensure' should be 'present', 'absent', or a version like '1.3.4'."
}
}
Exec {
path => '/bin:/usr/bin',
user => $logstash::logstash_user,
timeout => 1800,
}
}
|