64 Commits
0.5.0 ... 0.8.0

Author SHA1 Message Date
bd62e6316e Updating to 0.8.0 2017-10-30 19:54:29 +01:00
b86a9f29a3 Merge pull request #38 from tszym/rename_tags_parameter
Use telegra_global_tags for oldest telegraf versions
2017-10-24 18:48:31 +02:00
b2a1652c47 Use telegra_global_tags for oldest telegraf versions
Users will use the same config key for global tags regardless of the
telegraf version.
Also fix the documentation about this parameter to be consistent with
changes from #37
2017-10-24 15:06:47 +02:00
2bee19f8a1 Merge pull request #37 from aarnaud/master
Fix extra plugins by file  /  Change apt source filename / Change tags by global_tags
2017-10-24 11:55:57 +02:00
87e6e95c72 Fix extra plugins by file 2017-10-23 23:10:25 -04:00
4fb8da24af Change apt source filename 2017-10-23 23:10:24 -04:00
b4317d8e5d Change tags by global_tags 2017-10-23 23:10:09 -04:00
7766329cb8 Merge pull request #36 from tszym/remove-redhat-useless-packages
Remove useless packages on RedHat. fix #28
2017-10-18 14:54:16 +02:00
1e57d51575 Remove useless packages on RedHat. fix #28
Once used for testing, these packages are no longer useful and can even
lead to certain issues, as installation can fail.
2017-10-18 14:41:35 +02:00
163284ab36 Merge pull request #35 from tszym/fix-lsb-usage
Test if LSB codename exists before using it
2017-10-17 17:16:25 +02:00
a08dee2562 Test if LSB codename exists before using it
Testing Debian with Molecule, Ansible will see the ansible_lsb defined
but the codename attribute is not. Testing its definition will prevent
access to an undifined attribute.
2017-10-17 14:24:19 +02:00
9e0be2c3d2 Setting to 1.4 2017-09-11 10:14:27 +02:00
82ca1ef61d Merge pull request #31 from dj-wasabi/port_molecule_v2
Updating to Molecule V2
2017-09-10 18:18:08 +02:00
4f8fa12fad Updating to Molecule V2 2017-09-10 18:11:07 +02:00
1100ceddd6 Merge pull request #27 from dj-wasabi/release_0.7.0
Updating to release 0.7.0
2017-02-23 21:11:16 +02:00
40b25772f3 Updating to release 0.7.0 2017-02-23 19:45:11 +01:00
71f436f8ca Merge pull request #26 from tszym/remove-actions
Replace action by modules
2017-02-22 20:37:34 +02:00
c416bb20a7 Replace action by modules 2017-02-22 19:20:29 +01:00
ae8c1cbe7f Merge pull request #25 from tszym/rpm-repo
Use yum repository to install telegraf on RedHat
2017-02-22 19:05:49 +02:00
c6848506cf Fix a typo 2017-02-22 10:27:03 +01:00
0b82b8420e Use yum repository to install telegraf on RedHat family
The role does not use a direct download of the rpm package but use the
yum repository for InfluxData products as it is advised in the current
documentation for installation.
https://docs.influxdata.com/telegraf/v1.2/introduction/installation/
2017-02-22 10:27:03 +01:00
f7e7045e9f Remove unused vars 2017-02-22 10:27:03 +01:00
35b594cf36 Merge pull request #24 from emersondispatch/master
Remove for-loop in extra-plugin template
2017-02-21 22:10:45 +02:00
128faa55b6 Consolidate instead to a single extra-plugins conf file, to cover the case of multiple instances of same plugin 2017-02-21 10:40:19 -08:00
641981bfb3 Remove for-loop in extra-plugin template, because this is performed by the task itself. Was causing all extra plugin configurations to be written in each sub-configuration file 2017-02-20 20:24:19 -08:00
e29aa87c04 Merge pull request #23 from zend0/patch-1
Update Debian.yml
2017-02-09 20:13:12 +01:00
227c6f9418 Update Debian.yml
upd

