blob: e082e6dca19186662d513df2f05d12178c03541c [file] [log] [blame]
{% from "telegraf/map.jinja" import telegraf_grains with context %}
{%- set agent = telegraf_grains.telegraf.get('agent', {}) %}
{%- if agent.get('enabled', False) %}
telegraf_packages_agent:
pkg.installed:
- names: {{ agent.pkgs }}
telegraf_config_agent:
file.managed:
- name: {{ agent.dir.config }}/telegraf.conf
- source: salt://telegraf/files/telegraf.conf
- user: root
- group: root
- mode: 644
- template: jinja
- require:
- pkg: telegraf_packages_agent
- context:
agent: {{ agent }}
config_d_dir_agent:
file.directory:
- name: {{agent.dir.config_d}}
- makedirs: True
- mode: 755
- require:
- pkg: telegraf_packages_agent
config_d_dir_agent_clean:
file.directory:
- name: {{agent.dir.config_d}}
- clean: True
- watch_in:
- service: telegraf_service_agent
{%- for name,values in agent.input.iteritems() %}
{%- if values is not mapping or values.get('enabled', True) %}
input_{{ name }}_agent:
file.managed:
- name: {{ agent.dir.config_d }}/input-{{ name }}.conf
- source:
{%- if values.template is defined %}
- salt://{{ values.template }}
{%- endif %}
- salt://telegraf/files/input/{{ name }}.conf
- salt://telegraf/files/input/generic.conf
- user: root
- group: root
- mode: 644
- template: jinja
- require:
- pkg: telegraf_packages_agent
- file: config_d_dir_agent
- require_in:
- file: config_d_dir_agent_clean
- watch_in:
- service: telegraf_service_agent
- defaults:
name: {{ name }}
{%- if values is mapping %}
values: {{ values }}
{%- else %}
values: {}
{%- endif %}
{%- if name in ('ceph', 'docker', 'haproxy') %}
telegraf_user_in_group_{{ name }}:
user.present:
- name: telegraf
- optional_groups:
- {{ name }}
- require:
- pkg: telegraf_packages_agent
{%- endif %}
{%- endif %}
{%- endfor %}
{%- for name,values in agent.output.iteritems() %}
output_{{ name }}_agent:
file.managed:
- name: {{ agent.dir.config_d }}/output-{{ name }}.conf
- source: salt://telegraf/files/output/{{ name }}.conf
- user: root
- group: root
- mode: 644
- template: jinja
- require:
- pkg: telegraf_packages_agent
- file: config_d_dir_agent
- require_in:
- file: config_d_dir_agent_clean
- watch_in:
- service: telegraf_service_agent
- defaults:
name: {{ name }}
{%- if values is mapping %}
values: {{ values }}
{%- else %}
values: {}
{%- endif %}
{%- endfor %}
telegraf_service_agent:
service.running:
- name: telegraf
- enable: True
{%- if grains.get('noservices') %}
- onlyif: /bin/false
{%- endif %}
- watch:
- file: telegraf_config_agent
{%- endif %}