Puppet Class: prometheus::server

Inherits:
prometheus
Defined in:
manifests/server.pp

Summary

class to manage the actual prometheus server. This class gets called from the init.pp

Overview

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 (Prometheus::Uri) (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)
  • manage_config_dir (Boolean) (defaults to: $prometheus::manage_config_dir)
  • localstorage (Variant[Stdlib::Absolutepath, Boolean[false]]) (defaults to: $prometheus::localstorage)
  • manage_localstorage (Boolean) (defaults to: $prometheus::manage_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)
  • include_default_scrape_configs (Boolean) (defaults to: $prometheus::include_default_scrape_configs)
  • remote_read_configs (Array) (defaults to: $prometheus::remote_read_configs)
  • remote_write_configs (Array) (defaults to: $prometheus::remote_write_configs)
  • enable_tracing (Boolean) (defaults to: $prometheus::enable_tracing)
  • tracing_config (Hash) (defaults to: $prometheus::tracing_config)
  • 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 (Variant[String, Boolean[false]]) (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 (Stdlib::Ensure::Service) (defaults to: $prometheus::service_ensure)
  • service_name (String[1]) (defaults to: $prometheus::service_name)
  • manage_service (Boolean) (defaults to: $prometheus::manage_service)
  • restart_on_change (Boolean) (defaults to: $prometheus::restart_on_change)
  • init_style (Prometheus::Initstyle) (defaults to: $prometheus::init_style)
  • extra_options (Optional[String[1]]) (defaults to: $prometheus::extra_options)
  • config_hash (Hash) (defaults to: $prometheus::config_hash)
  • config_defaults (Hash) (defaults to: $prometheus::config_defaults)
  • os (String[1]) (defaults to: $prometheus::os)
  • download_url (Optional[String]) (defaults to: $prometheus::download_url)
  • arch (String[1]) (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)
  • manage_config (Boolean) (defaults to: $prometheus::manage_config)
  • external_url (Optional[Variant[Stdlib::HTTPurl, Stdlib::Unixpath, String[1]]]) (defaults to: $prometheus::external_url)
  • collect_scrape_jobs (Optional[Array[Hash[String[1], Any]]]) (defaults to: $prometheus::collect_scrape_jobs)
  • collect_tag (Optional[String[1]]) (defaults to: $prometheus::collect_tag)
  • max_open_files (Optional[Integer]) (defaults to: $prometheus::max_open_files)
  • usershell (Stdlib::Absolutepath) (defaults to: $prometheus::usershell)
  • proxy_server (Optional[String[1]]) (defaults to: $prometheus::proxy_server)
  • proxy_type (Optional[Enum['none', 'http', 'https', 'ftp']]) (defaults to: $prometheus::proxy_type)
  • manage_init_file (Boolean) (defaults to: $prometheus::manage_init_file)


2
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'manifests/server.pp', line 2

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,
  Prometheus::Uri $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,
  Boolean $manage_config_dir                                                    = $prometheus::manage_config_dir,
  Variant[Stdlib::Absolutepath, Boolean[false]] $localstorage                   = $prometheus::localstorage,
  Boolean $manage_localstorage                                                  = $prometheus::manage_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,
  Boolean $include_default_scrape_configs                                       = $prometheus::include_default_scrape_configs,
  Array $remote_read_configs                                                    = $prometheus::remote_read_configs,
  Array $remote_write_configs                                                   = $prometheus::remote_write_configs,
  Boolean $enable_tracing                                                       = $prometheus::enable_tracing,
  Hash $tracing_config                                                          = $prometheus::tracing_config,
  Variant[Array,Hash] $alerts                                                   = $prometheus::alerts,
  Array $alert_relabel_config                                                   = $prometheus::alert_relabel_config,
  Array $alertmanagers_config                                                   = $prometheus::alertmanagers_config,
  Variant[String, Boolean[false]] $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,
  Stdlib::Ensure::Service $service_ensure                                       = $prometheus::service_ensure,
  String[1] $service_name                                                       = $prometheus::service_name,
  Boolean $manage_service                                                       = $prometheus::manage_service,
  Boolean $restart_on_change                                                    = $prometheus::restart_on_change,
  Prometheus::Initstyle $init_style                                             = $prometheus::init_style,
  Optional[String[1]] $extra_options                                            = $prometheus::extra_options,
  Hash $config_hash                                                             = $prometheus::config_hash,
  Hash $config_defaults                                                         = $prometheus::config_defaults,
  String[1] $os                                                                 = $prometheus::os,
  Optional[String] $download_url                                                = $prometheus::download_url,
  String[1] $arch                                                               = $prometheus::real_arch,
  Boolean $manage_group                                                         = $prometheus::manage_group,
  Boolean $purge_config_dir                                                     = $prometheus::purge_config_dir,
  Boolean $manage_user                                                          = $prometheus::manage_user,
  Boolean $manage_config                                                        = $prometheus::manage_config,
  Optional[Variant[Stdlib::HTTPurl, Stdlib::Unixpath, String[1]]] $external_url = $prometheus::external_url,
  Optional[Array[Hash[String[1], Any]]] $collect_scrape_jobs                    = $prometheus::collect_scrape_jobs,
  Optional[String[1]] $collect_tag                                              = $prometheus::collect_tag,
  Optional[Integer] $max_open_files                                             = $prometheus::max_open_files,
  Stdlib::Absolutepath $usershell                                               = $prometheus::usershell,
  Optional[String[1]] $proxy_server                                             = $prometheus::proxy_server,
  Optional[Enum['none', 'http', 'https', 'ftp']] $proxy_type                    = $prometheus::proxy_type,
  Boolean $manage_init_file                                                     = $prometheus::manage_init_file,
) 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[$service_name],
    default => undef,
  }

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

  file { "${config_dir}/rules":
    ensure => 'directory',
    owner  => 'root',
    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,
      version  => $version,
    }
    $_rule_files = concat(["${config_dir}/alert.rules"], $extra_rule_files, $rule_files)
  }
  else {
    $_rule_files = concat($extra_rule_files, $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'] # Note: config must *not* be configured here to notify run_service.  Some resources in config.pp need to notify service_reload instead
  -> Class['prometheus::service_reload']
}