add become: yes
2017-02-09 15:25:05 +04:00
cb215db02c Merge pull request #21 from oboukili/master
extra plugins tags
2017-01-20 12:34:37 +01:00
0597f0115c extra plugins tags 2017-01-20 11:58:17 +01:00
62a6158281 Merge pull request #20 from szibis/input_tags
Input tags support
2017-01-20 10:48:36 +01:00
fe9f970bde Fixes closing if for tags template 2017-01-20 10:01:13 +01:00
2696c2aca5 Merge pull request #19 from szibis/permissions
Fix telegraf confguration permissions
2017-01-19 19:31:48 +01:00
f3f67f4f7a Input tags support 2017-01-18 21:29:42 +01:00
8b522beab0 fix typo 2017-01-18 21:24:16 +01:00
4291b00a6e Fix telegraf permissions - tests fix 2017-01-18 21:14:28 +01:00
7694682e56 Fix telegraf permissions. Telegraf package adds user and group telegraf. 2017-01-18 21:10:39 +01:00
8fd9c2c9c9 Fix merge issue 2017-01-02 13:03:22 +01:00
4c0d09d11e Set release 0.6.0 2017-01-02 13:02:26 +01:00
9aad1a8d39 Merge pull request #17 from lhoss/readme-update-with-telegraf-v1.1-settings
update the README with the latest v0.13 - v1.1 agent settings
2017-01-02 12:41:59 +01:00
2c54dea8d2 update the README with the latest v0.13 - v1.1 agent settings 2017-01-02 10:27:23 +01:00
f962f4ca82 Merge pull request #15 from dj-wasabi/fix_molecule
Fixing molecule
2016-12-31 19:54:27 +01:00
194d3d6e92 Merge branch 'master' into fix_molecule 2016-12-30 18:45:12 +01:00
5036595b79 Merge pull request #16 from lhoss/support_newer_agent_settings
support missing agent settings upto telegraf v1.1
2016-12-30 18:44:35 +01:00
3bd9681567 Fixing merge issue 2016-12-30 18:38:52 +01:00
536dce400b Merge pull request #14 from lhoss/improve_version_compare
use version_compare filter …
2016-12-30 18:37:26 +01:00
0405d3d993 support missing agent settings upto telegraf v1.1 2016-12-30 18:36:29 +01:00
1533214071 FIxing ansible-lint issues 2016-12-30 18:35:49 +01:00
26b473b0fb Added some version commands 2016-12-30 18:03:51 +01:00
d486975c81 Fixing molecule 2016-12-30 17:55:21 +01:00
3201ec329c use version_compare filter (more readable, stable and no extra set_fact required) 2016-12-30 17:39:44 +01:00
b95a67954f Merge pull request #13 from romainbureau/master
set telegraf hostname in defaults.
2016-09-20 18:04:53 +02:00
ad1a4430c6 set telegraf hostname in defaults. 2016-09-20 15:33:07 +02:00
ec63b2aa24 Merge pull request #12 from dj-wasabi/fix_test
Removed imports
2016-09-11 20:04:28 +02:00
8dbb365ed0 Removed imports 2016-09-11 19:55:16 +02:00
f23fc6ea23 Merge pull request #11 from Ismael/fix_repo
Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid")
2016-09-11 19:52:52 +02:00
51c82e1c85 Merge pull request #10 from Ismael/fix_become
Do "become" for the steps that require root access on Debian
2016-09-11 19:52:00 +02:00
a3ca2db212 For Debian: Use ansible_lsb only if it's defined 2016-09-07 19:07:55 -03:00
9c9dc33ac3 Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid")
Use ansible_lsb.codename to set the path to the influxdb repo because "hybrid" distros (when you have testing+unstable, for example) don't work otherwise
2016-09-07 19:07:51 -03:00
95d5161d33 Do "become" for the steps that require root access on Debian
Actions with apt require being root. Add "become" to those.
"sudo" is deprecated, changed it to "become"
2016-09-07 18:52:46 -03:00
86fabca61b Merge pull request #7 from dj-wasabi/new_molecule_setup
Added new code for correct molecule verification
2016-08-24 19:17:20 +02:00
b0dfe773a7 Added new code for correct molecule verification 2016-08-24 19:09:23 +02:00
3826a37496 Added 0.5.1 2016-08-24 19:00:27 +02:00
4d197aa8ea Merge pull request #6 from mycujoo/master
fixed issue with ansible not getting the package
2016-08-12 09:03:50 +02:00
40230aa198 fixed issue with ansible not getting the package
Ansible was not getting the package properly on ubuntu 14.04 because of SSL problems. Could be resolved by installing additional pip packages but this is cleaner.
2016-08-11 16:58:35 +02:00
24 changed files with 385 additions and 162 deletions

