Skip to content

Commit

Permalink
feat(suse): support packaged installations
Browse files Browse the repository at this point in the history
- 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 <[email protected]>
  • Loading branch information
tacerus committed Feb 15, 2023
1 parent d5cfeb0 commit dcd585b
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 3 deletions.
15 changes: 14 additions & 1 deletion prometheus/config/file.sls
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ prometheus-config-file-etc-file-directory:
prometheus-config-file-{{ name }}-file-managed:
file.managed:
- name: {{ p.dir.etc }}{{ p.div }}{{ name }}.yml
{%- if 'config_file' in p.pkg.component[name] %}
{%- set config_file = p.pkg.component[name]['config_file'] %}
{%- else %}
{%- set config_file = p.dir.etc ~ p.div ~ name ~ '.yml' %}
{%- endif %}
- name: {{ config_file }}
- source: {{ files_switch(['config.yml.jinja'],
lookup='prometheus-config-file-' ~ name ~ '-file-managed'
)
Expand All @@ -40,15 +45,19 @@ prometheus-config-file-{{ name }}-file-managed:
- template: jinja
{%- if grains.os != 'Windows' %}
- mode: 644
{%- if p.manage_user_group %}
- user: {{ name }}
- group: {{ name }}
{%- endif %}
{%- endif %}
- context:
config: {{ p.pkg.component[name]['config']|json }}
- require:
- file: prometheus-config-file-etc-file-directory
{%- if p.manage_user_group %}
- user: prometheus-config-users-install-{{ name }}-user-present
- group: prometheus-config-users-install-{{ name }}-group-present
{%- endif %}
- watch_in:
- service: prometheus-service-running-{{ name }}
Expand All @@ -71,15 +80,19 @@ prometheus-config-file-{{ ef }}-file-managed:
- template: jinja
{%- if grains.os != 'Windows' %}
- mode: 644
{%- if p.manage_user_group %}
- user: {{ component }}
- group: {{ component }}
{%- endif %}
{%- endif %}
- context:
config: {{ p.extra_files[ef]['config'] }}
- require:
- file: prometheus-config-file-etc-file-directory
{%- if p.manage_user_group %}
- user: prometheus-config-users-install-{{ component }}-user-present
- group: prometheus-config-users-install-{{ component }}-group-present
{%- endif %}
- watch_in:
- service: prometheus-service-running-{{ component }}
Expand Down
2 changes: 2 additions & 0 deletions prometheus/config/storage.sls
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ prometheus-service-args-{{ name }}-data-dir:
- makedirs: True
- watch_in:
- service: prometheus-service-running-{{ name }}
{%- if p.manage_user_group %}
- require:
- user: prometheus-config-users-install-{{ name }}-user-present
- group: prometheus-config-users-install-{{ name }}-group-present
{%- endif %}
{%- endif %}
{% endif %}
Expand Down
2 changes: 2 additions & 0 deletions prometheus/config/users.sls
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import prometheus as p with context %}
{%- if p.manage_user_group or p.pkg.use_upstream_archive %}
{%- for name in p.wanted.component %}
prometheus-config-users-install-{{ name }}-group-present:
Expand All @@ -29,3 +30,4 @@ prometheus-config-users-install-{{ name }}-user-present:
{%- endif %}
{%- endfor %}
{%- endif %}
2 changes: 2 additions & 0 deletions prometheus/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ prometheus:
tmp: /tmp/prometheus
var: /var/lib/prometheus

manage_user_group: true

pkg:
uri: https://github.com/prometheus
use_upstream_repo: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ prometheus-exporters-{{ name }}-collector-textfile-dir:
- group: {{ name }}
{%- endif %}
- makedirs: True
{%- if p.manage_user_group %}
- require:
- user: prometheus-config-users-install-{{ name }}-user-present
- group: prometheus-config-users-install-{{ name }}-group-present
{%- endif %}
{%- endif %}
{%- for k, v in p.get('exporters', {}).get(name, {}).get('textfile_collectors', {}).items() %}
Expand Down
61 changes: 60 additions & 1 deletion prometheus/osfamilymap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,66 @@ RedHat:
sslcacert: /etc/pki/tls/certs/ca-bundle.crt
metadata_expire: 300

Suse: {}
Suse:
manage_user_group: false
pkg:
use_upstream_repo: false
use_upstream_package: false
use_upstream_archive: false
component:
alertmanager:
name: golang-github-prometheus-alertmanager
service:
name: prometheus-alertmanager
environ_file: /etc/sysconfig/prometheus-alertmanager
args:
config.file: /etc/prometheus/alertmanager.yml
config_file: /etc/prometheus/alertmanager.yml
prometheus:
name: golang-github-prometheus-prometheus
service:
name: prometheus
environ_file: /etc/sysconfig/prometheus
environ:
environ_arg_name: ARGS
config_file: /etc/prometheus/prometheus.yml
blackbox_exporter:
name: prometheus-blackbox_exporter
config_file: /etc/prometheus/blackbox.yml
service:
name: prometheus-blackbox_exporter
hacluster_exporter:
name: prometheus-ha_cluster_exporter
environ_file: /etc/sysconfig/prometheus-ha_cluster_exporter
environ:
environ_arg_name: ARGS
service:
name: prometheus-ha_cluster_exporter
node_exporter:
name: golang-github-prometheus-node_exporter
service:
name: prometheus-node_exporter
environ_file: /etc/sysconfig/prometheus-node_exporter
environ:
environ_arg_name: ARGS
postgres_exporter:
name: prometheus-postgres_exporter
service:
name: prometheus-postgres_exporter
environ_file: /etc/sysconfig/prometheus-postgres_exporter
environ:
environ_arg_name: POSTGRES_EXPORTER_PARAMS
saptune_exporter:
name: prometheus-saptune_exporter
service:
name: prometheus-saptune_exporter
webhook_snmp:
name: prometheus-webhook-snmp
service:
name: prometheus-webhook-snmp
environ_file: /etc/default/prometheus-webhook-snmp
environ:
environ_arg_name: PROMETHEUS_WEBHOOK_SNMP_OPTIONS

Gentoo:
pkg:
Expand Down
2 changes: 2 additions & 0 deletions prometheus/service/args/install.sls
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@ prometheus-service-args-{{ name }}-data-dir:
- makedirs: True
- watch_in:
- service: prometheus-service-running-{{ name }}
{%- if p.manage_user_group %}
- require:
- user: prometheus-config-users-install-{{ name }}-user-present
- group: prometheus-config-users-install-{{ name }}-group-present
{%- endif %}
{%- endif %}
{%- if grains.os_family == 'FreeBSD' %}
Expand Down
8 changes: 7 additions & 1 deletion test/salt/pillar/repo.sls
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ prometheus:
- alertmanager
- node_exporter
- blackbox_exporter
{%- if grains.os == 'SUSE' %}
- hacluster_exporter
- postgres_exporter
- saptune_exporter
- webhook_snmp
{%- endif %}

exporters:
node_exporter:
Expand All @@ -31,7 +37,7 @@ prometheus:

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

clientlibs:
Expand Down

0 comments on commit dcd585b

Please sign in to comment.