Index: modules/fluent/manifests/init.pp |
diff --git a/modules/fluent/manifests/init.pp b/modules/fluent/manifests/init.pp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..44e7ae817a85f8540d7a4e8b6bb17641f56e03cf |
--- /dev/null |
+++ b/modules/fluent/manifests/init.pp |
@@ -0,0 +1,145 @@ |
+# == Class: fluent |
+# |
+# Create and maintain Fluentd (https://www.fluentd.org/) setups. |
+# |
+# == Parameters: |
+# |
+# [*config*] |
+# Overwrite the default concat/file options for the Fluentd agent config. |
+# |
+# [*key*] |
+# Overwrite the default apt::key used (given Class['apt'] is defined). |
+# |
+# [*package*] |
+# Overwrite the default package options, to fine-tune the target version (i.e. |
+# ensure => 'latest') or remove Fluentd (ensure => 'absent' or 'purged') |
+# |
+# [*service*] |
+# Overwrite the default service options. |
+# |
+# [*source*] |
+# Overwrite the default apt::source used (given Class['apt'] is defined). |
+# |
+# [*user*] |
+# Overwrite the default user options, i.e. to provide a $HOME directory. |
+# |
+# === Examples: |
+# |
+# class {'fluent': |
+# package => { |
+# ensure => 'latest', |
+# }, |
+# user => { |
+# managehome => true, |
+# shell => '/bin/sh', |
+# }, |
+# } |
+# |
+# class {'fluent': |
+# package => { |
+# ensure => 'absent', |
+# }, |
+# } |
+# |
+class fluent ( |
+ $config = { |
+ content => template('fluent/td-agent.conf.erb'), |
+ }, |
+ $key = { |
+ key => 'A12E206F', |
+ key_content => template("fluent/td-gpg-key.erb"), |
+ }, |
+ $package = {}, |
+ $service = {}, |
+ $source = { |
+ location => sprintf( |
+ 'https://packages.treasuredata.com/2/%s/%s', |
+ downcase($lsbdistid), downcase($lsbdistcodename) |
+ ), |
+ release => downcase($lsbdistcodename), |
+ repos => 'contrib', |
+ }, |
+ $user = {}, |
+) { |
+ |
+ include stdlib |
+ |
+ ensure_resource('package', $title, merge({ |
+ name => 'td-agent', |
+ }, $package)) |
+ |
+ # Used as default $ensure parameter for most resources below |
+ $ensure = getparam(Package[$title], 'ensure') ? { |
+ /^(absent|purged|held)$/ => 'absent', |
+ default => 'present', |
+ } |
+ |
+ ensure_resource('file', $title, merge({ |
+ ensure => $ensure, |
+ group => 'root', |
+ mode => '0644', |
+ owner => 'root', |
+ path => '/etc/td-agent/td-agent.conf', |
+ }, $config)) |
+ |
+ ensure_resource('user', $title, merge({ |
+ ensure => $ensure, |
+ name => 'td-agent', |
+ gid => 'td-agent', |
+ home => '/home/td-agent', |
+ shell => '/bin/false', |
+ }, $user)) |
+ |
+ Package[$title] -> File[$title] |
+ Package[$title] -> User[$title] |
+ |
+ # Used as internal shortcuts within fluent::* resource definitions |
+ $directory = regsubst(getparam(File[$title], 'path'), '/[^/]+$', '') |
+ $group = getparam(User[$title], 'gid') |
+ |
+ # Service resources don't properly support the concept of absence |
+ if ($ensure == 'present') or ($service['ensure'] != undef) { |
+ |
+ ensure_resource('service', $title, merge({ |
+ name => 'td-agent', |
+ }, $service)) |
+ |
+ Service[$title] <~ File[$title] |
+ Service[$title] <~ Package[$title] |
+ Service[$title] <~ User[$title] |
+ } |
+ |
+ # Base directories for fluent::config and fluent::plugin resources |
+ file {[ |
+ "$directory/config.d", |
+ "$directory/plugin", |
+ ]: |
+ before => File[$title], |
+ ensure => getparam(File[$title], 'ensure') ? { |
+ /^(present|link)$/ => 'directory', |
+ default => 'absent', |
+ }, |
+ group => getparam(File[$title], 'group'), |
+ mode => 0755, |
+ owner => getparam(File[$title], 'owner'), |
+ require => Package[$title], |
+ } |
+ |
+ # The only package provider recognized implicitly |
+ if getparam(Package[$title], 'provider') == 'apt' { |
+ |
+ ensure_resource('apt::key', $title, merge({ |
+ ensure => $ensure, |
+ name => 'treasure-data', |
+ }, $key)) |
+ |
+ ensure_resource('apt::source', $title, merge({ |
+ ensure => $ensure, |
+ include_src => false, |
+ name => 'treasure-data', |
+ }, $source)) |
+ |
+ Apt::Source[$title] <- Apt::Key[$title] |
+ Apt::Source[$title] -> Package[$title] |
+ } |
+} |