38 Commits

Author SHA1 Message Date
11acaaa0d8 Merge pull request #58 from dj-wasabi/update-to-0-10-0
Updating to Telegraf 1.7.3;Updating changelog
2018-08-12 13:46:08 +02:00
abb2b1bb04 Updating to Telegraf 1.7.3;Updating changelog 2018-08-12 11:13:53 +02:00
0e712c0c55 Merge pull request #55 from dj-wasabi/add_some_files
Added bunch of files
2018-05-24 19:43:05 +02:00
ee9e7428ec Added bunch of files 2018-05-24 19:36:39 +02:00
2ac6549492 Merge pull request #54 from dj-wasabi/supporting_oses
Fix Deprecation warnings
2018-05-20 08:20:22 +02:00
619b52b98a Use Ubuntu in Molecule Test;Fix deprecation warnings 2018-05-19 21:14:11 +02:00
19a4a44b58 Merge pull request #53 from tjend/remove_include_deprecation_warning
Changed 'include' to 'include_tasks' to remove deprecation warning
2018-05-11 07:49:01 +02:00
08416516bf Changed 'include' to 'include_tasks' to remove deprecation warning 2018-05-11 08:09:37 +10:00
0a37012e6e Merge pull request #52 from tjend/add_option_to_remove_plugin_extra_config
Add option to remove extra plugin config files
2018-05-10 14:56:05 +02:00
859ffb9e6e Add option to remove extra plugin config files 2018-05-10 22:11:30 +10:00
f96e6167e7 Merge pull request #50 from tjend/plugins_extra_hash_allow_multiple_inputs_same_type
Plugins extra hash allow multiple inputs same type
2018-05-09 19:28:49 +02:00
ecc24940b6 Remove option to override extra plugin filename as all dict keys must be unique 2018-05-09 11:53:57 +10:00
e93bc95cb5 Allow overriding plugin in telegraf_plugins_extra dict 2018-05-09 11:52:58 +10:00
d039a0568e Merge pull request #49 from dj-wasabi/add_requirements_file
Update to 2.4;Using specific versions of libraries
2018-05-08 20:18:01 +02:00
b015df26ae Update to 2.4;Using specific versions of libraries 2018-05-08 20:09:13 +02:00
3df05b4738 Merge pull request #47 from dj-wasabi/prepare_090
Updating to 0.9.0
2018-05-06 09:38:52 +02:00
4fcb2ac9d2 Updating to 0.9.0 2018-05-06 09:32:37 +02:00
8f5cc0959d Merge pull request #46 from tjend/use_hash_for_extra_plugins
Convert the telegraf_plugins_extra varaible to a hash so that we can …
2018-05-06 09:27:42 +02:00
51ac4b7640 Convert the telegraf_plugins_extra varaible to a hash so that we can merge the hashes of multiple var files 2018-05-06 16:54:34 +10:00
2f3b11241d Merge pull request #45 from boxrick/smallimprovements
Improved comments, split up role, moved tags and added defaults
2018-04-06 15:53:13 +02:00
d0258da789 Removal of extra parameter
It seems that diskio and io are one and the same, so this causes it to
be loaded twice. Removing the extra diskio.
2018-04-06 13:48:38 +01:00
a49a079664 Improved comments, split up role, moved tags and added defaults
- Added some commenting inside of defaults to clarify which variables
  adjust which files

- Split up the role taking items out of main.yml in tasks. This is to
  improve clarity of what each bit of Ansible code is doing.

- Tags were defined for each and every task within the Debian.yml moved
  ths up to main.yml so they don't need repeating every task adding
  clutter.

- Added some extra default plugins, as of current release version these
  are now within the default configuration but were missing from this
  role.

- Added some commenting inside the templates and the top of some tasks
  to clarify where the templated file was coming from.
2018-04-06 12:25:27 +01:00
af96592932 Merge pull request #43 from tszym/override-redhat-version
Allow to override RedHat release version
2018-03-18 16:18:01 +01:00
875b1a5ee8 Allow to override RedHat release version
Systems like Amazon Linux are from the RedHat OS family but have a
specific release versions notation. Influxdata does not always provide a
yum repository with these versions, so it should be something to override
in order to install telegraf from a different release version path.

