diff --git a/REFERENCE.md b/REFERENCE.md index 47654f30..b87067ff 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -174,7 +174,10 @@ The following parameters are available in the `prometheus` class: * [`proxy_server`](#-prometheus--proxy_server) * [`proxy_type`](#-prometheus--proxy_type) * [`env_file_path`](#-prometheus--env_file_path) +* [`manage_config_dir`](#-prometheus--manage_config_dir) +* [`manage_init_file`](#-prometheus--manage_init_file) * [`manage_config`](#-prometheus--manage_config) +* [`manage_localstorage`](#-prometheus--manage_localstorage) * [`manage_prometheus_server`](#-prometheus--manage_prometheus_server) ##### `configname` @@ -903,12 +906,36 @@ Data type: `Stdlib::Absolutepath` +##### `manage_config_dir` + +Data type: `Boolean` + + + +Default value: `true` + +##### `manage_init_file` + +Data type: `Boolean` + + + +Default value: `true` + ##### `manage_config` Data type: `Boolean` +Default value: `true` + +##### `manage_localstorage` + +Data type: `Boolean` + + + Default value: `true` ##### `manage_prometheus_server` @@ -11621,7 +11648,9 @@ The following parameters are available in the `prometheus::server` class: * [`package_name`](#-prometheus--server--package_name) * [`package_ensure`](#-prometheus--server--package_ensure) * [`config_dir`](#-prometheus--server--config_dir) +* [`manage_config_dir`](#-prometheus--server--manage_config_dir) * [`localstorage`](#-prometheus--server--localstorage) +* [`manage_localstorage`](#-prometheus--server--manage_localstorage) * [`config_template`](#-prometheus--server--config_template) * [`config_mode`](#-prometheus--server--config_mode) * [`global_config`](#-prometheus--server--global_config) @@ -11659,6 +11688,7 @@ The following parameters are available in the `prometheus::server` class: * [`usershell`](#-prometheus--server--usershell) * [`proxy_server`](#-prometheus--server--proxy_server) * [`proxy_type`](#-prometheus--server--proxy_type) +* [`manage_init_file`](#-prometheus--server--manage_init_file) ##### `configname` @@ -11764,6 +11794,14 @@ Data type: `String` Default value: `$prometheus::config_dir` +##### `manage_config_dir` + +Data type: `Boolean` + + + +Default value: `$prometheus::manage_config_dir` + ##### `localstorage` Data type: `Variant[Stdlib::Absolutepath, Boolean[false]]` @@ -11772,6 +11810,14 @@ Data type: `Variant[Stdlib::Absolutepath, Boolean[false]]` Default value: `$prometheus::localstorage` +##### `manage_localstorage` + +Data type: `Boolean` + + + +Default value: `$prometheus::manage_localstorage` + ##### `config_template` Data type: `String` @@ -12068,6 +12114,14 @@ Data type: `Optional[Enum['none', 'http', 'https', 'ftp']]` Default value: `$prometheus::proxy_type` +##### `manage_init_file` + +Data type: `Boolean` + + + +Default value: `$prometheus::manage_init_file` + ### `prometheus::snmp_exporter` This module manages prometheus snmp_exporter diff --git a/data/Archlinux.yaml b/data/Archlinux.yaml index 75d4ac9a..5564ff55 100644 --- a/data/Archlinux.yaml +++ b/data/Archlinux.yaml @@ -1,7 +1,12 @@ --- +prometheus::manage_localstorage: false +prometheus::server::manage_user: false +prometheus::server::manage_group: false +prometheus::server::package_ensure: 'installed' +prometheus::server::manage_config_dir: false +prometheus::server::manage_init_file: false prometheus::configname: 'prometheus.yml' -prometheus::server::init_style: 'none' -prometheus::version: '2.10.0' +prometheus::version: '2.46.0' prometheus::install_method: 'package' prometheus::bin_dir: '/usr/bin' prometheus::env_file_path: '/etc/conf.d' diff --git a/manifests/config.pp b/manifests/config.pp index b7646466..417935c2 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -189,63 +189,65 @@ } } - case $prometheus::server::init_style { # lint:ignore:case_without_default - 'upstart': { - file { '/etc/init/prometheus.conf': - ensure => file, - mode => '0444', - owner => 'root', - group => 'root', - content => template('prometheus/prometheus.upstart.erb'), - notify => $notify, + if $prometheus::server::manage_init_file { + case $prometheus::server::init_style { + 'upstart': { + file { '/etc/init/prometheus.conf': + ensure => file, + mode => '0444', + owner => 'root', + group => 'root', + content => template('prometheus/prometheus.upstart.erb'), + notify => $notify, + } + file { '/etc/init.d/prometheus': + ensure => link, + target => '/lib/init/upstart-job', + owner => 'root', + group => 'root', + mode => '0755', + notify => $notify, + } } - file { '/etc/init.d/prometheus': - ensure => link, - target => '/lib/init/upstart-job', - owner => 'root', - group => 'root', - mode => '0755', - notify => $notify, + 'systemd': { + systemd::unit_file { 'prometheus.service': + content => epp("${module_name}/prometheus.systemd.epp", { + 'user' => $prometheus::server::user, + 'group' => $prometheus::server::group, + 'daemon_flags' => $daemon_flags, + 'max_open_files' => $max_open_files, + 'bin_dir' => $prometheus::server::bin_dir, + }), + notify => $notify, + } + if versioncmp($facts['puppetversion'],'6.1.0') < 0 { + # Puppet 5 doesn't have https://tickets.puppetlabs.com/browse/PUP-3483 + # and camptocamp/systemd only creates this relationship when managing the service + Class['systemd::systemctl::daemon_reload'] -> Class['prometheus::run_service'] + } } - } - 'systemd': { - systemd::unit_file { 'prometheus.service': - content => epp("${module_name}/prometheus.systemd.epp", { - 'user' => $prometheus::server::user, - 'group' => $prometheus::server::group, - 'daemon_flags' => $daemon_flags, - 'max_open_files' => $max_open_files, - 'bin_dir' => $prometheus::server::bin_dir, - }), - notify => $notify, - } - if versioncmp($facts['puppetversion'],'6.1.0') < 0 { - # Puppet 5 doesn't have https://tickets.puppetlabs.com/browse/PUP-3483 - # and camptocamp/systemd only creates this relationship when managing the service - Class['systemd::systemctl::daemon_reload'] -> Class['prometheus::run_service'] + 'sysv', 'sles': { + file { "/etc/init.d/${prometheus::server::service_name}": + ensure => file, + mode => '0555', + owner => 'root', + group => 'root', + content => template("prometheus/prometheus.${prometheus::server::init_style}.erb"), + notify => $notify, + } } - } - 'sysv', 'sles': { - file { "/etc/init.d/${prometheus::server::service_name}": - ensure => file, - mode => '0555', - owner => 'root', - group => 'root', - content => template("prometheus/prometheus.${prometheus::server::init_style}.erb"), - notify => $notify, - } - } - 'launchd': { - file { '/Library/LaunchDaemons/io.prometheus.daemon.plist': - ensure => file, - mode => '0644', - owner => 'root', - group => 'wheel', - content => template('prometheus/prometheus.launchd.erb'), - notify => $notify, + 'launchd': { + file { '/Library/LaunchDaemons/io.prometheus.daemon.plist': + ensure => file, + mode => '0644', + owner => 'root', + group => 'wheel', + content => template('prometheus/prometheus.launchd.erb'), + notify => $notify, + } } + default, 'none': {} } - 'none': {} } # TODO: promtool currently does not support checking the syntax of file_sd_config "includes". diff --git a/manifests/init.pp b/manifests/init.pp index 47c258be..63aa5c06 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -240,10 +240,13 @@ String $config_template = 'prometheus/prometheus.yaml.erb', String $config_mode = '0640', String $config_dir = '/etc/prometheus', + Boolean $manage_config_dir = true, + Boolean $manage_init_file = true, Variant[Array,Hash] $alerts = {}, Boolean $manage_config = true, String $group = 'prometheus', Stdlib::Absolutepath $localstorage = '/var/lib/prometheus', + Boolean $manage_localstorage = true, Stdlib::Absolutepath $bin_dir = '/usr/local/bin', String $version = '2.30.3', String $install_method = 'url', diff --git a/manifests/install.pp b/manifests/install.pp index 579fdda8..ae9fc502 100644 --- a/manifests/install.pp +++ b/manifests/install.pp @@ -6,7 +6,7 @@ class prometheus::install { assert_private() - if $prometheus::server::localstorage { + if $prometheus::server::localstorage and $prometheus::server::manage_localstorage { file { $prometheus::server::localstorage: ensure => 'directory', owner => $prometheus::server::user, @@ -59,6 +59,7 @@ package { $prometheus::server::package_name: ensure => $prometheus::server::package_ensure, notify => $prometheus::server::notify_service, + before => File["${prometheus::server::config_dir}/rules"], } if $prometheus::server::manage_user { User[$prometheus::server::user] -> Package[$prometheus::server::package_name] @@ -87,13 +88,15 @@ system => true, }) } - file { $prometheus::server::config_dir: - ensure => 'directory', - owner => 'root', - group => $prometheus::server::group, - mode => $prometheus::server::config_mode, - purge => $prometheus::server::purge_config_dir, - recurse => $prometheus::server::purge_config_dir, - force => $prometheus::server::purge_config_dir, + if $prometheus::server::manage_config_dir { + file { $prometheus::server::config_dir: + ensure => 'directory', + owner => 'root', + group => $prometheus::server::group, + mode => $prometheus::server::config_mode, + purge => $prometheus::server::purge_config_dir, + recurse => $prometheus::server::purge_config_dir, + force => $prometheus::server::purge_config_dir, + } } } diff --git a/manifests/server.pp b/manifests/server.pp index 28355243..6c37d0ef 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -13,7 +13,9 @@ 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, @@ -51,6 +53,7 @@ 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,