Defined Type: thanos::resources::service

Defined in:
manifests/resources/service.pp

Summary

This defined type create component's service.

Overview

Examples:

thanos::resources::service { 'component_name':
  ensure => 'running',
  bin_path => '/usr/local/bin/thanos',
}

Parameters:

  • ensure (Variant[Stdlib::Ensure::Service, Enum['absent']])

    State ensured from component service.

  • bin_path (Stdlib::Absolutepath)

    Path where binary is located.

  • user (String)

    User running thanos.

  • group (String)

    Group under which thanos is running.

  • max_open_files (Optional[Integer]) (defaults to: undef)

    Define the maximum open files the service is allowed to use

  • params (Hash) (defaults to: {})

    Parameters passed to the binary.

  • extra_params (Hash) (defaults to: {})

    Parameters passed to the binary, ressently released in latest version of Thanos.



24
25
26
27
28
29
30
31
32
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
# File 'manifests/resources/service.pp', line 24

define thanos::resources::service (
  Variant[Stdlib::Ensure::Service, Enum['absent']] $ensure,
  Stdlib::Absolutepath                             $bin_path,
  String                                           $user,
  String                                           $group,
  Optional[Integer]                                $max_open_files = undef,
  Hash                                             $params       = {},
  Hash                                             $extra_params = {},
) {
  $_service_name   = "thanos-${title}"
  $_service_ensure = $ensure ? {
    'running' => running,
    default   => stopped,
  }
  $_service_enabled = $ensure ? {
    'running' => true,
    default   => false,
  }
  $_file_ensure    = $ensure ? {
    'running' => file,
    'stopped' => file,
    default   => absent,
  }

  $parameters = merge($params, $extra_params).filter |String $key, Data $value| {
    !!$value
  }.map |String $key, Data $value| {
    if $value.is_a(Array) {
      $value.prefix("  --${key}=").join(" \\\n")
    } elsif $value.is_a(Boolean) {
      "  --${key}"
    } else {
      "  --${key}=${value}"
    }
  }.filter |String $value| {
    !empty($value)
  }.join(" \\\n")

  file { "/lib/systemd/system/${_service_name}.service":
    ensure  => $_file_ensure,
    content => template('thanos/service.erb'),
    notify  => Exec["systemd reload for ${_service_name}"],
  }
  exec { "systemd reload for ${_service_name}":
    command     => '/usr/bin/systemctl daemon-reload',
    refreshonly => true,
    notify      => Service[$_service_name],
  }
  service { $_service_name:
    ensure => $_service_ensure,
    enable => $_service_enabled,
  }
}