For instance, Influxdata currently provides telegraf for both RHEL
versions 6 and 2016.09 with packages being the same (same checksums).
This is because of Amazon Linux 2016.09 being a RHEL version 6.
However, now Amazon Linux 2017.09 is out, still being a RHEL 6 but
Influxdata does not provide a 2017.09 release version path so we cannon
install telegraf on it. Overriding the release version to 6 or 2016.09
will allow to install.
2018-03-09 11:49:06 +01:00
aafd65f4b1 Merge pull request #42 from dj-wasabi/fix_travis
Fix Travis Tests
2018-03-01 19:22:10 +01:00
6d04f839e0 Debugging (2) 2018-03-01 18:05:08 +01:00
2c896aa512 Debugging (1) 2018-03-01 18:01:52 +01:00
e6d715e81a Install higher docker module 2018-03-01 17:54:49 +01:00
316772ba64 Install higher docker module 2018-03-01 17:50:02 +01:00
1d413000a4 Lower the molecule version 2018-03-01 17:07:04 +01:00
63249b4fba Merge pull request #41 from Angristan/patch-1
Fix markdown
2018-03-01 16:42:00 +01:00
c1758eaa74 Disable no_log 2018-03-01 16:41:35 +01:00
0f001e68c2 Disable rsyslog 2018-03-01 16:23:51 +01:00
57f5395c7d Fix markdown 2018-03-01 02:07:23 +01:00
eb986ae494 Merge pull request #40 from cycloidio/master
plugins: be able to specify the filename of extra plugings
2017-12-04 19:22:05 +01:00
cc40194a65 plugins: be able to specify the filename of extra plugings
This commit allow you to override the filename used to create the extra
config file for a plugin.

You might need it If you want to call several time the
same input plugin : for example https://github.com/influxdata/telegraf/issues/2294

Explain here : https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#multiple-inputs-of-the-same-type

An input plugin can be called several time. Allowing to override the filename seems to be the best solution
to not break ansible-telegraf configuration and offer a way to call several time an input.
2017-12-04 09:20:48 +01:00
06a63e3580 Merge pull request #32 from cycloidio/master
tags: give an option to use AWS tags as telegraf tags
2017-11-14 13:40:35 +01:00
5829b6bc02 tags: give an option to use AWS tags as telegraf tags
From : https://github.com/rossmcdonald/telegraf

Add `telegraf_agent_aws_tags` boolean to enable AWS tag in telegraf agent
tags section.

Also add `telegraf_agent_aws_tags_prefix` to allow usage of a prefix on AWS tags name.
2017-11-14 09:16:25 +01:00
23 changed files with 366 additions and 105 deletions

35
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,35 @@
---
name: Bug report
about: Help to improve this Ansible role.
---
**Describe the bug**
<!--- A clear and concise description of what the bug is. -->
**Installation method/version**
<!--- Please provide the installation method and version of the role. -->
* Github / latest
* Ansible Galaxy / 1.1.0
**Ansible Version**
```
<!--- Paste output from "ansible --version" -->
```
**Targetted hosts**
Concerns the following OS(es):
<!--- Pick one below and delete the rest -->
* Ubuntu
* Debian
* CentOS
* Mint
**Expected behavior**
<!--- A clear and concise description of what you expected to happen. -->
**Additional context**
<!--- Add any other context about the problem here. Configuration of the role/group_vars information etc. -->

View File

@ -0,0 +1,14 @@
---
name: Feature request
about: Suggest an idea for this Ansible role
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -5,7 +5,7 @@ services:
- docker - docker
install: install:
- pip install molecule ansible docker - pip install -r requirements.txt
script: script:
- molecule --version - molecule --version

View File

@ -5,6 +5,25 @@ Below an overview of all changes in the releases.
Version (Release date) Version (Release date)
0.10.0 (2018-08-12)
* Updating to telegraf 1.7.3
* Fix Deprecation warnings #54
* Changed 'include' to 'include_tasks' to remove deprecation warning #53 (By pull request: tjend (Thanks!))
* Add option to remove extra plugin config files #52 (By pull request: tjend (Thanks!))
* Plugins extra hash allow multiple inputs same type #50 (By pull request: tjend (Thanks!))
* Using specific version for tests
* Update minimum Ansible version to 2.4
0.9.0 (2018-05-06)
* plugins: be able to specify the filename of extra plugings #40 (By pull request: gaelL (Thanks!))
* Fix markdown #41 (By pull request: Angristan (Thanks!))
* Allow to override RedHat release version #43 (By pull request: tszym (Thanks!))
* Improved comments, split up role, moved tags and added defaults #45 (By pull request: boxrick (Thanks!))
* Fix Travis Tests #42
* Convert the telegraf_plugins_extra varaible to a hash so that we can … #46 (By pull request: tjend (Thanks!))
0.8.0 (2017-10-30) 0.8.0 (2017-10-30)
* Updating to Molecule V2 * Updating to Molecule V2

