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,