mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
190 lines
4.9 KiB
YAML
190 lines
4.9 KiB
YAML
---
|
|
# description: Configure telegraf and get all relevent ec2 information
|
|
|
|
- name: Retrieve ec2 facts
|
|
ec2_metadata_facts:
|
|
when:
|
|
- telegraf_agent_aws_tags
|
|
|
|
- name: "Add prefix path"
|
|
set_fact:
|
|
telegraf_agent_config_path: /usr/local/etc
|
|
when:
|
|
- ansible_os_family == "FreeBSD"
|
|
|
|
- name: Retrieve all ec2 tags on the instance
|
|
amazon.aws.ec2_tag_info:
|
|
region: '{{ ansible_ec2_placement_region }}'
|
|
resource: '{{ ansible_ec2_instance_id }}'
|
|
when:
|
|
- telegraf_agent_aws_tags
|
|
register: ec2_tags
|
|
|
|
- name: "Copy the template for versions < 0.10.0"
|
|
template:
|
|
src: etc-opt-telegraf-telegraf.conf.j2
|
|
dest: /etc/opt/telegraf/telegraf.conf
|
|
owner: telegraf
|
|
group: telegraf
|
|
mode: 0640
|
|
become: true
|
|
when:
|
|
- telegraf_agent_version is version('0.10.0', '<')
|
|
notify:
|
|
- Restart Telegraf
|
|
- Restart Telegraf container
|
|
|
|
- name: "Copy the template for versions >= 0.10.0"
|
|
template:
|
|
src: telegraf.conf.j2
|
|
dest: "{{ telegraf_agent_config_path }}/telegraf.conf"
|
|
owner: telegraf
|
|
group: telegraf
|
|
mode: 0640
|
|
become: true
|
|
when:
|
|
- telegraf_agent_version is version('0.10.0', '>=')
|
|
notify:
|
|
- Restart Telegraf
|
|
- Restart Telegraf container
|
|
|
|
- name: "Check if extra plugins directory exists in case of exclusive"
|
|
stat:
|
|
path: "{{ telegraf_agent_config_path }}/telegraf.d"
|
|
register: telegraf_directory
|
|
when:
|
|
- telegraf_plugins_extra_exclusive
|
|
|
|
- name: "Delete telegraf extra plugin path"
|
|
file:
|
|
state: absent
|
|
path: "{{ telegraf_agent_config_path }}/telegraf.d/"
|
|
when:
|
|
- telegraf_plugins_extra_exclusive
|
|
- telegraf_directory.stat.exists
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
- Restart Telegraf container
|
|
|
|
- name: "Create telegraf extra plugin path"
|
|
file:
|
|
state: directory
|
|
path: "{{ telegraf_agent_config_path }}/telegraf.d/"
|
|
owner: telegraf
|
|
group: telegraf
|
|
mode: 0755
|
|
when:
|
|
- telegraf_plugins_extra_exclusive
|
|
- telegraf_directory.stat.exists
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
- Restart Telegraf container
|
|
|
|
- name: "Copy telegraf extra plugins"
|
|
template:
|
|
src: "telegraf-extra-plugin.conf.j2"
|
|
dest: "{{ telegraf_agent_config_path }}/telegraf.d/{{ item.key }}.conf"
|
|
owner: telegraf
|
|
group: telegraf
|
|
mode: 0640
|
|
with_dict: "{{ telegraf_plugins_extra }}"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
when:
|
|
- telegraf_plugins_extra is defined
|
|
- telegraf_plugins_extra is iterable
|
|
- item.value.state|default('present') != 'absent'
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
- Restart Telegraf container
|
|
|
|
- name: "Remove telegraf extra plugins"
|
|
file:
|
|
path: "{{ telegraf_agent_config_path }}/telegraf.d/{{ item.key }}.conf"
|
|
state: absent
|
|
with_dict: "{{ telegraf_plugins_extra }}"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
when:
|
|
- telegraf_plugins_extra is defined
|
|
- telegraf_plugins_extra is iterable
|
|
- item.value.state|default('present') == 'absent'
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
- Restart Telegraf container
|
|
|
|
- name: "Force restart service after reread config"
|
|
meta: flush_handlers
|
|
|
|
- name: "Start Telegraf (If it wasn't running)"
|
|
service:
|
|
name: telegraf
|
|
state: "{{ telegraf_enabled | ternary('started', 'stopped') }}"
|
|
enabled: "{{ telegraf_enabled }}"
|
|
become: true
|
|
when: not telegraf_agent_docker
|
|
ignore_errors: "{{ ansible_check_mode }}"
|
|
|
|
- name: Configure system for for docker plugin
|
|
block:
|
|
- name: Add telegraf user to docker group
|
|
user:
|
|
name: telegraf
|
|
groups: docker
|
|
append: true
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
|
|
when: "'docker' in telegraf_plugins_extra and not telegraf_agent_docker"
|
|
|
|
- name: Configure system for for smart plugin
|
|
block:
|
|
- name: Install smartmontools
|
|
become: true
|
|
package:
|
|
name: smartmontools
|
|
|
|
- name: Find path of smartctl
|
|
command: which smartctl
|
|
register: which_smartctl
|
|
ignore_errors: true
|
|
changed_when: false
|
|
become: true
|
|
|
|
- name: Ensure telegraf user can execute smartctl
|
|
blockinfile:
|
|
marker: "# {mark} ANSIBLE MANAGED BLOCK (Ensure telegraf user can execute smartctl)"
|
|
dest: "/etc/sudoers.d/telegraf"
|
|
block: "telegraf ALL=(root) NOPASSWD: {{ which_smartctl.stdout }}"
|
|
mode: 0400
|
|
create: true
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
|
|
when: "'smart' in telegraf_plugins_extra and not telegraf_agent_docker"
|
|
|
|
- name: Configure system for for sensors plugin
|
|
block:
|
|
- name: Debian | Install lm-sensors
|
|
package:
|
|
name: lm-sensors
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
when: ansible_os_family == "Debian"
|
|
- name: RedHat | Install lm-sensors
|
|
package:
|
|
name: lm_sensors
|
|
become: true
|
|
notify:
|
|
- Restart Telegraf
|
|
when: ansible_os_family == "RedHat"
|
|
|
|
when: "'sensors' in telegraf_plugins_extra and not telegraf_agent_docker"
|