Skip to content

Commit 94078fe

Browse files
committed
feat(args): handle service arguments the same way
1 parent 34ada49 commit 94078fe

File tree

10 files changed

+87
-35
lines changed

10 files changed

+87
-35
lines changed

pillar.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ prometheus:
66
config_file: /etc/prometheus/prometheus.yml
77
service:
88
name: prometheus
9-
flags: --web.listen-address="0.0.0.0:9090"
9+
args:
10+
web.listen-address: 0.0.0.0:9090
1011

1112
tofs:
1213
# The files_switch key serves as a selector for alternative

prometheus/config/args.sls

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
7+
{%- from tplroot ~ "/map.jinja" import concat_args %}
8+
9+
{%- if 'args' in prometheus.service %}
10+
{%- set args = prometheus.service.get('args', {}) -%}
11+
12+
{%- if 'storage.tsdb.path' in args.keys() %}
13+
prometheus-data-dir:
14+
file.directory:
15+
- name: {{ args['storage.tsdb.path'] }}
16+
- owner: {{ prometheus.service.user }}
17+
- group: {{ prometheus.service.group }}
18+
- makedirs: True
19+
- watch_in:
20+
- service: prometheus-service-running-service-running
21+
{%- endif %}
22+
23+
{# FreeBSD #}
24+
{%- if salt['grains.get']('os_family') == 'FreeBSD' %}
25+
{%- if 'storage.tsdb.path' in args.keys() %}
26+
{%- set value = args.pop('storage.tsdb.path') %}
27+
prometheus-config-args-storage-tsdb-path:
28+
sysrc.managed:
29+
- name: prometheus_data_dir
30+
- value: {{ value }}
31+
- watch_in:
32+
- service: prometheus-service-running-service-running
33+
{%- endif %}
34+
35+
prometheus-config-args-all:
36+
sysrc.managed:
37+
- name: prometheus_args
38+
# service prometheus restart tended to hang on FreeBSD
39+
# https://github.com/saltstack/salt/issues/44848#issuecomment-487016414
40+
- value: "{{ concat_args(args) }} >/dev/null 2>&1"
41+
- watch_in:
42+
- service: prometheus-service-running-service-running
43+
44+
{# Debian #}
45+
{%- elif salt['grains.get']('os_family') == 'Debian'%}
46+
prometheus-config-args-file-managed:
47+
file.managed:
48+
- name: {{ prometheus.args_file }}
49+
- contents: |
50+
ARGS="{{ concat_args(args) }}"
51+
- watch_in:
52+
- service: prometheus-service-running-service-running
53+
{%- endif %}
54+
{%- endif %}

prometheus/config/clean.sls

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,13 @@ prometheus-config-clean-file-absent:
1414
- name: {{ prometheus.config_file }}
1515
- require:
1616
- sls: {{ sls_service_clean }}
17+
18+
{%- if salt['grains.get']('os_family') == 'FreeBSD' %}
19+
{%- for parameter in ['args', 'data_dir'] %}
20+
prometheus-service-args-{{ parameter }}:
21+
sysrc.absent:
22+
- name: prometheus_{{ parameter }}
23+
- require:
24+
- service: prometheus-service-clean-service-dead
25+
{%- endfor %}
26+
{%- endif %}

prometheus/config/init.sls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
# vim: ft=sls
33

44
include:
5+
- .args
56
- .file

prometheus/defaults.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ prometheus:
88
config: {}
99
service:
1010
name: prometheus
11-
sysrc: False
11+
user: prometheus
12+
group: prometheus
1213
exporters:
1314
node:
1415
pkg: prometheus-node-exporter

prometheus/exporters/node/init.sls

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,7 @@
44
{#- Get the `tplroot` from `tpldir` #}
55
{%- set tplroot = tpldir.split('/')[0] %}
66
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
7-
8-
{%- macro concat_args(args) %}
9-
{%- if args|length > 0 %}
10-
{%- for k,v in args -%}
11-
{%- if not k or not v %}{% continue %}{% endif -%}
12-
--{{ k }}={{ v }}
13-
{%- if not loop.last %} {% endif -%}
14-
{%- endfor -%}
15-
{%- endif -%}
16-
{%- endmacro %}
7+
{%- from tplroot ~ "/map.jinja" import concat_args %}
178
189
prometheus-exporters-node-pkg-installed:
1910
pkg.installed:
@@ -49,7 +40,7 @@ prometheus-exporters-node-args:
4940
- name: node_exporter_args
5041
# service node_exporter restart tended to hang on FreeBSD
5142
# https://github.com/saltstack/salt/issues/44848#issuecomment-487016414
52-
- value: "{{ concat_args(args|dictsort) }} >/dev/null 2>&1"
43+
- value: "{{ concat_args(args) }} >/dev/null 2>&1"
5344
- watch_in:
5445
- service: prometheus-exporters-node-service-running
5546

prometheus/map.jinja

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,15 @@
2222

2323
{#- Merge the prometheus pillar #}
2424
{%- set prometheus = salt['pillar.get']('prometheus', default=defaults, merge=True) %}
25+
26+
{#- Contactenate arguments #}
27+
{%- macro concat_args(args) %}
28+
{%- set args = args|dictsort %}
29+
{%- if args|length > 0 %}
30+
{%- for k,v in args -%}
31+
{%- if not k or not v %}{% continue %}{% endif -%}
32+
--{{ k }}={{ v }}
33+
{%- if not loop.last %} {% endif -%}
34+
{%- endfor -%}
35+
{%- endif -%}
36+
{%- endmacro %}

prometheus/osfamilymap.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
# osfamilymap: {}
1212
---
1313
Debian:
14+
args_file: /etc/default/prometheus
1415
exporters:
1516
node:
1617
config_file: /etc/default/prometheus-node-exporter
@@ -28,17 +29,13 @@ Alpine: {}
2829
FreeBSD:
2930
rootgroup: wheel
3031
config_file: /usr/local/etc/prometheus.yml
31-
service:
32-
sysrc: True
3332
exporters:
3433
node:
3534
pkg: node_exporter
3635
service: node_exporter
3736

3837
OpenBSD:
3938
rootgroup: wheel
40-
service:
41-
sysrc: True
4239

4340
Solaris: {}
4441

prometheus/service/clean.sls

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,3 @@ prometheus-service-clean-service-dead:
99
service.dead:
1010
- name: {{ prometheus.service.name }}
1111
- enable: False
12-
13-
{%- if prometheus.service.use_sysrc %}
14-
prometheus_flags:
15-
sysrc.absent:
16-
- require:
17-
- service: prometheus-service-clean-service-dead
18-
{%- endif %}

prometheus/service/running.sls

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,20 @@
33

44
{#- Get the `tplroot` from `tpldir` #}
55
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_config_args = tplroot ~ '.config.args' %}
67
{%- set sls_config_file = tplroot ~ '.config.file' %}
78
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
89
910
include:
11+
- {{ sls_config_args }}
1012
- {{ sls_config_file }}
1113
12-
{%- if prometheus.service.sysrc %}
13-
prometheus_args:
14-
sysrc.managed:
15-
# service prometheus restart tended to hang on FreeBSD
16-
# https://github.com/saltstack/salt/issues/44848#issuecomment-487016414
17-
- value: "{{ prometheus.service.flags }} >/dev/null 2>&1"
18-
{%- endif %}
19-
2014
prometheus-service-running-service-running:
2115
service.running:
2216
- name: {{ prometheus.service.name }}
2317
- enable: True
2418
- watch:
2519
- file: prometheus-config-file-file-managed
26-
{%- if prometheus.service.sysrc %}
27-
- sysrc: prometheus_args
28-
{%- endif %}
2920
- require:
21+
- sls: {{ sls_config_args }}
3022
- sls: {{ sls_config_file }}

0 commit comments

Comments
 (0)