--- # 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 ec2_tag: region: '{{ ansible_ec2_placement_region }}' resource: '{{ ansible_ec2_instance_id }}' state: list 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"