diff --git a/metadata/service/collector.yml b/metadata/service/collector.yml new file mode 100644 index 0000000..03f8ecc --- /dev/null +++ b/metadata/service/collector.yml @@ -0,0 +1,6 @@ +applications: + - prometheus +parameters: + prometheus: + collector: + enabled: true diff --git a/prometheus/alertmanager.sls b/prometheus/alertmanager.sls index 576c349..6f83334 100644 --- a/prometheus/alertmanager.sls +++ b/prometheus/alertmanager.sls @@ -1,7 +1,7 @@ {% from "prometheus/map.jinja" import alertmanager with context %} {%- if alertmanager.enabled %} -{%- if pillar.docker.host is defined %} +{%- if pillar.docker is defined and pillar.docker.host is defined %} {{alertmanager.dir.config}}/alertmanager.yml: file.managed: diff --git a/prometheus/collector.sls b/prometheus/collector.sls index c9c839c..2528ec9 100644 --- a/prometheus/collector.sls +++ b/prometheus/collector.sls @@ -1,43 +1,10 @@ -{%- from "prometheus/map.jinja" import server as prometheus_server with context %} +{%- if pillar.prometheus.collector.get('enabled', True) %} -{%- set service_grains = {'prometheus': {'server': {'alert': {}, 'recording': {}, 'target': {}}}} %} -{%- for service_name, service in pillar.items() %} - {%- if service.get('_support', {}).get('prometheus', {}).get('enabled', False) %} - {%- set grains_fragment_file = service_name+'/meta/prometheus.yml' %} - {%- macro load_grains_file() %}{% include grains_fragment_file ignore missing %}{% endmacro %} - {%- set grains_yaml = load_grains_file()|load_yaml %} - {%- if grains_yaml is mapping %} - {%- set service_grains = salt['grains.filter_by']({'default': service_grains}, merge={'prometheus': grains_yaml}) %} - {%- endif %} - {%- endif %} -{%- endfor %} +{#- + Grains are now managed from salt.minion.grains so we will just include it +#} -prometheus_grains_dir: - file.directory: - - name: /etc/salt/grains.d - - mode: 700 - - makedirs: true - - user: root +include: + - salt.minion.grains -prometheus_grain: - file.managed: - - name: /etc/salt/grains.d/prometheus - - source: salt://prometheus/files/prometheus.grain - - template: jinja - - mode: 600 - - defaults: - service_grains: {{ service_grains|yaml }} - - require: - - file: prometheus_grains_dir - -prometheus_grains_file: - cmd.wait: - - name: cat /etc/salt/grains.d/* > /etc/salt/grains - - watch: - - file: prometheus_grain - -prometheus_grains_publish: - module.run: - - name: mine.update - - watch: - - cmd: prometheus_grains_file +{%- endif %} diff --git a/prometheus/files/prometheus.grain b/prometheus/files/prometheus.grain deleted file mode 100644 index 3e3b373..0000000 --- a/prometheus/files/prometheus.grain +++ /dev/null @@ -1 +0,0 @@ -{{ service_grains|yaml(False) }} diff --git a/prometheus/init.sls b/prometheus/init.sls index e69de29..3141a49 100644 --- a/prometheus/init.sls +++ b/prometheus/init.sls @@ -0,0 +1,10 @@ +{%- if pillar.prometheus.server is defined or + pillar.prometheus.alertmanager is defined %} +include: + {%- if pillar.prometheus.server is defined %} + - prometheus.server + {%- endif %} + {%- if pillar.prometheus.alertmanager is defined %} + - prometheus.alertmanager + {%- endif %} +{%- endif %} diff --git a/prometheus/meta/salt.yml b/prometheus/meta/salt.yml new file mode 100644 index 0000000..9343f83 --- /dev/null +++ b/prometheus/meta/salt.yml @@ -0,0 +1,21 @@ +grain: + {%- if pillar.prometheus is defined and pillar.prometheus.collector is defined %} + {%- from "prometheus/map.jinja" import server as prometheus_server with context %} + prometheus: + {%- set service_grains = {'prometheus': {'server': {'alert': {}, 'recording': {}, 'target': {}}}} %} + {%- for service_name, service in pillar.items() %} + {%- if service.get('_support', {}).get('prometheus', {}).get('enabled', False) %} + {%- set grains_fragment_file = service_name+'/meta/prometheus.yml' %} + {%- macro load_grains_file() %}{% include grains_fragment_file ignore missing %}{% endmacro %} + {%- set grains_yaml = load_grains_file()|load_yaml %} + {%- if grains_yaml is mapping %} + {%- set service_grains = salt['grains.filter_by']({'default': service_grains}, merge={'prometheus': grains_yaml}) %} + {%- endif %} + {%- endif %} + {%- endfor %} + {{ service_grains|yaml(False)|indent(4) }} + {%- endif %} + +{#- + vim: syntax=jinja +-#} diff --git a/prometheus/server.sls b/prometheus/server.sls index fc0a181..e4dfb5c 100644 --- a/prometheus/server.sls +++ b/prometheus/server.sls @@ -1,7 +1,7 @@ {% from "prometheus/map.jinja" import server with context %} {%- if server.enabled %} -{%- if pillar.docker.host is defined %} +{%- if pillar.docker is defined and pillar.docker.host is defined %} {{server.dir.config}}/prometheus.yml: file.managed: