+++ /dev/null
-# == Define: elasticsearch::plugin
-#
-# This define allows you to install arbitrary Elasticsearch plugins
-# either by using the default repositories or by specifying an URL
-#
-# All default values are defined in the elasticsearch::params class.
-#
-#
-# === Parameters
-#
-# [*module_dir*]
-# Directory name where the module will be installed
-# Value type is string
-# Default value: None
-# This variable is required
-#
-# [*ensure*]
-# Whether the plugin will be installed or removed.
-# Set to 'absent' to ensure a plugin is not installed
-# Value type is string
-# Default value: present
-# This variable is optional
-#
-# [*url*]
-# Specify an URL where to download the plugin from.
-# Value type is string
-# Default value: None
-# This variable is optional
-#
-# [*proxy_host*]
-# Proxy host to use when installing the plugin
-# Value type is string
-# Default value: None
-# This variable is optional
-#
-# [*proxy_port*]
-# Proxy port to use when installing the plugin
-# Value type is number
-# Default value: None
-# This variable is optional
-#
-# [*instances*]
-# Specify all the instances related
-# value type is string or array
-#
-# === Examples
-#
-# # From official repository
-# elasticsearch::plugin{'mobz/elasticsearch-head': module_dir => 'head'}
-#
-# # From custom url
-# elasticsearch::plugin{ 'elasticsearch-jetty':
-# module_dir => 'elasticsearch-jetty',
-# url => 'https://oss-es-plugins.s3.amazonaws.com/elasticsearch-jetty/elasticsearch-jetty-0.90.0.zip',
-# }
-#
-# === Authors
-#
-# * Matteo Sessa <mailto:matteo.sessa@catchoftheday.com.au>
-# * Dennis Konert <mailto:dkonert@gmail.com>
-# * Richard Pijnenburg <mailto:richard.pijnenburg@elasticsearch.com>
-#
-define elasticsearch::plugin(
- $module_dir,
- $instances,
- $ensure = 'present',
- $url = undef,
- $proxy_host = undef,
- $proxy_port = undef,
-) {
-
- include elasticsearch
-
- Exec {
- path => [ '/bin', '/usr/bin', '/usr/local/bin' ],
- cwd => '/',
- user => $elasticsearch::elasticsearch_user,
- tries => 6,
- try_sleep => 10,
- }
-
- $notify_service = $elasticsearch::restart_on_change ? {
- false => undef,
- default => Elasticsearch::Service[$instances],
- }
-
- if ($module_dir != '') {
- validate_string($module_dir)
- } else {
- fail("module_dir undefined for plugin ${name}")
- }
-
- if ($proxy_host != undef and $proxy_port != undef) {
- $proxy = " -DproxyPort=${proxy_port} -DproxyHost=${proxy_host}"
- } else {
- $proxy = '' # lint:ignore:empty_string_assignment
- }
-
- if ($url != '') {
- validate_string($url)
- $install_cmd = "${elasticsearch::plugintool}${proxy} -install ${name} -url ${url}"
- $exec_rets = [0,1]
- } else {
- $install_cmd = "${elasticsearch::plugintool}${proxy} -install ${name}"
- $exec_rets = [0,]
- }
-
- case $ensure {
- 'installed', 'present': {
- exec {"install_plugin_${name}":
- command => $install_cmd,
- creates => "${elasticsearch::plugindir}/${module_dir}",
- returns => $exec_rets,
- notify => $notify_service,
- require => File[$elasticsearch::plugindir],
- }
- }
- default: {
- exec {"remove_plugin_${name}":
- command => "${elasticsearch::plugintool} --remove ${module_dir}",
- onlyif => "test -d ${elasticsearch::plugindir}/${module_dir}",
- notify => $notify_service,
- }
- }
- }
-}