Skip to content

Commit d43033a

Browse files
feat(archives): user managementX
1 parent 3ec910e commit d43033a

File tree

12 files changed

+144
-75
lines changed

12 files changed

+144
-75
lines changed

prometheus/archive/alternatives/clean.sls

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66
{%- from tplroot ~ "/map.jinja" import prometheus as p with context %}
77
{%- set sls_archive_clean = tplroot ~ '.archive.clean' %}
88
9-
{%- if grains.kernel|lower == 'linux' and p.linux.altpriority|int > 0 %}
9+
{%- if grains.kernel|lower == 'linux' and p.linux.altpriority|int > 0 %}
1010
1111
include:
1212
- {{ sls_archive_clean }}
1313
14-
15-
{%- for k in p.archive.wanted %}
16-
{%- set dir = p.archive.dir + '/' + k + '-%s.%s-%s'|format(p.archive.version["k"], p.kernel, p.arch) %}
14+
{%- for k in p.archive.wanted %}
15+
{%- set dir = p.archive.dir.opt + '/' + k + '-%s.%s-%s'|format(p.archive.versions[k], p.kernel, p.arch) %}
1716
1817
prometheus-archive-remove-{{ k }}-home-alternatives-remove:
1918
alternatives.remove:
@@ -23,17 +22,15 @@ prometheus-archive-remove-{{ k }}-home-alternatives-remove:
2322
- require:
2423
- sls: {{ sls_archive_clean }}
2524
26-
27-
{% for i in p.archive.binaries['k'] %}
28-
25+
{% for i in p.archive.binaries[k] %}
2926
prometheus-archive-remove-{{ k }}-alternatives-remove-{{ i }}:
3027
alternatives.remove:
3128
- name: prometheus-{{ k }}-{{ i }}
3229
- path: {{ dir }}/{{ i }}
3330
- onlyif: update-alternatives --get-selections |grep ^prometheus-{{ k }}-{{ i }}
3431
- require:
3532
- sls: {{ sls_archive_clean }}
33+
{% endfor %}
3634
3735
{% endfor %}
38-
{% endfor %}
39-
{%- endif %}
36+
{%- endif %}
Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
# -*- coding: utf-8 -*-
22
# vim: ft=sls
33