View File

@ -4,14 +4,12 @@ language: python
services:
- docker
before_install:
- sudo apt-get -qq update
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
install:
- pip install molecule
- pip install molecule ansible docker
script:
- molecule test
- molecule --version
- ansible --version
- molecule test
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@ -5,6 +5,40 @@ Below an overview of all changes in the releases.
Version (Release date)
0.8.0 (2017-10-30)
* Updating to Molecule V2
* Test if LSB codename exists before using it #35 (By pull request: tszym (Thanks!))
* Remove useless packages on RedHat. fix #28 #36 (By pull request: tszym (Thanks!))
* Fix extra plugins by file / Change apt source filename / Change tags by global_tags #37 (By pull request: aarnaud (Thanks!))
* Use telegra_global_tags for oldest telegraf versions #38 (By pull request: tszym (Thanks!))
0.7.0 (2017-02-23)
* Replace action by modules #26 (By pull request: tszym (Thanks!))
* Use yum repository to install telegraf on RedHat #25 (By pull request: tszym (Thanks!))
* Remove for-loop in extra-plugin template #24 (By pull request: emersondispatch (Thanks!))
* Update Debian.yml #23 (By pull request: zend0 (Thanks!))
* extra plugins tags #21 (By pull request: oboukili (Thanks!))
* Input tags support #20 (By pull request: szibis (Thanks!))
* Fix telegraf confguration permissions #19 (By pull request: szibis (Thanks!))
0.6.0 (2017-01-02)
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #9 (By pull request: Ismael (Thanks!))
* Do "become" for the steps that require root access on Debian #10 (By pull request: Ismael (Thanks!))
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #11 (By pull request: Ismael (Thanks!))
* Removed imports #12
* Fixing molecule #15
* set telegraf hostname in defaults. #13 (By pull request: romainbureau (Thanks!))
* use version_compare filter … #14 (By pull request: lhoss (Thanks!))
* support missing agent settings upto telegraf v1.1 #16 (By pull request: lhoss (Thanks!))
* update the README with the latest v0.13 - v1.1 agent settings #17 (By pull request: lhoss (Thanks!))
0.5.1 (2016-08-24)
* fixed issue with ansible not getting the package #6 (By pull request: thecodeassassin (Thanks!))
0.5.0 (2016-07-17)
* Removed Test Kitchen tests

View File

