| Index: modules/logstash/manifests/init.pp |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/modules/logstash/manifests/init.pp |
| @@ -0,0 +1,109 @@ |
| +# == Class: logstash |
| +# |
| +# Manage Logstash (https://logstash.net/) installations via APT. |
| +# |
| +# Please refer to the online documentation at Elastic for more information |
| +# on the logstash software, it's usage and configuration options: |
| +# |
| +# https://www.elastic.co/guide/en/logstash/current/index.html |
| +# |
| +# === Parameters: |
| +# |
| +# [*contrib*] |
| +# Whether to realize Package['logstash-contrib']. |
| +# |
| +# [*ensure*] |
| +# Either 'present'/'stopped', 'running'/'started', or 'absent'/'purged'. |
| +# Note that Service['logstash'] is only realized implicitly when $ensure |
| +# is neither 'absent' nor 'purged'. |
| +# |
| +# [*pipelines*] |
| +# A hash to setup logstash::pipeline {$name: $parameter} resources. |
| +# |
| +# [*version*] |
| +# The https://packages.elasticsearch.org/logstash/%s/debian $version. |
| +# |
| +# === Examples: |
| +# |
| +# class {'logstash': |
| +# contrib => true, |
| +# pipelines => { |
| +# 'example' => { |
| +# # see type logstash::pipeline for a parameter reference |
| +# }, |
| +# }, |
| +# } |
| +# |
| +class logstash ( |
| + $contrib = false, |
| + $ensure = 'running', |
| + $pipelines = {}, |
| + $version = '1.4', |
| +) { |
| + |
| + $ensure_file = $ensure ? { |
| + /^(absent|purged)$/ => 'absent', |
| + default => 'present', |
| + } |
| + |
| + apt::key {'logstash': |
| + ensure => $ensure_file, |
| + key => 'D88E42B4', |
| + key_content => template('logstash/elastic-logstash-gpg-key.erb'), |
| + } |
| + |
| + apt::source {'logstash': |
| + ensure => $ensure_file, |
| + include_src => false, |
| + location => "https://packages.elasticsearch.org/logstash/$version/debian", |
| + release => 'stable', |
| + require => Apt::Key['logstash'], |
| + } |
| + |
| + package {'logstash': |
| + ensure => $ensure ? { |
| + /^(absent|purged)$/ => $ensure, |
| + default => 'present', |
| + }, |
| + require => Apt::Source['logstash'], |
| + } |
| + |
| + @package {'logstash-contrib': |
| + before => Service['logstash'], |
| + ensure => $ensure ? { |
| + /^(absent|purged)$/ => $ensure, |
| + default => 'present', |
| + }, |
| + require => Package['logstash'], |
| + } |
| + |
| + @service {'logstash': |
| + enable => $ensure ? { |
| + /^(absent|purged)$/ => false, |
| + default => true, |
| + }, |
| + ensure => $ensure ? { |
| + /^(running|started)$/ => 'running', |
| + default => 'stopped', |
| + }, |
| + hasrestart => true, |
| + require => Package['logstash'], |
| + } |
| + |
| + file {'/usr/local/bin/logstash': |
| + ensure => $ensure_file, |
| + mode => 0755, |
| + source => 'puppet:///modules/logstash/logstash.sh', |
| + require => Package['logstash'], |
| + } |
| + |
| + if $contrib { |
| + realize(Package['logstash-contrib']) |
| + } |
| + |
| + if $ensure !~ /^(absent|purged)$/ { |
| + realize(Service['logstash']) |
| + } |
| + |
| + create_resources('logstash::pipeline', $pipelines) |
| +} |