formula-prometheus/prometheus/exporters.sls

96 lines
2.9 KiB
Plaintext

{% from "prometheus/map.jinja" import exporters with context %}
{%- for exporter, parameters in exporters.iteritems() %}
{%- if parameters.get('enabled', False) %}
{%- if parameters.get('packages', False) %}
{{ exporter }}_exporter_packages:
pkg.installed:
- names: {{ parameters.packages }}
{%- else %}
{{ exporter }}-exporter-bin-dir:
file.directory:
- name: /opt/prometheus/{{ exporter }}/bin
- makedirs: True
{#
{{ exporter }}-exporter-download:
file.managed:
- name: /tmp/prometheus_{{ exporter }}_{{ grains.osarch }}.tar.gz
- source: {{ parameters.url }}
- source_hash: {{ parameters.url_hash }}
- unless: test -f /opt/prometheus/{{ exporter }}/bin/{{ parameters.check }}
#}
{{ exporter }}_exporter_extracted:
archive.extracted:
- name: /opt/prometheus/{{ exporter }}/bin
- source: {{ parameters.url }}
- source_hash: {{ parameters.url_hash }}
- options: {{ parameters.get('extract_options', None) }}
- enforce_toplevel: False
- user: root
- group: root
- if_missing: /opt/prometheus/{{ exporter }}/bin/{{ parameters.check }}
{%- endif %}
{{ exporter }}_exporter_service:
service.running:
- name: {{ exporter }}-exporter
- enable: True
{%- if grains.get('noservices') %}
- onlyif: /bin/false
{%- endif %}
{%- if parameters.template is defined %}
- watch:
- file: {{ exporter }}_exporter_service_config_file
{%- endif %}
{%- for svc, svc_parameters in parameters.get('services', {}).iteritems() %}
{%- if svc_parameters.get('enabled', False) %}
{%- if svc_parameters.template is defined %}
{%- set jmxbind = svc_parameters.get('jmx_bind', {}) %}
{{ exporter }}_{{ svc }}_exporter_config_file:
file.managed:
- name: /etc/exporters/{{ exporter }}_{{ svc }}-running.yml
- template: jinja
- source:
- salt://{{ svc_parameters.template }}
- context:
jmxbind: {{ jmxbind }}
- user: root
- group: root
- mode: 644
- require:
{%- if parameters.get('packages', False) %}
- pkg: {{ exporter }}_exporter_packages
{%- else %}
- archive: {{ exporter }}_exporter_extracted
{%- endif %}
- watch_in:
- service: {{ exporter }}_exporter_service
{%- endif %}
{%- if parameters.template is defined %}
{%- set template = parameters.template %}
{%- set bind = svc_parameters.get('bind', {}) %}
{{ exporter }}_exporter_service_config_file:
file.managed:
- name: /etc/default/{{ exporter }}-exporter
- template: jinja
- source:
- salt://{{ template }}
- context:
bind: {{ bind }}
cfg_file: /etc/exporters/{{ exporter }}_{{ svc }}-running.yml
- user: root
- group: root
- mode: 644
- require:
- pkg: {{ exporter }}_exporter_packages
- watch_in:
- service: {{ exporter }}_exporter_service
{%- endif %}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- endfor %}