4-
{#- Get the `tplroot` from `tpldir` #}
5-
{%- set tplroot = tpldir.split('/')[0] %}
6-
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
7-
{%- from tplroot ~ "/jinja/macros.jinja" import format_kwargs with context %}
8-
9-
{%- if grains.kernel|lower == 'linux' and prometheus.pkg.use_upstream_archive %}
10-
114
include:
125
- .install
13-
14-
{%- endif %}

prometheus/archive/alternatives/install.sls

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,27 @@
77
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
88
{%- set sls_archive_install = tplroot ~ '.archive.install' %}
99
10-
{%- if grains.kernel|lower in ('linux',) and p.linux.altpriority|int > 0 %}
10+
{%- if grains.kernel|lower in ('linux',) and p.linux.altpriority|int > 0 %}
1111
1212
include:
1313
- {{ sls_archive_install }}
1414
15+
{%- for k in p.archive.wanted %}
16+
{%- set dir = p.archive.dir.opt + '/' + k + '-%s.%s-%s'|format(p.archive.versions[k], p.kernel, p.arch) %}
1517
16-
{%- for k in p.archive.wanted %}
17-
{%- set dir = p.archive.dir + '/' + k + '-%s.%s-%s'|format(p.archive.version["k"], p.kernel, p.arch) %}
18-
19-
prometheus-archive-alternatives-install-{{ k }}-home-alternatives-install:
18+
prometheus-archive-alternatives-install-{{ k }}-home-cmd-run:
2019
cmd.run:
2120
- onlyif: {{ grains.os_family in ('Suse',) }}
2221
- name: update-alternatives --install {{ dir }} prometheus-{{ k }}-home {{ dir }} {{p.linux.altpriority}}
2322
- watch:
2423
- archive: prometheus-archive-install-{{ k }}-archive-extracted
2524
- require:
2625
- sls: {{ sls_archive_install }}
26+
27+
prometheus-archive-alternatives-install-{{ k }}-home-alternatives-install:
2728
alternatives.install:
2829
- name: prometheus-{{ k }}-home
29-
- link: {{ p.dir }}
30+
- link: {{ p.archive.dir.opt }}/{{ k }}
3031
- path: {{ dir }}
3132
- priority: {{ p.linux.altpriority }}
3233
- order: 10
@@ -41,17 +42,19 @@ prometheus-archive-alternatives-install-{{ k }}-home-alternatives-set:
4142
- name: prometheus-{{ k }}-home
4243
- path: {{ dir }}
4344
- require:
45+
- cmd: prometheus-archive-alternatives-install-{{ k }}-home-cmd-run
4446
- alternatives: prometheus-archive-alternatives-install-{{ k }}-home-alternatives-install
4547
- onlyif: {{ grains.os_family not in ('Suse',) }}
4648
47-
{% for i in p.archive.binaries['k'] %}
49+
50+
{% for i in p.archive.binaries[k] %}
4851
4952
prometheus-archive-alternatives-install-{{ k }}-alternatives-install-{{ i }}:
5053
cmd.run:
5154
- onlyif: {{ grains.os_family in ('Suse',) }}
5255
- name: update-alternatives --install /usr/bin/{{i}} prometheus-{{ k }}-{{i}} {{ dir }}/{{i}} {{p.linux.altpriority}}
5356
- require:
54-
- cmd: prometheus-archive-alternatives-install-{{ k }}-home-alternatives-install
57+
- cmd: prometheus-archive-alternatives-install-{{ k }}-home-cmd-run
5558
alternatives.install:
5659
- name: prometheus-{{ k }}-{{ i }}
5760
- link: /usr/bin/{{ i }}
@@ -69,7 +72,7 @@ prometheus-archive-alternatives-install-{{ k }}-alternatives-set-{{ i }}:
6972
- require:
7073
- alternatives: prometheus-archive-alternatives-install-{{ k }}-alternatives-install-{{ i }}
7174
- onlyif: {{ grains.os_family not in ('Suse',) }}
72-
7375
{% endfor %}
74-
{% endfor %}
75-
{%- endif %}
76+
77+
{% endfor %}
78+
{%- endif %}

prometheus/archive/clean.sls

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,40 @@
33

44
{#- Get the `tplroot` from `tpldir` #}
55
{%- set tplroot = tpldir.split('/')[0] %}
6-
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
6+
{%- from tplroot ~ "/map.jinja" import prometheus as p with context %}
77
{%- set sls_alternatives_clean = tplroot ~ '.archive.alternatives.clean' %}
88
9-
{%- if prometheus.pkg.use_upstream_archive %}
9+
{%- if p.pkg.use_upstream_archive %}
1010
1111
include:
1212
- {{ sls_alternatives_clean }}
1313
14+
{%- for k in p.archive.wanted %}
15+
{%- set dir = p.archive.dir.opt + '/' + k + '-%s.%s-%s'|format(p.archive.versions[k], p.kernel, p.arch) %}
1416
15-
{%- for k in prometheus.archive.wanted %}
1617
prometheus-archive-clean-{{ k }}-file-absent:
1718
file.absent:
18-
- name: {{ prometheus.archive.dir + '/' + k + '-%s.%s-%s'|format(prometheus.archive.versions[k], prometheus.kernel, prometheus.arch) }}
19+
- names:
20+
- {{ dir }}
21+
- {{ p.archive.systemd.dir }}/{{ k }}.service
1922
#- require:
2023
#- sls: {{ sls_alternatives_clean }}
24+
25+
prometheus-archive-clean-{{ k }}-user-absent:
26+
user.absent:
27+
- name: {{ k }}
28+
group.absent:
29+
- name: {{ k }}
30+
- require:
31+
- user: prometheus-archive-clean-{{ k }}-user-absent
32+
2133
{%- endfor %}
2234
23-
{%- endif %}
35+
prometheus-archive-clean-file-directory:
36+
file.absent:
37+
- names:
38+
- {{ p.archive.dir.opt }}
39+
- {{ p.archive.dir.etc }}
40+
- {{ p.archive.dir.var }}
41+
42+
{%- endif %}

prometheus/archive/defaults.yaml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33
---
44
prometheus:
55
archive:
6-
dir: /opt/prometheus
6+
wanted:
7+
- prometheus
8+
- alertmanager
9+
- node_exporter
10+
systemd:
11+
dir: /usr/lib/systemd/system
12+
after: docker.service
13+
wants: network-online.target docker.target
714
uri: https://github.com/prometheus
815
suffix: tar.gz
916
kwargs:
@@ -15,6 +22,10 @@ prometheus:
1522
until: True
1623
interval: 60
1724
splay: 10
25+
dir:
26+
opt: /opt/prometheus
27+
etc: /etc/prometheus
28+
var: /var/lib/prometheus
1829
binaries:
1930
prometheus:
2031
- prometheus
@@ -40,7 +51,6 @@ prometheus:
4051
- pushgateway
4152
statsd_exporter:
4253
- statsd_exporter
43-
4454
versions:
4555
prometheus: '2.10.0'
4656
alertmanager: '0.17.0'
@@ -65,3 +75,15 @@ prometheus:
6575
node_exporter: b2503fd932f85f4e5baf161268854bf5d22001869b84f00fd2d1f57b51b72424
6676
pushgateway: 6949866ba9ad0cb88d3faffd4281f17df79281398b4dbd0ec3aab300071681ca
6777
statsd_exporter: 4632ad0c5552e271e84c376da3ffe3af8c265ec5c3035334b70e35756aca1906
78+
configs:
79+
prometheus: {}
80+
alertmanager: {}
81+
blackbox_exporter: {}
82+
consul_exporter: {}
83+
graphite_exporter: {}
84+
haproxy_exporter: {}
85+
memcached_exporter: {}
86+
mysqld_exporter: {}
87+
node_exporter: {}
88+
pushgateway: {}
89+
statsd_exporter: {}

prometheus/archive/install.sls

Lines changed: 55 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,74 @@
55
{%- set tplroot = tpldir.split('/')[0] %}
66
{%- from tplroot ~ "/map.jinja" import prometheus as p with context %}
77
{%- from tplroot ~ "/jinja/macros.jinja" import format_kwargs with context %}
8+
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
89
910
{%- for k in p.archive.wanted %}
11+
{%- set dir = p.archive.dir.opt + '/' + k + '-%s.%s-%s'|format(p.archive.versions[k], p.kernel, p.arch) %}
1012
11-
prometheus-archive-install-{{ k }}-file-directory:
12-
file.directory:
13-
- name: {{ p.archive.dir }}
14-
- user: root
15-
- group: root
16-
- mode: 755
17-
- makedirs: True
13+
prometheus-archive-install-{{ k }}-user-present:
14+
group.present:
15+
- name: {{ k }}
16+
- require_in:
17+
- user: prometheus-archive-install-{{ k }}-user-present
18+
user.present:
19+
- name: {{ k }}
20+
- shell: /bin/false
21+
- createhome: false
22+
- groups:
23+
- {{ k }}
1824
- require_in:
1925
- archive: prometheus-archive-install-{{ k }}-archive-extracted
20-
- recurse:
21-
- user
22-
- group
23-
- mode
2426
2527
prometheus-archive-install-{{ k }}-archive-extracted:
2628
archive.extracted:
27-
- name: {{ p.archive.dir }}
29+
- name: {{ p.archive.dir.opt }}
2830
- source: {{ p.archive.uri + '/' + k + '/releases/download/v' + p.archive.versions[k]
29-
+ '/' + k + '-%s.%s-%s'|format(p.archive.versions[k], p.kernel, p.arch)
30-
+ '.' + p.archive.suffix }}
31+
+ '/' + k + '-%s.%s-%s'|format(p.archive.versions[k], p.kernel, p.arch)
32+
+ '.' + p.archive.suffix }}
3133
- source_hash: {{ p.archive.hashes[k] }}
32-
- user: root
33-
- group: root
34+
- user: {{ k }}
35+
- group: {{ k }}
3436
{{- format_kwargs(p.archive.kwargs) }}
3537
- recurse:
3638
- user
3739
- group
40+
- require_in:
41+
- file: prometheus-archive-install-{{ k }}-managed-systemd_file
42+
- file: prometheus-archive-install-file-directory
43+
44+
prometheus-archive-install-{{ k }}-managed-systemd_file:
45+
file.managed:
46+
- name: {{ p.archive.systemd.dir }}/{{ k }}.service
47+
- source: {{ files_switch(['systemd.ini.jinja'],
48+
lookup='prometheus-archive-install-{{ k }}-managed-systemd_file'
49+
)
50+
}}
51+
- mode: 644
52+
- user: root
53+
- group: {{ p.rootgroup }}
54+
- makedirs: True
55+
- template: jinja
56+
- context:
57+
desc: prometheus - {{ k }} serice
58+
name: {{ k }}
59+
user: {{ k }}
60+
group: {{ k }}
61+
start: {{ dir }}/{{ k }} --config.file {{ p.archive.dir.etc }}/{{ k }}/{{ k }}.yml
62+
stop: killall {{ dir }}/{{ k }}
63+
after: {{ p.archive.systemd.after }}
64+
wants: {{ p.archive.systemd.wants }}
3865
3966
{%- endfor %}
67+
68+
prometheus-archive-install-file-directory:
69+
file.directory:
70+
- names:
71+
- {{ p.archive.dir.opt }}
72+
- {{ p.archive.dir.etc }}
73+
- {{ p.archive.dir.var }}
74+
- user: prometheus
75+
- group: prometheus
76+
- mode: 755
77+
- makedirs: True
78+
##do not recurse!!!

prometheus/config/clean.sls

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88
99
include:
1010
- {{ sls_archive_clean }}
11-
{%- if prometheus.pkg.use_upstream_archive and kernel|lower == 'linux' %}
12-
- .systemd
13-
{%- endif %}
1411
1512
prometheus-config-clean-file-absent:
1613
file.absent:

prometheus/config/init.sls

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,3 @@ include:
99
- .args
1010
- .file
1111
- .environ
12-
{%- if prometheus.pkg.use_upstream_archive and kernel|lower == 'linux' %}
13-
- .systemd
14-
{%- endif %}
15-
16-

prometheus/defaults.yaml

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,11 @@ prometheus:
1616
name: prometheus
1717
user: prometheus
1818
group: prometheus
19+
linux:
20+
#'Alternatives system' priority: zero disables (default)
21+
altpriority: 0
1922
exporters:
2023
node:
2124
pkg:
2225
name: prometheus-node-exporter
2326
service: prometheus-node-exporter
24-
25-
linux:
26-
#'Alternatives system' priority: zero disables (default)
27-
altpriority: 0
28-
29-
archive:
30-
# see ./archive/default.yaml
31-
wanted:
32-
- prometheus
33-
- alertmanager
34-
- node_exporter
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#########################################################
2+
# File managed by Salt. Changes risk being overwritten.
3+
#########################################################
4+
[Unit]
5+
Description={{ desc }}
6+
Wants={{ wants }}
7+
After={{ after }}
8+
Documentation=https://github.com/saltstack-formulas/prometheus-formula
9+
10+
[Service]
11+
User={{ user }}
12+
Group={{ group }}
13+
ExecStart={{ start }}
14+
ExecStop={{ stop }}
15+
PIDFile=/var/run/{{ name }}.pid
16+
17+
[Install]
18+
WantedBy=multi-user.target

0 commit comments

Comments
 (0)