diff --git a/.vscode/settings.json b/.vscode/settings.json index 47c9c38..1df23c8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,7 @@ "GOMAXPROCS", "Iseconds", "nullglob", + "oneshot", "PGDATABASE", "PGHOST", "PGPASSWORD", @@ -13,7 +14,9 @@ "PGUSER", "pipefail", "procs", + "prun", "readaccess", + "refreshonly", "reqpackage", "rpms", "shopt", diff --git a/manifests/main/config.pp b/manifests/main/config.pp index b5ed09c..42777b6 100644 --- a/manifests/main/config.pp +++ b/manifests/main/config.pp @@ -6,4 +6,10 @@ class prometheus_cd::main::config ( ) inherits prometheus_cd::params { include prometheus_cd::main::service + + exec { 'systemd-daemon-reload': + command => '/bin/systemctl daemon-reload', + path => ['/bin', '/usr/bin'], + refreshonly => true, + } } diff --git a/manifests/main/files.pp b/manifests/main/files.pp index 16b907d..54fca98 100644 --- a/manifests/main/files.pp +++ b/manifests/main/files.pp @@ -66,18 +66,44 @@ class prometheus_cd::main::files ( seltype => usr_, seluser => unconfined_u, content => template('prometheus_cd/prune.env.erb'), - # notify Service ToDo, + } + file { $ps_pruning_svc_file: + ensure => file, + owner => 'root', + group => 'root', + mode => '0644', + selrange => s0, + selrole => object_r, + seltype => systemd_unit_file_t, + seluser => unconfined_u, + content => template('prometheus_cd/prometheus-prune-service.erb'), + notify => Exec['systemd-daemon-reload'], + } + file { $ps_pruning_timer_file: + ensure => file, + owner => 'root', + group => 'root', + mode => '0644', + selrange => s0, + selrole => object_r, + seltype => systemd_unit_file_t, + seluser => unconfined_u, + content => template('prometheus_cd/prometheus-prune-timer.erb'), + notify => Exec['systemd-daemon-reload'], } } if $ps_enable_pruning == false { file { $ps_pruning_file: - ensure => absent, - # notify Service ToDo, + ensure => absent, + notify => Exec['systemd-daemon-reload'], } file { $ps_env_file: ensure => absent, - # notify Service ToDo, + } + file { $ps_pruning_svc_file: + ensure => absent, + notify => Exec['systemd-daemon-reload'], } } } diff --git a/manifests/main/service.pp b/manifests/main/service.pp index 21e3db3..6b1db7b 100644 --- a/manifests/main/service.pp +++ b/manifests/main/service.pp @@ -23,4 +23,28 @@ class prometheus_cd::main::service ( enable => true, } } + if $ps_enable_pruning == true { + service { $ps_prune_service: + ensure => running, + hasstatus => true, + hasrestart => true, + enable => true, + } + service { $ps_prune_timer: + ensure => running, + hasstatus => true, + hasrestart => true, + enable => true, + } + } + if $ps_enable_pruning == false { + service { $ps_prune_service: + ensure => stopped, + enable => true, + } + service { $ps_prune_timer: + ensure => stopped, + enable => true, + } + } } diff --git a/manifests/params.pp b/manifests/params.pp index 9583ee2..8af480d 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -109,15 +109,20 @@ class prometheus_cd::params ( # dirs $ps_main_dir = '/etc/prometheus' $ps_system_file_dir = '/etc/systemd/system/prometheus.service.d' + $ps_system_dir = '/etc/systemd/system/' # files $ps_main_file = "${ps_main_dir}/prometheus.yml" $ps_web_config_file = "${ps_main_dir}/web.yml" $ps_system_service_file = "${ps_system_file_dir}/override.conf" + $ps_pruning_svc_file = "${ps_system_dir}/prometheus-prune.service" + $ps_pruning_timer_file = "${ps_system_dir}/prometheus-prune.timer" # services $ps_prom_service = 'prometheus' $ps_ne_service = 'node_exporter' + $ps_prune_service = 'prometheus-prune.service' + $ps_prune_timer = 'prometheus-prune.timer' # includes must be last include prometheus_cd::main::config diff --git a/templates/prometheus-orune-timer.erb b/templates/prometheus-orune-timer.erb new file mode 100644 index 0000000..75799a7 --- /dev/null +++ b/templates/prometheus-orune-timer.erb @@ -0,0 +1,10 @@ +[Unit] +Description=Run Prometheus TSDB prune script every 6 hours + +[Timer] +OnBootSec=10min +OnUnitActiveSec=6h +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/templates/prometheus-prune-service.erb b/templates/prometheus-prune-service.erb new file mode 100644 index 0000000..d14af1d --- /dev/null +++ b/templates/prometheus-prune-service.erb @@ -0,0 +1,13 @@ +[Unit] +Description=Prometheus TSDB prune service +Wants=network-online.target +After=network-online.target + +[Service] +Type=oneshot +User=prometheus +Group=prometheus +EnvironmentFile=<%= @ps_env_file %> +ExecStart=<%= @ps_pruning_file %> +Nice=10 +IOWeight=80