3
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,3 @@
# Code of Conduct
The Code of Conduct from Ansible found [here](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html) applies to this Ansible role as well.

88
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,88 @@
# Contributing to this role
**Table of content**
- [Contributing to this role](#contributing-to-this-role)
* [Contributing](#contributing)
* [(local) Development](#-local--development)
+ [Requirements](#requirements)
+ [Execution](#execution)
- [Other](#other)
* [Virtualenv](#virtualenv)
* [Links](#links)
Thank you very much for making time to improve this Ansible role.
## Contributing
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. [Contributor Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html).
1. Fork the repo
2. Create a branch and apply your changes to this branch.
a. Make sure you have updated the documentation when adding new variables;
b. Don't forget to add/update tests so we can test the functionality during each Pull Request;
c. Make sure the tests will succeed.
3. Push the branch to your fork and submit a pull request.
**Note**
Pull Requests that fails during the tests will not be merged.
## Coding Guidelines
Style guides are important because they ensure consistency in the content, look, and feel of a book or a website.
* [Ansible Style Guide](http://docs.ansible.com/ansible/latest/dev_guide/style_guide/)
* It's "Ansible" when referring to the product and ``ansible`` when referring to the command line tool, package, etc
* Playbooks should be written in multi-line YAML with ``key: value``. The form ``key=value`` is only for ``ansible`` ad-hoc, not for ``ansible-playbook``.
* Tasks should always have a ``name:``
## (local) Development
This role make use of Molecule to test the execution of the role and verificate it. In the root of the repository, a file named `requirements.txt` exists and contains the versions used by the tests.
### Requirements
You can install them with the following command:
```
pip install -r requirements.txt
```
Once the dependencies are installed, please install Docker as Molecule is configured in this repository to create Docker containers. See [this](https://docs.docker.com/install/) link to install Docker on your system.
### Execution
Once everything is installed, you can validate your changes by executing:
```
molecule test
```
It should run without any issues.
# Other
## Virtualenv
Suggestion is to create a virtualenv so you won't have issues with other projects.
Some web pages describing for virtual env:
* http://thepythonguru.com/python-virtualenv-guide/
* https://realpython.com/python-virtual-environments-a-primer/
* https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/
## Links
[Molecule](https://molecule.readthedocs.io/)
[Ansible](https://www.ansible.com/)
[Molecule V2 with your own role](https://werner-dijkerman.nl/2017/09/05/using-molecule-v2-to-test-ansible-roles/)
**End note**: Have fun making changes. If a feature helps you, then others find it helpful too and I will happily have it merged.

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Werner Dijkerman
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

12
PULL_REQUEST_TEMPLATE.md Normal file
View File

@ -0,0 +1,12 @@
**Description of PR**
<!--- Describe what the PR holds -->
**Type of change**
<!--- Pick one below and delete the rest: -->
Feature Pull Request
Bugfix Pull Request
Docs Pull Request
**Fixes an issue**
<!--- If this PR fixes an issue, please mention it. -->

View File

@ -36,6 +36,8 @@ The following parameters can be set for the Telegraf agent:
* `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True * `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True
* `telegraf_agent_flush_interval`: Default data flushing interval for all outputs. Default: 10 * `telegraf_agent_flush_interval`: Default data flushing interval for all outputs. Default: 10
* `telegraf_agent_flush_jitter`: Jitter the flush interval by a random amount. Default: 0 * `telegraf_agent_flush_jitter`: Jitter the flush interval by a random amount. Default: 0
* `telegraf_agent_aws_tags`: Configure AWS ec2 tags into Telegraf tags section Default: `False`
* `telegraf_agent_aws_tags_prefix`: Define a prefix for AWS ec2 tags. Default: `""`
* `telegraf_agent_collection_jitter`: Jitter the collection by a random amount. Default: 0 (since v0.13) * `telegraf_agent_collection_jitter`: Jitter the collection by a random amount. Default: 0 (since v0.13)
* `telegraf_agent_metric_batch_size`: The agent metric batch size. Default: 1000 (since v0.13) * `telegraf_agent_metric_batch_size`: The agent metric batch size. Default: 1000 (since v0.13)
* `telegraf_agent_metric_buffer_limit`: The agent metric buffer limit. Default: 10000 (since v0.13) * `telegraf_agent_metric_buffer_limit`: The agent metric buffer limit. Default: 10000 (since v0.13)
@ -68,7 +70,7 @@ The config will be printed line by line into the configuration, so you could als
and it will be printed in the configuration file. and it will be printed in the configuration file.
There are two properties which are the same, but are used differently. Those are: There are two properties which are similar, but are used differently. Those are:
* `telegraf_plugins_default` * `telegraf_plugins_default`
* `telegraf_plugins_extra` * `telegraf_plugins_extra`
@ -88,11 +90,11 @@ With the property `telegraf_plugins_default` it is set to use the default set of
Every telegraf agent has these as a default configuration. Every telegraf agent has these as a default configuration.
The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific to the servers goal. Following is an example for using this parameter for MySQL database servers: The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific to the servers goal. It is a hash instead of a list, so that you can merge values from multiple var files together. Following is an example for using this parameter for MySQL database servers:
cat group_vars/mysql_database cat group_vars/mysql_database
telegraf_plugins_extra: telegraf_plugins_extra:
- plugin: mysql mysql:
config: config:
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"] - servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
@ -129,15 +131,28 @@ No dependencies
roles: roles:
- { role: dj-wasabi.telegraf } - { role: dj-wasabi.telegraf }
##Contributors ## Contributors
The following have contributed to this Ansible role: The following have contributed to this Ansible role:
* aferrari-technisys * Thomas Szymanski
* stvnwrgs * Alejandro
* lhoss * Slawomir Skowron
* thecodeassassin * Ismael
* Ismael * Laurent Hoss
* romainbureau * Anthony ARNAUD
* Rick Box
* Emerson Knapp
* gaelL
* Steven Wirges
* zend0
* Angristan
* Olivier Boukili
* Romain BUREAU
* TheCodeAssassin
* tjend
Thank you all!
## Molecule ## Molecule

View File

@ -1,13 +1,15 @@
--- ---
# defaults file for ansible-telegraf # defaults file for ansible-telegraf
telegraf_agent_version: 1.4.0 telegraf_agent_version: 1.7.3
telegraf_agent_hostname: "{{ ansible_fqdn }}" telegraf_agent_hostname: "{{ ansible_fqdn }}"
telegraf_agent_interval: 10 telegraf_agent_interval: 10
telegraf_agent_debug: False telegraf_agent_debug: False
telegraf_agent_round_interval: True telegraf_agent_round_interval: True
telegraf_agent_flush_interval: 10 telegraf_agent_flush_interval: 10
telegraf_agent_flush_jitter: 0 telegraf_agent_flush_jitter: 0
telegraf_agent_aws_tags: False
telegraf_agent_aws_tags_prefix: ""
# v0.13 settings (not sure if supported in older version): # v0.13 settings (not sure if supported in older version):
telegraf_agent_collection_jitter: 0 telegraf_agent_collection_jitter: 0
@ -28,6 +30,7 @@ telegraf_agent_output:
- database = "telegraf" - database = "telegraf"
- precision = "s" - precision = "s"
# defaults - /etc/telegraf/telegraf.conf
telegraf_plugins_default: telegraf_plugins_default:
- plugin: cpu - plugin: cpu
config: config:
@ -39,5 +42,11 @@ telegraf_plugins_default:
- plugin: system - plugin: system
- plugin: swap - plugin: swap
- plugin: netstat - plugin: netstat
- plugin: processes
- plugin: kernel
telegraf_plugins_extra: # extra configuration - /etc/telegraf/telegraf.d/*
telegraf_plugins_extra: {}
# RedHat specific settings for convenience
telegraf_redhat_releasever: "$releasever"

View File

@ -4,7 +4,7 @@ galaxy_info:
description: Installing and configuring Telegraf description: Installing and configuring Telegraf
company: company:
license: license BSD license: license BSD
min_ansible_version: 1.2 min_ansible_version: 2.4
platforms: platforms:
- name: EL - name: EL
versions: versions:

View File

@ -39,7 +39,7 @@
image: "molecule_local/{{ item.image }}" image: "molecule_local/{{ item.image }}"
state: started state: started
recreate: False recreate: False
log_driver: syslog log_driver: none
command: "{{ item.command | default('sleep infinity') }}" command: "{{ item.command | default('sleep infinity') }}"
privileged: "{{ item.privileged | default(omit) }}" privileged: "{{ item.privileged | default(omit) }}"
volumes: "{{ item.volumes | default(omit) }}" volumes: "{{ item.volumes | default(omit) }}"

View File

@ -13,8 +13,13 @@ platforms:
image: milcom/centos7-systemd image: milcom/centos7-systemd
privileged: True privileged: True
- name: telegraf-debian - name: telegraf-debian
image: maint/debian-systemd image: minimum2scp/systemd-stretch
privileged: True privileged: True
command: /sbin/init
- name: telegraf-ubuntu
image: solita/ubuntu-systemd:bionic
privileged: True
command: /sbin/init
provisioner: provisioner:
name: ansible name: ansible

View File

@ -4,12 +4,19 @@
- name: "Installing which on CentOS" - name: "Installing which on CentOS"
yum: yum:
name: which name: which
state: installed state: present
when: ansible_distribution == 'CentOS' when:
- ansible_os_family == 'RedHat'
- name: "Installing wget on Debian" - name: "Installing wget on Debian"
apt: apt:
name: wget name: "{{ item }}"
state: installed state: present
when: ansible_distribution == 'Debian' when:
- ansible_os_family == 'Debian'
with_items:
- wget
- gpg
roles: roles:
- role: ansible-telegraf - role: ansible-telegraf

View File

@ -4,6 +4,6 @@ extends: default
rules: rules:
line-length: line-length:
max: 120 max: 140
level: warning level: warning
truthy: disable truthy: disable

4
requirements.txt Normal file
View File

@ -0,0 +1,4 @@
ansible==2.4.4.0
docker==3.3.0
molecule==2.13.1
testinfra==1.12.0

View File

@ -4,9 +4,6 @@
stat: stat:
path: /usr/lib/apt/methods/https path: /usr/lib/apt/methods/https
register: apt_https_transport register: apt_https_transport
tags:
- telegraf
- packages
- name: Install APT HTTPS transport. - name: Install APT HTTPS transport.
apt: apt:
@ -14,18 +11,12 @@
state: present state: present
when: not apt_https_transport.stat.exists when: not apt_https_transport.stat.exists
become: yes become: yes
tags:
- telegraf
- packages
- name: Download Telegraf apt key. - name: Download Telegraf apt key.
apt_key: apt_key:
url: "https://repos.influxdata.com/influxdb.key" url: "https://repos.influxdata.com/influxdb.key"
state: present state: present
become: yes become: yes
tags:
- telegraf
- packages
- name: Add Telegraf repository (using LSB). - name: Add Telegraf repository (using LSB).
apt_repository: apt_repository:
@ -33,9 +24,6 @@
filename: "telegraf" filename: "telegraf"
state: present state: present
become: yes become: yes
tags:
- telegraf
- packages
when: ansible_lsb is defined and ansible_lsb.codename is defined when: ansible_lsb is defined and ansible_lsb.codename is defined
- name: Add Telegraf repository. - name: Add Telegraf repository.
@ -44,17 +32,11 @@
filename: "telegraf" filename: "telegraf"
state: present state: present
become: yes become: yes
tags:
- telegraf
- packages
when: ansible_lsb is not defined or ansible_lsb.codename is not defined when: ansible_lsb is not defined or ansible_lsb.codename is not defined
- name: "Install telegraf package | Debian" - name: "Install telegraf package | Debian"
apt: apt:
name: telegraf name: "telegraf"
state: installed state: present
notify: "Restart Telegraf" notify: "Restart Telegraf"
become: yes become: yes
tags:
- telegraf
- packages

View File

@ -1,10 +1,11 @@
--- ---
# description: RedHat specific installation
- name: "Add yum repository | RedHat" - name: "Add yum repository | RedHat"
yum_repository: yum_repository:
name: influxdb name: influxdb
description: InfluxDB Repository - RHEL $releasever description: InfluxDB Repository - RHEL $releasever
baseurl: https://repos.influxdata.com/rhel/$releasever/$basearch/stable baseurl: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
gpgcheck: yes gpgcheck: yes
gpgkey: https://repos.influxdata.com/influxdb.key gpgkey: https://repos.influxdata.com/influxdb.key

60
tasks/configure.yml Normal file
View File

@ -0,0 +1,60 @@
---
# description: Configure telegraf and get all relevent ec2 information
- name: Retrieve ec2 facts
ec2_facts:
when: telegraf_agent_aws_tags
- 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: yes
when: telegraf_agent_version is version_compare('0.10.0', '<')
notify: "Restart Telegraf"
- name: "Copy the template for versions >= 0.10.0"
template:
src: telegraf.conf.j2
dest: /etc/telegraf/telegraf.conf
owner: telegraf
group: telegraf
mode: 0640
become: yes
when: telegraf_agent_version is version_compare('0.10.0', '>=')
notify: "Restart Telegraf"
- name: "Copy telegraf extra plugins"
template:
src: "telegraf-extra-plugin.conf.j2"
dest: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
owner: telegraf
group: telegraf
mode: 0640
with_dict: "{{ telegraf_plugins_extra }}"
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable and item.value.state|default('present') != 'absent'"
become: yes
notify: "Restart Telegraf"
- name: "Remove telegraf extra plugins"
file:
path: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
state: absent
with_dict: "{{ telegraf_plugins_extra }}"
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable and item.value.state|default('present') == 'absent'"
become: yes
notify: "Restart Telegraf"
- name: "Force restart service after reread config"
meta: flush_handlers

View File

@ -2,43 +2,15 @@
# tasks file for ansible-telegraf # tasks file for ansible-telegraf
- name: "Install the correct repository" - name: "Install the correct repository"
include: "RedHat.yml" include_tasks: "RedHat.yml"
when: ansible_os_family == "RedHat" when: ansible_os_family == "RedHat"
- name: "Install the correct repository" - name: "Install the correct repository"
include: "Debian.yml" include_tasks: "Debian.yml"
when: ansible_os_family == "Debian" when: ansible_os_family == "Debian"
tags:
- telegraf
- packages
- name: "Copy the template for versions < 0.10.0" - name: "Configure telegraf"
template: include_tasks: "configure.yml"
src: etc-opt-telegraf-telegraf.conf.j2
dest: /etc/opt/telegraf/telegraf.conf
owner: telegraf
group: telegraf
mode: 0640
become: yes
when: telegraf_agent_version|version_compare('0.10.0', '<')
notify: "Restart Telegraf"
- name: "Copy the template for versions >= 0.10.0"
template:
src: telegraf.conf.j2
dest: /etc/telegraf/telegraf.conf
owner: telegraf
group: telegraf
mode: 0640
become: yes
when: telegraf_agent_version|version_compare('0.10.0', '>=')
notify: "Restart Telegraf"
- name: "Copy telegraf extra plugins"
template:
src: "telegraf-extra-plugin.conf.j2"
dest: "/etc/telegraf/telegraf.d/{{ item.plugin }}.conf"
owner: telegraf
group: telegraf
mode: 0640
with_items: "{{ telegraf_plugins_extra }}"
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
become: yes
notify: "Restart Telegraf"

View File

@ -1,4 +1,4 @@
# Telegraf configuration ### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
[tags] [tags]
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %} {% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
@ -7,6 +7,12 @@
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if telegraf_agent_aws_tags == true and ec2_tags is defined and ec2_tags != None %}
{% for key, value in ec2_tags.tags.iteritems()%}
{{telegraf_agent_aws_tags_prefix}}{{ key }} = "{{ value }}"
{% endfor %}
{% endif %}
# Configuration for telegraf itself # Configuration for telegraf itself
[agent] [agent]
interval = "{{ telegraf_agent_interval }}s" interval = "{{ telegraf_agent_interval }}s"

View File

@ -1,45 +1,47 @@
[[inputs.{{ item.plugin }}]] ### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
{% if item.interval is defined %}
interval = "{{ item.interval }}s" [[inputs.{{ item.value.plugin | default(item.key) }}]]
{% if item.value.interval is defined %}
interval = "{{ item.value.interval }}s"
{% endif %} {% endif %}
{% if item.config is defined and item.config is iterable %} {% if item.value.config is defined and item.value.config is iterable %}
{% for items in item.config %} {% for items in item.value.config %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.tags is defined and item.tags is iterable %} {% if item.value.tags is defined and item.value.tags is iterable %}
[inputs.{{ item.plugin }}.tags] [inputs.{{ item.value.plugin | default(item.key) }}.tags]
{% for items in item.tags %} {% for items in item.value.tags %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %} {% if item.value.tagpass is defined and item.value.tagpass is iterable %}
[{{ item.plugin }}.tagpass] [{{ item.value.plugin | default(item.key) }}.tagpass]
{% for items in item.tagpass %} {% for items in item.value.tagpass %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %} {% if item.value.tagdrop is defined and item.value.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop] [{{ item.value.plugin | default(item.key) }}.tagdrop]
{% for items in item.tagdrop %} {% for items in item.value.tagdrop %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.pass is defined and item.pass is iterable %} {% if item.value.pass is defined and item.value.pass is iterable %}
[{{ item.plugin }}.pass] [{{ item.value.plugin | default(item.key) }}.pass]
{% for items in item.pass %} {% for items in item.value.pass %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.drop is defined and item.drop is iterable %} {% if item.value.drop is defined and item.value.drop is iterable %}
[{{ item.plugin }}.drop] [{{ item.value.plugin | default(item.key) }}.drop]
{% for items in item.drop %} {% for items in item.value.drop %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.specifications is defined and item.specifications is iterable %} {% if item.value.specifications is defined and item.value.specifications is iterable %}
[[{{item.plugin}}.specifications]] [[{{item.value.plugin | default(item.key)}}.specifications]]
{% for items in item.specifications %} {% for items in item.value.specifications %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@ -1,4 +1,4 @@
# Telegraf configuration ### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
[global_tags] [global_tags]
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %} {% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
@ -7,6 +7,12 @@
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if telegraf_agent_aws_tags == true and ec2_tags is defined and ec2_tags != None %}
{% for key, value in ec2_tags.tags.iteritems()%}
{{telegraf_agent_aws_tags_prefix}}{{ key }} = "{{ value }}"
{% endfor %}
{% endif %}
# Configuration for telegraf agent # Configuration for telegraf agent
[agent] [agent]
interval = "{{ telegraf_agent_interval }}s" interval = "{{ telegraf_agent_interval }}s"
@ -15,13 +21,13 @@
round_interval = {{ telegraf_agent_round_interval | lower }} round_interval = {{ telegraf_agent_round_interval | lower }}
flush_interval = "{{ telegraf_agent_flush_interval }}s" flush_interval = "{{ telegraf_agent_flush_interval }}s"
flush_jitter = "{{ telegraf_agent_flush_jitter }}s" flush_jitter = "{{ telegraf_agent_flush_jitter }}s"
{% if telegraf_agent_version|version_compare('0.13', '>=') %} {% if telegraf_agent_version is version_compare('0.13', '>=') %}
collection_jitter = "{{ telegraf_agent_collection_jitter }}s" collection_jitter = "{{ telegraf_agent_collection_jitter }}s"
metric_batch_size = {{ telegraf_agent_metric_batch_size }} metric_batch_size = {{ telegraf_agent_metric_batch_size }}
metric_buffer_limit = {{ telegraf_agent_metric_buffer_limit }} metric_buffer_limit = {{ telegraf_agent_metric_buffer_limit }}
quiet = {{ telegraf_agent_quiet | lower }} quiet = {{ telegraf_agent_quiet | lower }}
{% endif %} {% endif %}
{% if telegraf_agent_version|version_compare('1.1', '>=') %} {% if telegraf_agent_version is version_compare('1.1', '>=') %}
logfile = "{{ telegraf_agent_logfile }}" logfile = "{{ telegraf_agent_logfile }}"
omit_hostname = {{ telegraf_agent_omit_hostname | lower }} omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
{% endif %} {% endif %}