Files
ansible-telegraf/tasks/configure_linux.yml
ThorstenHeck 73c00ab7b6 replace depracted aws module (#178)
Co-authored-by: Lauber, Simon <Simon.Lauber@adesso-service.com>
2023-10-20 17:17:06 +02:00

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"