Skip to content

Commit dcd585b

Browse files
committed
feat(suse): support packaged installations
- add all components available in the default openSUSE Leap (OSS) repository to osfamilymap - introduce global manage_user_group toggle to prevent the formula from changing users and groups managed by system packages - allow configuration file override using pkg:component:<component>:config_file Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
1 parent d5cfeb0 commit dcd585b

8 files changed

Lines changed: 91 additions & 3 deletions

File tree

prometheus/config/file.sls

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ prometheus-config-file-etc-file-directory:
3131
3232
prometheus-config-file-{{ name }}-file-managed:
3333
file.managed:
34-
- name: {{ p.dir.etc }}{{ p.div }}{{ name }}.yml
34+
{%- if 'config_file' in p.pkg.component[name] %}
35+
{%- set config_file = p.pkg.component[name]['config_file'] %}
36+
{%- else %}
37+
{%- set config_file = p.dir.etc ~ p.div ~ name ~ '.yml' %}
38+
{%- endif %}
39+
- name: {{ config_file }}
3540
- source: {{ files_switch(['config.yml.jinja'],
3641
lookup='prometheus-config-file-' ~ name ~ '-file-managed'
3742
)
@@ -40,15 +45,19 @@ prometheus-config-file-{{ name }}-file-managed:
4045
- template: jinja
4146
{%- if grains.os != 'Windows' %}
4247
- mode: 644
48+
{%- if p.manage_user_group %}
4349
- user: {{ name }}
4450
- group: {{ name }}
4551
{%- endif %}
52+
{%- endif %}
4653
- context:
4754
config: {{ p.pkg.component[name]['config']|json }}
4855
- require:
4956
- file: prometheus-config-file-etc-file-directory
57+
{%- if p.manage_user_group %}
5058
- user: prometheus-config-users-install-{{ name }}-user-present
5159
- group: prometheus-config-users-install-{{ name }}-group-present
60+
{%- endif %}
5261
- watch_in:
5362
- service: prometheus-service-running-{{ name }}
5463
@@ -71,15 +80,19 @@ prometheus-config-file-{{ ef }}-file-managed:
7180
- template: jinja
7281
{%- if grains.os != 'Windows' %}
7382
- mode: 644
83+
{%- if p.manage_user_group %}
7484
- user: {{ component }}
7585
- group: {{ component }}
7686
{%- endif %}
87+
{%- endif %}
7788
- context:
7889
config: {{ p.extra_files[ef]['config'] }}
7990
- require:
8091
- file: prometheus-config-file-etc-file-directory
92+
{%- if p.manage_user_group %}
8193
- user: prometheus-config-users-install-{{ component }}-user-present
8294
- group: prometheus-config-users-install-{{ component }}-group-present
95+
{%- endif %}
8396
- watch_in:
8497
- service: prometheus-service-running-{{ component }}
8598

prometheus/config/storage.sls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ prometheus-service-args-{{ name }}-data-dir:
2424
- makedirs: True
2525
- watch_in:
2626
- service: prometheus-service-running-{{ name }}
27+
{%- if p.manage_user_group %}
2728
- require:
2829
- user: prometheus-config-users-install-{{ name }}-user-present
2930
- group: prometheus-config-users-install-{{ name }}-group-present
31+
{%- endif %}
3032
3133
{%- endif %}
3234
{% endif %}

prometheus/config/users.sls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
{%- set tplroot = tpldir.split('/')[0] %}
55
{%- from tplroot ~ "/map.jinja" import prometheus as p with context %}
66
7+
{%- if p.manage_user_group or p.pkg.use_upstream_archive %}
78
{%- for name in p.wanted.component %}
89
910
prometheus-config-users-install-{{ name }}-group-present:
@@ -29,3 +30,4 @@ prometheus-config-users-install-{{ name }}-user-present:
2930
{%- endif %}
3031
3132
{%- endfor %}
33+
{%- endif %}

prometheus/defaults.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ prometheus:
2323
tmp: /tmp/prometheus
2424
var: /var/lib/prometheus
2525

26+
manage_user_group: true
27+
2628
pkg:
2729
uri: https://github.com/prometheus
2830
use_upstream_repo: false

prometheus/exporters/node_exporter/textfile_collectors/init.sls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ prometheus-exporters-{{ name }}-collector-textfile-dir:
2222
- group: {{ name }}
2323
{%- endif %}
2424
- makedirs: True
25+
{%- if p.manage_user_group %}
2526
- require:
2627
- user: prometheus-config-users-install-{{ name }}-user-present
2728
- group: prometheus-config-users-install-{{ name }}-group-present
29+
{%- endif %}
2830
{%- endif %}
2931
3032
{%- for k, v in p.get('exporters', {}).get(name, {}).get('textfile_collectors', {}).items() %}

prometheus/osfamilymap.yaml

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,66 @@ RedHat:
219219
sslcacert: /etc/pki/tls/certs/ca-bundle.crt
220220
metadata_expire: 300
221221

222-
Suse: {}
222+
Suse:
223+
manage_user_group: false
224+
pkg:
225+
use_upstream_repo: false
226+
use_upstream_package: false
227+
use_upstream_archive: false
228+
component:
229+
alertmanager:
230+
name: golang-github-prometheus-alertmanager
231+
service:
232+
name: prometheus-alertmanager
233+
environ_file: /etc/sysconfig/prometheus-alertmanager
234+
args:
235+
config.file: /etc/prometheus/alertmanager.yml
236+
config_file: /etc/prometheus/alertmanager.yml
237+
prometheus:
238+
name: golang-github-prometheus-prometheus
239+
service:
240+
name: prometheus
241+
environ_file: /etc/sysconfig/prometheus
242+
environ:
243+
environ_arg_name: ARGS
244+
config_file: /etc/prometheus/prometheus.yml
245+
blackbox_exporter:
246+
name: prometheus-blackbox_exporter
247+
config_file: /etc/prometheus/blackbox.yml
248+
service:
249+
name: prometheus-blackbox_exporter
250+
hacluster_exporter:
251+
name: prometheus-ha_cluster_exporter
252+
environ_file: /etc/sysconfig/prometheus-ha_cluster_exporter
253+
environ:
254+
environ_arg_name: ARGS
255+
service:
256+
name: prometheus-ha_cluster_exporter
257+
node_exporter:
258+
name: golang-github-prometheus-node_exporter
259+
service:
260+
name: prometheus-node_exporter
261+
environ_file: /etc/sysconfig/prometheus-node_exporter
262+
environ:
263+
environ_arg_name: ARGS
264+
postgres_exporter:
265+
name: prometheus-postgres_exporter
266+
service:
267+
name: prometheus-postgres_exporter
268+
environ_file: /etc/sysconfig/prometheus-postgres_exporter
269+
environ:
270+
environ_arg_name: POSTGRES_EXPORTER_PARAMS
271+
saptune_exporter:
272+
name: prometheus-saptune_exporter
273+
service:
274+
name: prometheus-saptune_exporter
275+
webhook_snmp:
276+
name: prometheus-webhook-snmp
277+
service:
278+
name: prometheus-webhook-snmp
279+
environ_file: /etc/default/prometheus-webhook-snmp
280+
environ:
281+
environ_arg_name: PROMETHEUS_WEBHOOK_SNMP_OPTIONS
223282

224283
Gentoo:
225284
pkg:

prometheus/service/args/install.sls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ prometheus-service-args-{{ name }}-data-dir:
3030
- makedirs: True
3131
- watch_in:
3232
- service: prometheus-service-running-{{ name }}
33+
{%- if p.manage_user_group %}
3334
- require:
3435
- user: prometheus-config-users-install-{{ name }}-user-present
3536
- group: prometheus-config-users-install-{{ name }}-group-present
37+
{%- endif %}
3638
3739
{%- endif %}
3840
{%- if grains.os_family == 'FreeBSD' %}

test/salt/pillar/repo.sls

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ prometheus:
1313
- alertmanager
1414
- node_exporter
1515
- blackbox_exporter
16+
{%- if grains.os == 'SUSE' %}
17+
- hacluster_exporter
18+
- postgres_exporter
19+
- saptune_exporter
20+
- webhook_snmp
21+
{%- endif %}
1622

1723
exporters:
1824
node_exporter:
@@ -31,7 +37,7 @@ prometheus:
3137

3238
pkg:
3339
# yamllint disable-line rule:braces rule:commas
34-
use_upstream_repo: {{ false if grains.os_family|lower in ('debian',) else true }}
40+
use_upstream_repo: {{ false if grains.os_family|lower in ('debian','suse',) else true }}
3541
use_upstream_archive: false
3642

3743
clientlibs:

0 commit comments

Comments
 (0)