@ -1,7 +1,6 @@
dj-wasabi.telegraf
=========
# dj-wasabi.telegraf
Build status:
## Build status:
[![Build Status](https://travis-ci.org/dj-wasabi/ansible-telegraf.svg?branch=master)](https://travis-ci.org/dj-wasabi/ansible-telegraf)
@ -13,28 +12,42 @@ Design goals are to have a minimal memory footprint with a plugin system so that
(https://github.com/influxdb/telegraf)
Requirements
------------
## Requirements
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
Role Variables
--------------
## Upgrade
### 0.7.0
There was an issue:
If I configure a telegraf_plugins_extra, run ansible, delete the plugin and run ansible again, the plugin stays on the machine.
## Role Variables
The following parameters can be set for the Telegraf agent:
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.0.0`
* `telegraf_agent_rpm_url`: The full path to the RPM file located on a webserver.
* `telegraf_agent_deb_url`: The full path to the DEB file located on a webserver.
* `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10`
* `telegraf_agent_debug`: Setting the Telegraf in debug mode. Default: `False`
* `telegraf_agent_debug`: Run Telegraf in debug mode. Default: `False`
* `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_jitter`: Jitter the flush interval by a random amount. Default: 0
* `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_buffer_limit`: The agent metric buffer limit. Default: 10000 (since v0.13)
* `telegraf_agent_quiet`: Run Telegraf in quiet mode (error messages only). Default: `False` (since v0.13)
* `telegraf_agent_logfile`: The agent logfile name. Default: '' (means to log to stdout) (since v1.1)
* `telegraf_agent_omit_hostname`: Do no set the "host" tag in the agent. Default: `False` (since v1.1)
Full agent settings reference: https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration
You can set tags for the host running telegraf:
telegraf_agent_tags:
telegraf_global_tags:
- tag_name: some_name
tag_value: some_value
@ -45,6 +58,8 @@ Specifying an output. The default is set to localhost, you'll have to specify th
config:
- urls = ["http://localhost:8086"]
- database = "telegraf"
tagpass:
- diskmetrics = ["true"]
The config will be printed line by line into the configuration, so you could also use:
@ -71,7 +86,7 @@ With the property `telegraf_plugins_default` it is set to use the default set of
- plugin: swap
- plugin: netstat
Every telegraf agent has these as an 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:
@ -84,6 +99,7 @@ The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific t
Telegraf plugin options:
* `tags` An k/v tags to apply to a specific input's measurements. Can be used on any stage for better filtering for example in outputs.
* `pass`: An array of strings that is used to filter metrics generated by the current plugin. Each string in the array is tested as a prefix against metric names and if it matches, the metric is emitted.
* `drop`: The inverse of pass, if a metric name matches, it is not emitted.
* `tagpass`: (added in Telegraf 0.1.5) tag names and arrays of strings that are used to filter metrics by the current plugin. Each string in the array is tested as an exact match against the tag name, and if it matches the metric is emitted.
@ -95,18 +111,19 @@ An example might look like this:
telegraf_plugins_default:
- plugin: disk
interval: 12
tags:
- diskmetrics = "true"
tagpass:
- fstype = [ "ext4", "xfs" ]
- path = [ "/opt", "/home" ]
Dependencies
------------
## Dependencies
No dependencies
Example Playbook
----------------
## Example Playbook
- hosts: servers
roles:
@ -117,18 +134,20 @@ The following have contributed to this Ansible role:
* aferrari-technisys
* stvnwrgs
* lhoss
* thecodeassassin
* Ismael
* romainbureau
# Molecule
## Molecule
This roles is configured to be tested with Molecule. You can find on this page some more information regarding Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
License
-------
## License
BSD
Author Information
------------------
## Author Information
Please let me know if you have issues. Pull requests are also accepted! :-)

View File

@ -1,20 +1,25 @@
---
# defaults file for ansible-telegraf
#telegraf_agent_version: 0.10.1
telegraf_agent_version: 1.0.0
telegraf_agent_version_sub_l: _beta2
telegraf_agent_version_sub_u: -beta2
telegraf_agent_version: 1.4.0
telegraf_agent_hostname: "{{ ansible_fqdn }}"
telegraf_agent_interval: 10
telegraf_agent_debug: False
telegraf_agent_round_interval: True
telegraf_agent_flush_interval: 10
telegraf_agent_flush_jitter: 0
telegraf_agent_rpm_url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_l }}.x86_64.rpm
telegraf_agent_deb_url: https://dl.influxdata.com/telegraf/releases/telegraf_{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_u }}_amd64.deb
# v0.13 settings (not sure if supported in older version):
telegraf_agent_collection_jitter: 0
telegraf_agent_metric_batch_size: 1000
telegraf_agent_metric_buffer_limit: 10000
telegraf_agent_quiet: False
telegraf_agent_tags:
# v1.1 settings:
telegraf_agent_logfile: ""
telegraf_agent_omit_hostname: False
telegraf_global_tags: []
telegraf_agent_output:
- type: influxdb

View File

@ -2,8 +2,8 @@
# handlers file for ansible-telegraf
- name: "Restart Telegraf"
action: service
name=telegraf
state=restarted
enabled=yes
sudo: yes
service:
name: telegraf
state: restarted
enabled: yes
become: yes

View File

@ -6,15 +6,15 @@ galaxy_info:
license: license BSD
min_ansible_version: 1.2
platforms:
- name: EL
versions:
- all
- name: Ubuntu
versions:
- all
- name: Debian
versions:
- all
- name: EL
versions:
- all
- name: Ubuntu
versions:
- all
- name: Debian
versions:
- all
categories:
- monitoring
- monitoring
dependencies: []

View File

@ -1,18 +0,0 @@
---
ansible:
playbook: playbook.yml
docker:
containers:
- name: telegraf-centos
ansible_groups:
- group1
image: milcom/centos7-systemd
image_version: latest
privileged: True
- name: telegraf-debian
ansible_groups:
- group2
image: maint/debian-systemd
image_version: latest
privileged: True

View File

@ -0,0 +1,7 @@
FROM {{ item.image }}
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf bash && dnf clean all; \
elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; fi

View File

@ -0,0 +1,46 @@
*******
Install
*******
This set of playbooks have specific dependencies on Ansible due to the modules
being used.
Requirements
============
* Ansible 2.2
* Docker Engine
* docker-py
Install OS dependencies on CentOS 7
.. code-block:: bash
$ sudo yum install -y epel-release
$ sudo yum install -y gcc python-pip python-devel openssl-devel
# If installing Molecule from source.
$ sudo yum install libffi-devel git
Install OS dependencies on Ubuntu 16.x
.. code-block:: bash
$ sudo apt-get update
$ sudo apt-get install -y python-pip libssl-dev docker-engine
# If installing Molecule from source.
$ sudo apt-get install -y libffi-dev git
Install OS dependencies on Mac OS
.. code-block:: bash
$ brew install python
$ brew install git
Install using pip:
.. code-block:: bash
$ sudo pip install ansible
$ sudo pip install docker-py
$ sudo pip install molecule --pre

View File

@ -0,0 +1,47 @@
---
- name: Create
hosts: localhost
connection: local
gather_facts: False
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
vars:
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}"
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
tasks:
- name: Create Dockerfiles from image names
template:
src: "{{ molecule_scenario_directory }}/Dockerfile.j2"
dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}"
with_items: "{{ molecule_yml.platforms }}"
register: platforms
- name: Discover local Docker images
docker_image_facts:
name: "molecule_local/{{ item.item.name }}"
with_items: "{{ platforms.results }}"
register: docker_images
- name: Build an Ansible compatible image
docker_image:
path: "{{ molecule_ephemeral_directory }}"
name: "molecule_local/{{ item.item.image }}"
dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
force: "{{ item.item.force | default(True) }}"
with_items: "{{ platforms.results }}"
when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0
- name: Create molecule instance(s)
docker_container:
name: "{{ item.name }}"
hostname: "{{ item.name }}"
image: "molecule_local/{{ item.image }}"
state: started
recreate: False
log_driver: syslog
command: "{{ item.command | default('sleep infinity') }}"
privileged: "{{ item.privileged | default(omit) }}"
volumes: "{{ item.volumes | default(omit) }}"
capabilities: "{{ item.capabilities | default(omit) }}"
with_items: "{{ molecule_yml.platforms }}"

View File

@ -0,0 +1,16 @@
---
- name: Destroy
hosts: localhost
connection: local
gather_facts: False
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
vars:
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
tasks:
- name: Destroy molecule instance(s)
docker_container:
name: "{{ item.name }}"
state: absent
force_kill: "{{ item.force_kill | default(True) }}"
with_items: "{{ molecule_yml.platforms }}"

View File

@ -0,0 +1,28 @@
---
dependency:
name: galaxy
driver:
name: docker
lint:
name: yamllint
options:
config-file: molecule/default/yaml-lint.yml
platforms:
- name: telegraf-centos
image: milcom/centos7-systemd
privileged: True
- name: telegraf-debian
image: maint/debian-systemd
privileged: True
provisioner:
name: ansible
lint:
name: ansible-lint
scenario:
name: default
verifier:
name: testinfra
lint:
name: flake8

View File

@ -2,14 +2,14 @@
- hosts: all
pre_tasks:
- name: "Installing which on CentOS"
action: yum
name=which
state=installed
yum:
name: which
state: installed
when: ansible_distribution == 'CentOS'
- name: "Installing wget on Debian"
action: apt
name=wget
state=installed
apt:
name: wget
state: installed
when: ansible_distribution == 'Debian'
roles:
- role: ansible-telegraf

View File

@ -1,3 +1,10 @@
import os
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
def test_telegraf_running_and_enabled(Service, SystemInfo):
telegraf = Service("telegraf")
@ -8,9 +15,9 @@ def test_telegraf_running_and_enabled(Service, SystemInfo):
def test_telegraf_dot_conf(File):
telegraf = File("/etc/telegraf/telegraf.conf")
assert telegraf.user == "root"
assert telegraf.group == "root"
assert telegraf.mode == 0o644
assert telegraf.user == "telegraf"
assert telegraf.group == "telegraf"
assert telegraf.mode == 0o640
assert telegraf.contains('[[inputs.cpu]]')

Binary file not shown.

View File

@ -0,0 +1,9 @@
---
extends: default
rules:
line-length:
max: 120
level: warning
truthy: disable

View File

@ -1,14 +1,60 @@
---
- name: "Fetch telegraf installation package | Debian"
action: get_url
url={{ telegraf_agent_deb_url }}
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
mode=0440
- name: Ensure the system can use the HTTPS transport for APT.
stat:
path: /usr/lib/apt/methods/https
register: apt_https_transport
tags:
- telegraf
- packages
- name: Install APT HTTPS transport.
apt:
name: "apt-transport-https"
state: present
when: not apt_https_transport.stat.exists
become: yes
tags:
- telegraf
- packages
- name: Download Telegraf apt key.
apt_key:
url: "https://repos.influxdata.com/influxdb.key"
state: present
become: yes
tags:
- telegraf
- packages
- name: Add Telegraf repository (using LSB).
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
filename: "telegraf"
state: present
become: yes
tags:
- telegraf
- packages
when: ansible_lsb is defined and ansible_lsb.codename is defined
- name: Add Telegraf repository.
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
filename: "telegraf"
state: present
become: yes
tags:
- telegraf
- packages
when: ansible_lsb is not defined or ansible_lsb.codename is not defined
- name: "Install telegraf package | Debian"
action: apt
deb=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
state=installed
apt:
name: telegraf
state: installed
notify: "Restart Telegraf"
sudo: yes
become: yes
tags:
- telegraf
- packages

View File

@ -1,38 +1,15 @@
---
- name: "Enable EPEL"
action: yum
name=epel-release
state=installed
- name: "Installing some dependencies"
action: yum
name={{ item }}
state=installed
with_items:
- python-pip
- python-devel
- gcc
- libffi-devel
- openssl-devel
- name: "Installing PIP dependensies"
action: pip
name={{ item }}
state=present
with_items:
- urllib3
- pyopenssl
- ndg-httpsclient
- name: "Fetch telegraf installation package | RedHat"
action: get_url
url="{{ telegraf_agent_rpm_url }}"
dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
mode=0440
- name: "Add yum repository | RedHat"
yum_repository:
name: influxdb
description: InfluxDB Repository - RHEL $releasever
baseurl: https://repos.influxdata.com/rhel/$releasever/$basearch/stable
gpgcheck: yes
gpgkey: https://repos.influxdata.com/influxdb.key
- name: "Install telegraf package | RedHat"
action: yum
name=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
state=installed
yum:
name: "telegraf-{{ telegraf_agent_version }}"
state: installed
notify: "Restart Telegraf"

View File

@ -9,40 +9,36 @@
include: "Debian.yml"
when: ansible_os_family == "Debian"
- name: "Set fact by remove the dots from version"
set_fact:
telegraf_ver: "{{ telegraf_agent_version.replace('.','') }}"
- name: "Copy the template for versions < 0.10.0"
template:
src: etc-opt-telegraf-telegraf.conf.j2
dest: /etc/opt/telegraf/telegraf.conf
owner: root
group: root
mode: 0644
when: telegraf_ver < 100
sudo: yes
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: root
group: root
mode: 0644
when: telegraf_ver >= 100
sudo: yes
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: root
group: root
mode: 644
owner: telegraf
group: telegraf
mode: 0640
with_items: "{{ telegraf_plugins_extra }}"
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
sudo: yes
become: yes
notify: "Restart Telegraf"

View File

@ -1,8 +1,8 @@
# Telegraf configuration
[tags]
{% if telegraf_agent_tags is defined and telegraf_agent_tags is iterable %}
{% for item in telegraf_agent_tags %}
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
{% for item in telegraf_global_tags %}
{{ item.tag_name }} = "{{ item.tag_value }}"
{% endfor %}
{% endif %}

View File

@ -1,6 +1,3 @@
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[[inputs.{{ item.plugin }}]]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
@ -10,6 +7,12 @@
{{ items }}
{% endfor %}
{% endif %}
{% if item.tags is defined and item.tags is iterable %}
[inputs.{{ item.plugin }}.tags]
{% for items in item.tags %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
@ -40,5 +43,3 @@
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -1,8 +1,8 @@
# Telegraf configuration
[tags]
{% if telegraf_agent_tags is defined and telegraf_agent_tags is iterable %}
{% for item in telegraf_agent_tags %}
[global_tags]
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
{% for item in telegraf_global_tags %}
{{ item.tag_name }} = "{{ item.tag_value }}"
{% endfor %}
{% endif %}
@ -11,10 +11,20 @@
[agent]
interval = "{{ telegraf_agent_interval }}s"
debug = {{ telegraf_agent_debug | lower }}
hostname = "{{ ansible_fqdn }}"
hostname = "{{ telegraf_agent_hostname }}"
round_interval = {{ telegraf_agent_round_interval | lower }}
flush_interval = "{{ telegraf_agent_flush_interval }}s"
flush_jitter = "{{ telegraf_agent_flush_jitter }}s"
{% if telegraf_agent_version|version_compare('0.13', '>=') %}
collection_jitter = "{{ telegraf_agent_collection_jitter }}s"
metric_batch_size = {{ telegraf_agent_metric_batch_size }}
metric_buffer_limit = {{ telegraf_agent_metric_buffer_limit }}
quiet = {{ telegraf_agent_quiet | lower }}
{% endif %}
{% if telegraf_agent_version|version_compare('1.1', '>=') %}
logfile = "{{ telegraf_agent_logfile }}"
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
{% endif %}
###############################################################################
# OUTPUTS #
@ -44,6 +54,12 @@
{{ items }}
{% endfor %}
{% endif %}
{% if item.tags is defined and item.tags is iterable %}
[inputs.{{ item.plugin }}.tags]
{% for items in item.tags %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}

View File

@ -1,6 +0,0 @@
localhost
[group1]
telegraf-centos
[group2]
telegraf-debian

View File

@ -1,5 +0,0 @@
---
- hosts: localhost
remote_user: root
roles:
- ansible-zabbix-agent