129 lines
3.7 KiB
Puppet
129 lines
3.7 KiB
Puppet
# Copyright 2015 Mirantis, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
# == Class: lma_collector
|
|
#
|
|
# The lma_collector class is able to install the common components for running
|
|
# the Logging, Monitoring and Alerting collector service.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# === Examples
|
|
#
|
|
# === Authors
|
|
#
|
|
# Simon Pasquier <spasquier@mirantis.com>
|
|
#
|
|
# === Copyright
|
|
#
|
|
# Copyright 2015 Mirantis Inc., unless otherwise noted.
|
|
#
|
|
class lma_collector (
|
|
$tags = $lma_collector::params::tags,
|
|
$user = undef,
|
|
$groups = [],
|
|
$poolsize = 100,
|
|
) inherits lma_collector::params {
|
|
include heka::params
|
|
|
|
validate_hash($tags)
|
|
validate_integer($poolsize)
|
|
|
|
$service_name = $lma_collector::params::service_name
|
|
$config_dir = $lma_collector::params::config_dir
|
|
$plugins_dir = $lma_collector::params::plugins_dir
|
|
$lua_modules_dir = $heka::params::lua_modules_dir
|
|
|
|
$additional_groups = $user ? {
|
|
'root' => [],
|
|
default => union($lma_collector::params::groups, $groups),
|
|
}
|
|
|
|
class { 'heka':
|
|
service_name => $service_name,
|
|
config_dir => $config_dir,
|
|
user => $user,
|
|
additional_groups => $additional_groups,
|
|
hostname => $::hostname,
|
|
internal_statistics => false,
|
|
max_message_size => $lma_collector::params::hekad_max_message_size,
|
|
max_process_inject => $lma_collector::params::hekad_max_process_inject,
|
|
max_timer_inject => $lma_collector::params::hekad_max_timer_inject,
|
|
poolsize => $poolsize,
|
|
}
|
|
|
|
# Copy our Lua modules to Heka's modules directory so they're available for
|
|
# the sandboxes
|
|
file { $lua_modules_dir:
|
|
ensure => directory,
|
|
source => 'puppet:///modules/lma_collector/plugins/common',
|
|
recurse => remote,
|
|
notify => Class['lma_collector::service'],
|
|
require => Class['heka'],
|
|
}
|
|
|
|
file { "${lua_modules_dir}/extra_fields.lua":
|
|
ensure => present,
|
|
content => template('lma_collector/extra_fields.lua.erb'),
|
|
require => File[$lua_modules_dir],
|
|
notify => Class['lma_collector::service'],
|
|
}
|
|
|
|
file { $plugins_dir:
|
|
ensure => directory,
|
|
}
|
|
|
|
file { "${plugins_dir}/decoders":
|
|
ensure => directory,
|
|
source => 'puppet:///modules/lma_collector/plugins/decoders',
|
|
recurse => remote,
|
|
notify => Class['lma_collector::service'],
|
|
require => File[$plugins_dir]
|
|
}
|
|
|
|
file { "${plugins_dir}/filters":
|
|
ensure => directory,
|
|
source => 'puppet:///modules/lma_collector/plugins/filters',
|
|
recurse => remote,
|
|
notify => Class['lma_collector::service'],
|
|
require => File[$plugins_dir]
|
|
}
|
|
|
|
file { "${plugins_dir}/encoders":
|
|
ensure => directory,
|
|
source => 'puppet:///modules/lma_collector/plugins/encoders',
|
|
recurse => remote,
|
|
notify => Class['lma_collector::service'],
|
|
require => File[$plugins_dir]
|
|
}
|
|
|
|
file { "${plugins_dir}/outputs":
|
|
ensure => directory,
|
|
source => 'puppet:///modules/lma_collector/plugins/outputs',
|
|
recurse => remote,
|
|
notify => Class['lma_collector::service'],
|
|
require => File[$plugins_dir]
|
|
}
|
|
|
|
if size($lma_collector::params::additional_packages) > 0 {
|
|
package { $lma_collector::params::additional_packages:
|
|
ensure => present,
|
|
}
|
|
}
|
|
|
|
class { 'lma_collector::service':
|
|
require => Class['heka'],
|
|
}
|
|
}
|