Puppet Class: prometheus::server

Inherits:
prometheus
Defined in:
manifests/server.pp

Overview

class to manage the actual prometheus server this is a private class that gets called from the init.pp

Parameters:

  • configname (String) (defaults to: $prometheus::configname)
  • user (String) (defaults to: $prometheus::user)
  • group (String) (defaults to: $prometheus::group)
  • extra_groups (Array) (defaults to: $prometheus::extra_groups)
  • bin_dir (Stdlib::Absolutepath) (defaults to: $prometheus::bin_dir)
  • shared_dir (Stdlib::Absolutepath) (defaults to: $prometheus::shared_dir)
  • version (String) (defaults to: $prometheus::version)
  • install_method (String) (defaults to: $prometheus::install_method)
  • download_url_base (Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]) (defaults to: $prometheus::download_url_base)
  • download_extension (String) (defaults to: $prometheus::download_extension)
  • package_name (String) (defaults to: $prometheus::package_name)
  • package_ensure (String) (defaults to: $prometheus::package_ensure)
  • config_dir (String) (defaults to: $prometheus::config_dir)
  • localstorage (Stdlib::Absolutepath) (defaults to: $prometheus::localstorage)
  • config_template (String) (defaults to: $prometheus::config_template)
  • config_mode (String) (defaults to: $prometheus::config_mode)
  • global_config (Hash) (defaults to: $prometheus::global_config)
  • rule_files (Array) (defaults to: $prometheus::rule_files)
  • scrape_configs (Array) (defaults to: $prometheus::scrape_configs)
  • remote_read_configs (Array) (defaults to: $prometheus::remote_read_configs)
  • remote_write_configs (Array) (defaults to: $prometheus::remote_write_configs)
  • alerts (Variant[Array,Hash]) (defaults to: $prometheus::alerts)
  • alert_relabel_config (Array) (defaults to: $prometheus::alert_relabel_config)
  • alertmanagers_config (Array) (defaults to: $prometheus::alertmanagers_config)
  • storage_retention (String) (defaults to: $prometheus::storage_retention)
  • env_file_path (Stdlib::Absolutepath) (defaults to: $prometheus::env_file_path)
  • extra_alerts (Hash) (defaults to: $prometheus::extra_alerts)
  • service_enable (Boolean) (defaults to: $prometheus::service_enable)
  • service_ensure (String) (defaults to: $prometheus::service_ensure)
  • manage_service (Boolean) (defaults to: $prometheus::manage_service)
  • restart_on_change (Boolean) (defaults to: $prometheus::restart_on_change)
  • init_style (String) (defaults to: $prometheus::init_style)
  • extra_options (String) (defaults to: $prometheus::extra_options)
  • config_hash (Hash) (defaults to: $prometheus::config_hash)
  • config_defaults (Hash) (defaults to: $prometheus::config_defaults)
  • os (String) (defaults to: $prometheus::os)
  • download_url (Optional[String]) (defaults to: $prometheus::download_url)
  • arch (String) (defaults to: $prometheus::real_arch)
  • manage_group (Boolean) (defaults to: $prometheus::manage_group)
  • purge_config_dir (Boolean) (defaults to: $prometheus::purge_config_dir)
  • manage_user (Boolean) (defaults to: $prometheus::manage_user)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'manifests/server.pp', line 3

class prometheus::server (
  String $configname                                            = $prometheus::configname,
  String $user                                                  = $prometheus::user,
  String $group                                                 = $prometheus::group,
  Array $extra_groups                                           = $prometheus::extra_groups,
  Stdlib::Absolutepath $bin_dir                                 = $prometheus::bin_dir,
  Stdlib::Absolutepath $shared_dir                              = $prometheus::shared_dir,
  String $version                                               = $prometheus::version,
  String $install_method                                        = $prometheus::install_method,
  Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base = $prometheus::download_url_base,
  String $download_extension                                    = $prometheus::download_extension,
  String $package_name                                          = $prometheus::package_name,
  String $package_ensure                                        = $prometheus::package_ensure,
  String $config_dir                                            = $prometheus::config_dir,
  Stdlib::Absolutepath $localstorage                            = $prometheus::localstorage,
  String $config_template                                       = $prometheus::config_template,
  String $config_mode                                           = $prometheus::config_mode,
  Hash $global_config                                           = $prometheus::global_config,
  Array $rule_files                                             = $prometheus::rule_files,
  Array $scrape_configs                                         = $prometheus::scrape_configs,
  Array $remote_read_configs                                    = $prometheus::remote_read_configs,
  Array $remote_write_configs                                   = $prometheus::remote_write_configs,
  Variant[Array,Hash] $alerts                                   = $prometheus::alerts,
  Array $alert_relabel_config                                   = $prometheus::alert_relabel_config,
  Array $alertmanagers_config                                   = $prometheus::alertmanagers_config,
  String $storage_retention                                     = $prometheus::storage_retention,
  Stdlib::Absolutepath $env_file_path                           = $prometheus::env_file_path,
  Hash $extra_alerts                                            = $prometheus::extra_alerts,
  Boolean $service_enable                                       = $prometheus::service_enable,
  String $service_ensure                                        = $prometheus::service_ensure,
  Boolean $manage_service                                       = $prometheus::manage_service,
  Boolean $restart_on_change                                    = $prometheus::restart_on_change,
  String $init_style                                            = $prometheus::init_style,
  String $extra_options                                         = $prometheus::extra_options,
  Hash $config_hash                                             = $prometheus::config_hash,
  Hash $config_defaults                                         = $prometheus::config_defaults,
  String $os                                                    = $prometheus::os,
  Optional[String] $download_url                                = $prometheus::download_url,
  String $arch                                                  = $prometheus::real_arch,
  Boolean $manage_group                                         = $prometheus::manage_group,
  Boolean $purge_config_dir                                     = $prometheus::purge_config_dir,
  Boolean $manage_user                                          = $prometheus::manage_user,
) inherits prometheus {

  if( versioncmp($version, '1.0.0') == -1 ){
    $real_download_url = pick($download_url,
      "${download_url_base}/download/${version}/${package_name}-${version}.${os}-${arch}.${download_extension}")
  } else {
    $real_download_url = pick($download_url,
      "${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}")
  }
  $notify_service = $restart_on_change ? {
    true    => Service['prometheus'],
    default => undef,
  }

  $config_hash_real = assert_type(Hash, deep_merge($config_defaults, $config_hash))

  file { "${config_dir}/rules":
    ensure => 'directory',
    owner  => $user,
    group  => $group,
    mode   => $config_mode,
  }

  $extra_alerts.each | String $alerts_file_name, Hash $alerts_config | {
    prometheus::alerts { $alerts_file_name:
      alerts   => $alerts_config,
    }
  }
  $extra_rule_files = suffix(prefix(keys($extra_alerts), "${config_dir}/rules/"), '.rules')

  if ! empty($alerts) {
    prometheus::alerts { 'alert':
      alerts   => $alerts,
      location => $config_dir,
    }
    $_rule_files = concat(["${config_dir}/alert.rules"], $extra_rule_files)
  }
  else {
    $_rule_files = $extra_rule_files
  }
  contain prometheus::install
  contain prometheus::config
  contain prometheus::run_service
  contain prometheus::service_reload

  Class['prometheus::install']
  -> Class['prometheus::config']
  -> Class['prometheus::run_service']
  -> Class['prometheus::service_reload']
}