275 Commits

Author SHA1 Message Date
7f00767dc2 Merge pull request #131 from dj-wasabi/add-requirements-ci
Removing requirements file and use it from dj-wasabi-release repo
2020-10-16 16:05:29 +02:00
04935c3de4 Changing requirements file, removing leap 2020-10-16 15:56:44 +02:00
23f8339d99 Merge branch 'master' into add-requirements-ci 2020-10-16 15:47:41 +02:00
9b912d8f97 Added proper newline 2020-10-16 15:37:21 +02:00
07a0358410 Merge pull request #132 from NotDead/master
corrected "Example Docker configuration" to make it work by default
2020-09-07 07:49:04 +02:00
0b749fba5e corrected "Example Docker configuration" to make it work by default 2020-09-06 22:28:44 +03:00
559081b000 Removing requirements file and use it from ci-base repo 2020-09-01 16:02:05 +02:00
562a751990 Update README.md
Corrected badge
2020-08-31 18:15:59 +02:00
0ad660efb8 Merge pull request #130 from dj-wasabi/add-to-github-actions
Going to Github Actions
2020-08-01 18:50:39 +02:00
bffd2f1549 Added leap 2020-08-01 18:41:39 +02:00
998ad25059 Fixed some things to make it work: 2020-08-01 17:54:49 +02:00
a5dc1b8de5 Added leap and fixed installation of packages 2020-08-01 16:42:25 +02:00
bc3b670ca2 Corrected name and removed the scenario 2020-08-01 16:25:54 +02:00
add696bc78 Added requirements file;Removed some collection stuff 2020-08-01 16:24:03 +02:00
1112020f45 Going to Github Actions 2020-08-01 16:21:47 +02:00
6e72a8f278 Create FUNDING.yml 2020-07-31 10:08:30 +02:00
7508f3927d Merge pull request #127 from wingcon/master
made service status configurable
2020-07-10 15:32:35 +02:00
79422a70a1 Merge pull request #129 from comtravo/chore/fix-aws-tags
quote aws ec2 global tags
2020-07-10 15:32:19 +02:00
d3195b7b88 quote aws ec2 tags 2020-07-10 14:51:38 +02:00
20a7653f95 made service status configurable 2020-06-23 17:14:15 +02:00
08b1c62710 Merge pull request #126 from carlba/plugin-dependencies
Plugin dependencies are installed and configured
2020-06-14 20:57:15 +02:00
4b10834a00 Plugin dependencies are installed and configured 2020-06-13 15:50:19 +02:00
9353a544f9 Merge pull request #123 from carlba/macos-support
MacOS support
2020-06-13 11:16:07 +02:00
d750f4d259 Addressed PR Comments 2020-06-13 10:42:26 +02:00
7c32a52748 Merge pull request #124 from dwerder/fix-debian-latest-comparison
fix debian packagename on state latest
2020-06-03 09:05:25 +02:00
7a1ae28929 fix debian for package state
Closes #121
2020-06-02 15:52:07 +02:00
59b3613fe1 Deployment for MacOS 2020-05-23 19:35:20 +02:00
987aeb4406 Ensured role presented correctly on Ansible Galaxy 2020-05-23 18:32:29 +02:00
b15e674884 Merge pull request #122 from marcinwito/gpg_yum_repo_fix
gpgkey yum repo fix
2020-05-19 15:10:19 +02:00
331ffb7cb5 gpgkey yum repo fix 2020-05-19 13:40:18 +02:00
ea64e9bac4 Merge pull request #120 from rohit-gohri/patch-1
Fix RedHat task list
2020-05-08 20:48:41 +02:00
292cc2a2f4 Also add become for installation 2020-04-22 20:45:16 +05:30
685487f198 Fix omit syntax 2020-04-22 19:52:34 +05:30
7b8809c311 Add yum_repo as privileged user
For #119
2020-04-22 19:45:15 +05:30
8fdab6fdcd Merge pull request #117 from wingcon/master
added installation method manual - skip installation
2020-03-18 20:54:32 +01:00
7d5d5c1ea1 added installation method manual - skip installation 2020-03-18 17:43:33 +01:00
7d89ab270a Merge pull request #116 from rlex/pgsql_extensible_queries
Support postgresql_extensible queries
2020-03-02 07:38:00 +01:00
4956663701 add queries var to template 2020-02-27 22:09:58 +03:00
67253f5438 Merge pull request #113 from dj-wasabi/add-sub-configuration
Added extra filtering possibilities for a plugin
2020-02-04 12:54:55 +01:00
a55ef0b0c0 Added extra filtering possibilities for a plugin 2019-12-01 16:23:09 +01:00
0006d91e5e Updating documentation regarding issue 105;Added Toc;Added badges 2019-12-01 12:02:36 +01:00
10193da1cf Forgot to update changelog 2019-12-01 11:57:31 +01:00
a4c6db7be1 Merge pull request #112 from dj-wasabi/fix-travis
Minor changes to get Travis working again
2019-10-24 13:35:00 +02:00
02d6e48a39 Minor changes to get Travis working again 2019-10-24 13:11:42 +02:00
e977863e97 Merge pull request #98 from dj-wasabi/make-use-of-proxy
Added the use_proxy argument to use a proxy (or not)
2019-09-28 12:19:38 +02:00
a1505ad499 Merge pull request #109 from dj-wasabi/download-from-influxdb
Download from influxdb
2019-09-10 07:07:46 +02:00
a4cf4827cc Merge pull request #108 from matttrach/patch-1
Don't override package name unless "latest"
2019-09-10 07:06:05 +02:00
b48ff6b273 Don't override package name unless "latest" 2019-09-04 18:09:18 -05:00
2687513dc8 Merge pull request #106 from remkade/arm64_support
Adding support for arm64 systems
2019-08-23 07:04:38 +02:00
341a00f16d Adding support for arm64 systems
Adds support for `arm64` based systems (AWS `a1.*` instances).
2019-08-22 15:44:57 -07:00
4b6f773bba Merge pull request #104 from diego1q2w/patch-1
Use items() instead of iteritems()
2019-06-22 10:39:31 +02:00
ff9a820b01 Use items() instead of iteritems()
Python3 doesn't support iteritems()
2019-06-21 13:28:18 +02:00
dec1cab940 Merge pull request #103 from asfaltboy/fix/update-apt-cache
Fix: ensure apt-cache is updated before install
2019-05-28 20:40:56 +02:00
4fdafac2d0 fix: ensure apt-cache is updated before install 2019-05-28 19:54:13 +02:00
0c500cf06d Merge pull request #102 from langerma/FreeBSD
on FreeBSD the telegeraf.conf is in root of /usr/local/etc.
2019-05-01 10:22:24 +02:00
ab68b6813b on FreeBSD the telegeraf.conf is in root of /usr/local/etc. so i changed the telegraf_agent_config_path. now the telegraf rc scripts finds the right config and now error about missing directories is thrown. 2019-05-01 10:03:08 +02:00
852cfaa55e Merge pull request #101 from dj-wasabi/minor-changes-for-freebsd
Some changes for fixing FreeBSD
2019-04-27 16:22:01 +02:00
3fdba74518 Some changes for fixing FreeBSD 2019-04-27 16:09:29 +02:00
f843a3f51a Merge pull request #100 from langerma/FreeBSD
basic FreeBSD support
2019-04-27 15:41:04 +02:00
4ab32df6df basic FreeBSD support 2019-04-25 23:52:06 +02:00
ca4a07f87d As per comment in issue the environment argument should be provided 2019-04-21 19:50:14 +02:00
3cd91d0316 Added the use_proxy argument to use a proxy (or not) 2019-04-21 18:51:26 +02:00
27f2665772 Merge pull request #97 from dj-wasabi/minor-changes-for-molecule
Various small changes for molecule
2019-04-21 18:29:24 +02:00
a11694ff86 Various small changes for molecule 2019-04-21 18:17:54 +02:00
567539a637 Updated Changelog for release 0.12.0 2019-03-12 19:51:10 +01:00
69526620d9 Merge pull request #94 from ph4r5h4d/master
Add processors section in Telegraf config
2019-03-12 16:25:37 +01:00
618b8fa540 Add processors sample to README 2019-03-12 17:50:26 +03:30
f59d45a167 Add processors section in Telegraf config
telegraf_processors: 
  - processor: rename
  - processor: rename.replace  
    config:
        - tag = "message"
        - dest = "messages"
2019-03-12 14:21:45 +03:30
857a7a7938 Merge pull request #93 from dj-wasabi/download-from-influxdb
Updated to Telegraf 1.10.0;Different installation methods
2019-03-11 07:26:45 +01:00
dd28f645a9 increasing limit 2019-03-10 12:45:51 +01:00
0aba53bb17 Updated to Telegraf 1.10.0;Different installation methods 2019-03-10 12:39:14 +01:00
8a8d826de4 Merge pull request #92 from sdurrheimer/master
Updating Telegraf default to 1.9.5
2019-02-27 19:11:36 +01:00
499f217ed3 Updating Telegraf default to 1.9.5
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-02-27 15:26:58 +01:00
6f8bf1162c Merge pull request #90 from sdurrheimer/master
Updating Telegraf default to 1.9.4
2019-02-07 21:39:29 +01:00
9d24186e01 Updating Telegraf default to 1.9.4
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-02-07 11:49:40 +01:00
8b0cfeac4d Merge pull request #88 from jgeusebroek/master
Docker enhancements
2019-02-02 17:09:10 +01:00
b88d46ad1a Disable apparmor for Telegraf container (otherwise the logs are swamped with errors). Ignored on other platforms. 2019-02-02 15:52:51 +01:00
2003635e73 Docker telegraf uid and gid configurable 2019-02-02 15:51:19 +01:00
50c4043389 Merge pull request #87 from sdurrheimer/master
Updating Telegraf default to 1.9.3
2019-01-23 16:19:36 +01:00
2086b24b79 Updating Telegraf default to 1.9.3
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-01-23 15:48:28 +01:00
cf84634ce4 Added register 2019-01-23 11:40:11 +01:00
eaa7210976 Merge pull request #86 from dj-wasabi/add-register-for-trying-again
Added register for installation of packages
2019-01-23 11:25:18 +01:00
87c014da34 Set molecule to latest 2019-01-23 10:12:11 +01:00
bf008bec0c Aded a register so installation can be done again. This would also reduce the amount of E405 lint errors 2019-01-23 09:58:00 +01:00
0b285f7772 Minor documentation changes 2019-01-23 09:53:21 +01:00
2c444d97a8 Merge pull request #85 from jgeusebroek/master
Add Docker container support
2019-01-22 19:35:33 +01:00
5785e4a690 Only restart container when docker is the target platform 2019-01-22 19:04:00 +01:00
1d57bf2af8 Fix test 2019-01-22 16:40:13 +01:00
9f98ae6a76 Add Docker container support 2019-01-22 16:24:21 +01:00
35cd29007a Merge pull request #84 from jgeusebroek/master
Remove legacy options
2019-01-22 15:07:26 +01:00
8cdce07205 Update README, remove legacy options 2019-01-21 18:08:55 +01:00
f826414f5f Remove legacy configuration options 2019-01-21 17:24:01 +01:00
f6be7d6a4c Merge pull request #83 from jgeusebroek/master
Fix tagpass and tagdrop
2019-01-21 16:52:22 +01:00
5764b4bc90 item != inputs 2019-01-21 15:37:43 +01:00
07a6cb0135 Fix tagpass & tagdrop on outputs 2019-01-21 15:34:07 +01:00
140597e41d Also fix tagpass and tagdrop for older configuration format 2019-01-21 15:04:33 +01:00
d744a12f6f Fix tagpass and tagdrop syntax 2019-01-21 15:02:32 +01:00
0cb6770905 Merge pull request #81 from pad92/patch-1
[bug] debian - add cache_valid_time
2019-01-17 15:04:46 +01:00
1ccb184813 add cache_valid_time
- influx keep only last version on they repo

set cache_valid_time to 15mintutes to avoid fail install of old telegraf version
2019-01-17 10:43:19 +01:00
88ba1e218f Merge pull request #79 from anthonysr-mc/2019_01_08_amazon_linux
Add Yum repo support for Amazon Linux
2019-01-09 10:41:02 +01:00
5b31515d1b Merge pull request #80 from sdurrheimer/master
Updating Telegraf default to 1.9.2
2019-01-09 10:39:44 +01:00
38933cfc30 Updating Telegraf default to 1.9.2
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-01-09 10:06:09 +01:00
454ee8be7b Add Yum repo support for Amazon Linux 2019-01-08 13:15:47 -08:00
d49c278506 Merge pull request #78 from ikke-t/fedora-dnf
Fix to work with Fedora Linux
2018-12-17 06:45:30 +01:00
e3c553e729 Need to pull RHEL packages for Fedora
It seems Influxdb does not provide packages for Fedora. Thus the package repository URL needs to be hard coded to RHEL7 if run from Fedora. This change recognises we are on Fedora, and fakes RHEL release to be 7 so URL gets right.
2018-12-17 00:14:19 +02:00
c5e6883c1b Fedora dnf breaks with yum module.
Fedora uses dnf instead of yum. If this change is not made, playbook fails with:
fatal: [xx.yy]: FAILED! => {"changed": false, "msg": "The Python 2 yum module is needed for this module. If you require Python 3 support use the `dnf` Ansible module instead."}
2018-12-16 23:45:47 +02:00
a4d3eb237c Merge pull request #76 from jdivy/windows
Add support for extra win_perf_counters and prevent python u'' strings
2018-12-13 18:42:28 +01:00
ced8fd8ad5 Merge pull request #77 from dj-wasabi/update-telegraf
Updating to newer version of Telegraf
2018-12-13 18:42:21 +01:00
5f5d393a3f Updating to newer version of Telegraf 2018-12-13 18:26:11 +01:00
086dfab7d3 Add support for extra win_perf_counters and prevent python u'' strings 2018-12-13 10:42:39 -06:00
55e366f3b2 Updating to release 0.11.0 2018-12-11 20:36:18 +01:00
925debe915 Merge pull request #74 from dj-wasabi/move-to-json-to-to_json
Renamed the tojson to to_json
2018-12-11 20:30:04 +01:00
4c9d937b18 mounting a volume 2018-12-11 20:19:29 +01:00
aed37346fb Using self created opensuse container 2018-12-11 19:31:07 +01:00
ad7ea9b04e Minor fixes to get OpenSuse working again 2018-12-11 18:41:30 +01:00
1cffd3dbc0 Renamed the tojson to to_json 2018-12-11 15:48:08 +01:00
1d03fa09ac Merge pull request #73 from jdivy/windows
A few enhancements and fixes to windows support
2018-12-09 20:21:45 +01:00
160793b0e1 A few enhancements and fixes to windows support
- Add object to template for windows perf counters with some defaults
- Fix reference to include directory
2018-12-09 12:12:30 -06:00
8e927ff480 Merge pull request #72 from Rylon/master
Replace 'ec2_facts' with 'ec2_metadata_facts' to fix a deprecation warning
2018-12-03 16:27:23 +01:00
8c61db9d28 Replace 'ec2_facts' with 'ec2_metadata_facts' to fix a deprecation warning. 2018-12-03 14:49:13 +00:00
73bcfaddf3 Merge pull request #70 from dj-wasabi/add-default-plugin
Added default pluging if nothing is configured
2018-11-26 17:56:42 +01:00
0c5d7c2de2 Merge pull request #69 from dj-wasabi/add-other-oses
Added support for (Open)Suse
2018-11-26 17:53:27 +01:00
27033a85d2 Fix merge issue 2018-11-26 17:03:37 +01:00
aea77018a1 Merge pull request #68 from dj-wasabi/add-windows
Added Windows as OS
2018-11-26 16:56:50 +01:00
c9aac33197 Added default pluging if nothing is configured 2018-11-25 20:21:52 +01:00
23963f4292 Fix idempotence issue 2018-11-25 19:39:42 +01:00
aa78fc137e Added support for (Open)Suse 2018-11-25 18:06:45 +01:00
157f02f3f8 Updating meta file so it includes Windows 2018-11-25 14:05:37 +01:00
052142e642 Added Windows as OS 2018-11-25 11:58:28 +01:00
8df7435e51 Merge pull request #67 from dj-wasabi/want-to-use-latest
Want to use latest
2018-11-23 17:42:54 +01:00
139943a832 Allow to install the latest version 2018-11-22 20:52:17 +01:00
126dbb8b22 Fix merge issues 2018-11-22 20:12:57 +01:00
85ee6f2c94 Initial working version 2018-11-22 20:12:07 +01:00
480ac75497 Merge pull request #66 from dj-wasabi/minor-improvements
Some small improvements
2018-11-22 20:10:20 +01:00
1cb38ca480 * Moved the when statements into multiple lines;
* Updated the Molecule *.yml file to newer version;
* Added a influxdb container, so telegraf will start properly on debian/ubuntu;
2018-11-21 20:25:13 +01:00
623759a56e Fix merge issue 2018-11-21 19:27:51 +01:00
54f305b80a Updating Telegraf default to 1.9.0 2018-11-21 19:26:52 +01:00
c04c94b84a Merge pull request #65 from gaelL/master
telegraf-extra-plugin.conf.j2: fix template typo
2018-11-20 16:24:45 +01:00
18f5dd81b9 telegraf-extra-plugin.conf.j2: fix template typo
Related to commend : 3cccb6ba50 (r31366694)

Fix typo added in template `telegraf-extra-plugin.conf.j2`

Also add molecule tests to validate file generated with `telegraf_plugins_extra` option.

The added test template come from `Multiple inputs of the same type` (https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#multiple-inputs-of-the-same-type)
2018-11-20 15:59:45 +01:00
09e3ee1505 Merge pull request #61 from tszym/pin-apt-key-id
Pin apt key ID
2018-11-20 07:04:37 +01:00
386cab3328 Merge pull request #62 from mprasil/master
Wen copying/removing plugins show only plugin name
2018-11-20 07:04:22 +01:00
4d9c8b4d4d Merge pull request #64 from dj-wasabi/use-base-ci
Using base ci requirements.txt
2018-11-20 07:03:29 +01:00
7e940eb0af Remove a test 2018-11-19 20:54:48 +01:00
402d69494b Make it work to pass the ci 2018-11-19 20:39:50 +01:00
79d0cdeb9f Using base ci requirements.txt 2018-11-19 20:22:41 +01:00
3cccb6ba50 Fix meta file 2018-11-19 20:20:49 +01:00
2fc672f09c Wen copying/removing plugins show only plugin name 2018-11-10 14:39:22 +00:00
f8677ca119 Pin apt key ID
ID is specified so ansible can check if the key is already there without
downloading the file. Useful to keep the role woring when the key has
already been added on systems where DL won't work with the module
because of certificate validation (Ubuntu 14.04).
2018-09-25 15:11:57 +02:00
f74ff634a7 Merge pull request #60 from gaizeror/wipe-non-ansible-extra-plugins
Added support for plugins being managed exclusively by this playbook
2018-08-20 18:46:56 +02:00
or
1cd2798566 [STYLE] added name to the task 2018-08-20 19:13:40 +03:00
or
a49e82bf12 [FIX] added a check if dir exists, else skip 2018-08-18 12:32:42 +03:00
or
fa75297915 [FIX] mode should be 740, else telegraf user doesnt have permissions to exec service and read extra plugins 2018-08-16 10:31:59 +03:00
or
2a8184490c [FIX] state is directory, not present 2018-08-16 10:11:36 +03:00
or
f74e649085 [FIX] wrong identation 2018-08-15 23:05:55 +03:00
or
5317930b21 Added telegraf_plugins_extra_exclusive to readme 2018-08-15 22:43:36 +03:00
or
5b419ffa2d [FIX] job name 2018-08-15 22:38:39 +03:00
or
323e5f8831 Added support for plugins being managed exclusively by this playbook 2018-08-15 21:13:04 +03:00
db7b456f6d Updating meta file 2018-08-12 13:53:01 +02:00
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
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
7512939626 Updated changelog 2016-07-17 15:31:01 +02:00
e4ac118212 Removed Travis Test; Update travis build; Added Molecule tests; Updated default installation version 2016-07-17 15:15:22 +02:00
6e990c9a03 Merge pull request #5 from stvnwrgs/feature/add_extra_plugins_to_telegrafd_folder
Feature/add extra plugins to telegrafd folder
2016-06-23 18:53:54 +02:00
01d05b0a88 added template for extra plugins 2016-06-23 12:56:59 +02:00
cf37fb1d2e moved extra plugins to extra configs in telegraf.d and changed the main.yml to more yml stylish definitions 2016-04-06 16:11:48 +02:00
4bd9a85f94 Updated the urls 2016-02-06 16:06:40 +01:00
fe287f5d7c Fixes for serverspec 2016-02-06 15:58:43 +01:00
a733de5695 Updating Readme 2016-02-05 20:01:27 +01:00
f28ba37db5 Removed default entry 'telegraf_plugins_extra' 2016-02-05 19:51:31 +01:00
54f2b75af5 Added build status 2016-01-31 19:31:48 +01:00
bbcd52e32f Fixed installation for Ubuntu 2016-01-31 18:49:58 +01:00
e2205aa7d8 Fixed test and added travis. 2016-01-31 18:41:25 +01:00
66e20cd7f6 Updated to 0.10.1 default version 2016-01-31 16:10:05 +01:00
720e9c94da Updated documentation and changelog for new version 2016-01-13 15:55:16 +01:00
ec993c2066 Made it work with telegraf 0.10.0 2016-01-13 15:50:54 +01:00
39 changed files with 2077 additions and 270 deletions

4
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,4 @@
# These are supported funding model platforms
github: dj-wasabi
patreon: wernerdijkerman

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.

65
.github/workflows/telegraf.yml vendored Normal file
View File

@ -0,0 +1,65 @@
name: "ansible-telegraf"
on:
push:
paths:
- 'defaults/**'
- 'files/**'
- 'handlers/**'
- 'meta/**'
- 'molecule/**'
- 'tasks/**'
- 'templates/**'
- '.github/workflows/telegraf.yml'
pull_request:
paths:
- 'defaults/**'
- 'files/**'
- 'handlers/**'
- 'meta/**'
- 'molecule/**'
- 'tasks/**'
- 'templates/**'
- '.github/workflows/telegraf.yml'
jobs:
molecule:
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
molecule_distro:
- container: centos8
image: geerlingguy/docker-centos8-ansible:latest
- container: centos7
image: geerlingguy/docker-centos7-ansible:latest
- container: ubuntu2004
image: geerlingguy/docker-ubuntu2004-ansible:latest
- container: ubuntu1804
image: geerlingguy/docker-ubuntu1804-ansible:latest
- container: ubuntu1604
image: geerlingguy/docker-ubuntu1604-ansible:latest
- container: debian9
image: geerlingguy/docker-debian9-ansible:latest
- container: debian8
image: geerlingguy/docker-debian8-ansible:latest
steps:
- name: Check out code
uses: actions/checkout@v1
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
curl -so requirements.txt 'https://raw.githubusercontent.com/dj-wasabi/dj-wasabi-release/main/requirements.txt'
pip install -r requirements.txt
- name: Run role tests
run: >-
MY_MOLECULE_CONTAINER=${{ matrix.molecule_distro.container }}
MY_MOLECULE_IMAGE=${{ matrix.molecule_distro.image }}
MY_MOLECULE_GROUP=${{ matrix.molecule_distro.group }}
MY_MOLECULE_DOCKER_COMMAND=${{ matrix.molecule_distro.command }}
molecule test

12
.gitignore vendored
View File

@ -1,3 +1,9 @@
.kitchen/
.kitchen.local.yml
.idea/
.idea
.molecule
tests/.cache
.cache
__pycache__
*.retry
pmip
# IDE:s
.idea

View File

@ -1,22 +0,0 @@
---
driver:
name: docker
provision_command: sed -i '/tsflags=nodocs/d' /etc/yum.conf
provisioner:
name: ansible_playbook
ansible_yum_repo: "http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm"
hosts: localhost
require_chef_for_busser: false
require_ruby_for_busser: true
platforms:
- name: centos-6.7
verifier:
ruby_bindir: '/usr/bin'
suites:
- name: default
run_list:
attributes:

11
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,11 @@
---
repos:
# - repo: https://github.com/dj-wasabi/pre-commit-hooks
# rev: master
# hooks:
# - id: ansible-lint
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace

View File

@ -5,6 +5,122 @@ Below an overview of all changes in the releases.
Version (Release date)
0.12.0 (2019-03-12)
* Download from influxdb #109
* Don't override package name unless "latest" #108 (By pull request: matttrach (Thanks!))
* Adding support for arm64 systems #106 (By pull request: remkade (Thanks!))
* Use items() instead of iteritems() #104 (By pull request: diego1q2w
* Fix: ensure apt-cache is updated before install #103 (By pull request: asfaltboy (Thanks!))
* on FreeBSD the telegeraf.conf is in root of /usr/local/etc. #102 (By pull request: langerma (Thanks!))
* Some changes for fixing FreeBSD #101
* basic FreeBSD support #100 (By pull request: langerma (Thanks!))
* Added the use_proxy argument to use a proxy (or not) #98
* Various small changes for molecule #97
0.12.0 (2019-03-12)
* Add support for extra win_perf_counters and prevent python u'' strings #76 (By pull request: jdivy (Thanks!))
* Fix to work with Fedora Linux #78 (By pull request: ikke-t (Thanks!))
* Add Yum repo support for Amazon Linux #79 (By pull request: anthonysr-mc (Thanks!))
* Updating Telegraf default to 1.9.2 #80 (and some to other versions as well) (By pull request: sdurrheimer (Thanks!))
* [bug] debian - add cache_valid_time #81 (By pull request: pad92 (Thanks!))
* Fix tagpass and tagdrop #83 (By pull request: jgeusebroek (Thanks!))
* Remove legacy options #84 (By pull request: jgeusebroek (Thanks!))
* Add Docker container support #85 (By pull request: jgeusebroek (Thanks!))
* Added register for installation of packages #86
* Docker enhancements #88 (By pull request: jgeusebroek (Thanks!))
* Updated to Telegraf 1.10.0;Different installation methods #93
* Add processors section in Telegraf config #94 (By pull request: ph4r5h4d (Thanks!))
0.11.0 (2018-12-11)
* Added support for plugins being managed exclusively by this playbook #60 (By pull request: gaizeror (Thanks!))
* Pin apt key ID #61 (By pull request: tszym (Thanks!))
* Wen copying/removing plugins show only plugin name #62 (By pull request: mprasil (Thanks!))
* Using base ci requirements.txt #64
* telegraf-extra-plugin.conf.j2: fix template typo #65 (By pull request: gaelL (Thanks!))
* Some small improvements #66
* Want to use latest #67
* Added Windows as OS #68
* Added support for (Open)Suse #69
* Added default pluging if nothing is configured #70
* Replace 'ec2_facts' with 'ec2_metadata_facts' to fix a deprecation warning #72 (By pull request: Rylon (Thanks!))
* A few enhancements and fixes to windows support #73 (By pull request: jdivy (Thanks!))
* Renamed the tojson to to_json #74
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)
* 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
* Added Molecule tests and travis make use of them
* Updated default version to 1.0.0 beta2
* Feature/add extra plugins to telegrafd folder #5 (By pull request: stvnwrgs (Thanks!))
0.4.0 (2016-02-05)
* Fixed test for test-kitchen
* Added travis-ci test for testing default installation when PR is made
* Fixed Download url for Debian
* Removed default entry for telegraf_plugins_extra
0.3.0 (2016-01-13)
* Made it work with telegraf 0.10.0
* Default installation: 0.10.0
0.2.0 (2015-11-14)
* Fixed kitchen test setup
@ -23,7 +139,7 @@ Version (Release date)
* tagdrop
* interval
* Updated documentation
0.0.2 (2015-09-20)

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.

View File

@ -1,5 +0,0 @@
source "https://rubygems.org"
gem "test-kitchen"
gem "kitchen-docker"
gem "kitchen-ansible"

View File

@ -1,41 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
highline (1.7.8)
kitchen-ansible (0.0.30)
librarian-ansible
test-kitchen
kitchen-docker (2.3.0)
test-kitchen (>= 1.0.0)
librarian (0.1.2)
highline
thor (~> 0.15)
librarian-ansible (1.0.6)
faraday
librarian (~> 0.1.0)
mixlib-shellout (2.2.3)
multipart-post (2.0.0)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (2.9.2)
safe_yaml (1.0.4)
test-kitchen (1.4.2)
mixlib-shellout (>= 1.2, < 3.0)
net-scp (~> 1.1)
net-ssh (~> 2.7, < 2.10)
safe_yaml (~> 1.0)
thor (~> 0.18)
thor (0.19.1)
PLATFORMS
ruby
DEPENDENCIES
kitchen-ansible
kitchen-docker
test-kitchen
BUNDLED WITH
1.10.6

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. -->

316
README.md
View File

@ -1,5 +1,39 @@
dj-wasabi.telegraf
=========
# dj-wasabi.telegraf
- [dj-wasabi.telegraf](#dj-wasabitelegraf)
* [Build status:](#build-status-)
* [Requirements](#requirements)
+ [Supported systems](#supported-systems)
+ [InfluxDB](#influxdb)
+ [Docker](#docker)
* [Upgrade](#upgrade)
+ [0.7.0](#070)
* [Role Variables](#role-variables)
+ [Ansible role specific variables](#ansible-role-specific-variables)
- [Telegraf Package](#telegraf-package)
+ [Telegraf agent process configuration.](#telegraf-agent-process-configuration)
+ [Docker specific role variables:](#docker-specific-role-variables-)
* [Extra information](#extra-information)
+ [ansible_fqdn problematic for getting hostname](#ansible-fqdn-problematic-for-getting-hostname)
+ [Setting tags](#setting-tags)
+ [Docker specifics](#docker-specifics)
- [Docker image](#docker-image)
- [Docker mounts](#docker-mounts)
- [Example Docker configuration](#example-docker-configuration)
* [Windows specific Variables](#windows-specific-variables)
* [Extra information](#extra-information-1)
+ [telegraf_plugins_default](#telegraf-plugins-default)
+ [telegraf_plugins_extra](#telegraf-plugins-extra)
* [Dependencies](#dependencies)
* [Example Playbook](#example-playbook)
* [Contributors](#contributors)
* [Molecule](#molecule)
* [License](#license)
* [Author Information](#author-information)
## Build status:
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fdj-wasabi%2Fansible-telegraf%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/dj-wasabi/ansible-telegraf/goto?ref=master) <img src="https://img.shields.io/ansible/role/d/5173"/> <img src="https://img.shields.io/ansible/quality/5173"/>
This role will install and configure telegraf.
@ -9,24 +43,118 @@ 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 ;-) )
### Supported systems
Role Variables
--------------
This role supports the following systems:
The following parameters can be set for the Telegraf agent:
* Red Hat
* Debian
* Ubuntu
* Docker container
* (Open)Suse
* Windows (Best effort)
* FreeBSD (Best effort)
So, you'll need one of those systems.. :-)
Please sent Pull Requests or suggestions when you want to use this role for other systems.
### InfluxDB
You'll need an InfluxDB instance running somewhere on your network. Or 1 of the other output types found on https://github.com/influxdata/telegraf/#output-plugins
### Docker
Docker needs to be installed on the target host. I can recommend these roles to install Docker:
* [jgeusebroek.docker](https://galaxy.ansible.com/jgeusebroek/docker)
* [geerlingguy.docker](https://galaxy.ansible.com/geerlingguy/docker)
This is only the case when the configuration is needed for a Telegraf inside a Docker container (When `telegraf_agent_docker: True`).
## 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
### Ansible role specific variables
Specifying the version to be installed:
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.10.0`
How `Telegraf` needs to be installed. There are 4 methods in getting `Telegraf` installed on the target host:
* Via the package manager, like `yum`, `apt` or `zypper` ("repo");
* Via a download from the `https://dl.influxdata.com/` site ("online");
* Already provided and is already available on the target host, but not yet installed/configured ("offline");
* Already installed on the target host or done manually, but not yet configured ("manual");
This can be configured by setting `telegraf_agent_package_method` to one of the appropriate values ( `repo`, `online`, `offline` or `manual`).
#### Telegraf Package
These properties set in how and what package will be installed.
* `telegraf_agent_package`: The name of the Telegraf package to install. When `telegraf_agent_package_method` is set to `online` or `offline`, it needs to have the full path of the file. Example: `telegraf_agent_package: /tmp/telegraf.rpm`. Default: `telegraf_agent_package: telegraf`.
* `telegraf_agent_package_method`: The installation method to be used. Can choose between: `repo`, `offline` or `online`.
* `telegraf_agent_package_state`: If the package should be `present` or `latest`. When set to `latest`, `telegraf_agent_version` will be ignored. Default: `present`
### Telegraf agent process configuration.
* `telegraf_agent_version`: The version of Telegraf to install. Default: `0.2.0`
* `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_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_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)
### Docker specific role variables:
* `telegraf_agent_docker`: Install Telegraf as a docker container. Default: `False`
* `telegraf_agent_docker_name`: Name of the docker container. Default: `telegraf`
* `telegraf_agent_docker_network_mode`: Networking mode of the docker container. Default: `bridge`
* `telegraf_agent_docker_restart_policy`: Docker container restart policy. Default: `unless-stopped`
* `telegraf_uid_docker`: Override user id. Default: `995`
* `telegraf_gid_docker`: Override group id. Default: `998`
Full agent settings reference: [https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration](https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration).
## Extra information
### ansible_fqdn problematic for getting hostname
Extra info regarding: ansible_fqdn problematic for getting hostname #105
*Describe the bug*
In some nodes I'm getting weird hostnames, mostly localhost.localdomain. Those nodes show proper configuration in hostnamectl. I've seen you're using 'ansible_fqdn' as default.
Seems like ansible_fqdn and ansible_hostname can give different results, and sometimes even very weird results, as it sometimes makes DNS calls (which is not under my control in that cases) to infer that names.
*Fix proposal*
In my playbook I've added this parameter:
telegraf_agent_hostname: "{{ ansible_nodename }}"
### Setting tags
You can set tags for the host running telegraf:
telegraf_agent_tags:
telegraf_global_tags:
- tag_name: some_name
tag_value: some_value
@ -35,8 +163,10 @@ Specifying an output. The default is set to localhost, you'll have to specify th
telegraf_agent_output:
- type: influxdb
config:
- url = "http://localhost:8086"
- urls = ["http://localhost:8086"]
- database = "telegraf"
tagpass:
- cpu = ["cpu0"]
The config will be printed line by line into the configuration, so you could also use:
@ -45,11 +175,80 @@ The config will be printed line by line into the configuration, so you could als
and it will be printed in the configuration file.
There are two properties which are the same, but are used differently. Those are:
### Docker specifics
#### Docker image
The official [Influxdata Telegraf image](https://hub.docker.com/_/telegraf) is used. `telegraf_agent_version` will translate to the image tag.
#### Docker mounts
Please note that the Docker container bind mounts basicly your whole system (read-only) to monitor the Docker Engine Host from within the container. To be precise:
- /etc/telegraf:/etc/telegraf:ro
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run:ro
More information: [https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md](https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md).
#### Example Docker configuration
telegraf_agent_docker: True
# Force host networking mode, so Docker Engine Host traffic metrics can be gathered.
telegraf_agent_docker_network_mode: host
# Force a specific image tag.
telegraf_agent_version: 1.10.0-alpine
telegraf_plugins_default:
- plugin: cpu
config:
- percpu = true
- plugin: disk
tagpass:
- fstype = [ "ext4", "xfs" ]
tagdrop:
- path = [ "/etc", "/etc/telegraf", "/etc/hostname", "/etc/hosts", "/etc/resolv.conf" ]
- plugin: io
- plugin: mem
- plugin: system
- plugin: swap
- plugin: netstat
- plugin: processes
- plugin: docker
config:
- endpoint = "unix:///var/run/docker.sock"
- timeout = "5s"
## Windows specific Variables
**NOTE**
_Supporting Windows is an best effort (I don't have the possibility to either test/verify changes on the various amount of available Windows instances). PR's specific to Windows will almost immediately be merged, unless some one is able to provide a Windows test mechanism via Travis or other service for Pull Requests._
* `telegraf_win_install_dir`: The directory where Telegraf will be installed.
* `telegraf_win_logfile`: The location to the logfile of Telegraf.
* `telegraf_win_include`: The directory that will contain all plugin configuration.
## MacOS specific Variables
**NOTE**
_MacOS support is as the Window Support an best effort and not officially supported._
* `telegraf_mac_user`: Telegraf will run as this user (needed as running things as other users using brew is problematic)
## Extra information
There are two properties which are similar, but are used differently. Those are:
* `telegraf_plugins_default`
* `telegraf_plugins_extra`
### telegraf_plugins_default
With the property `telegraf_plugins_default` it is set to use the default set of Telegraf plugins. You could override it with more plugins, which should be enabled at default.
telegraf_plugins_default:
@ -63,65 +262,116 @@ 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.
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:
Every telegraf agent has these as a default configuration.
### telegraf_plugins_extra
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
telegraf_plugins_extra:
- plugin: mysql
mysql:
config:
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
There is an option to delete extra-plugin files in /etc/telegraf/telegraf.d if they weren't generated by this playbook with `telegraf_plugins_extra_exclusive` variable.
Telegraf plugin options:
* `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.
* `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.
* `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.
* `tagdrop`: (added in Telegraf 0.1.5) The inverse of tagpass. If a tag matches, the metric is not emitted. This is tested on metrics that have passed the tagpass test.
* `interval`: How often to gather this metric. Normal plugins use a single global interval, but if one particular plugin should be run less or more often, you can configure that here.
* `filter.name`: Like when there is an extra filter that needs to be configured, like `grok` for a `logparser` plugin.
* `filter.config`: The extra configuration for the - in the `filter.name` example - `grok` filter. (See example below)
An example might look like this:
telegraf_plugins_default:
- plugin: disk
interval: 12
tags:
- diskmetrics = "true"
tagpass:
- fstype = [ "ext4", "xfs" ]
- path = [ "/opt", "/home" ]
If you want to define processors you can simply use `telegraf_processors` variable.
An example might look like this:
```
telegraf_processors:
- processor: rename
- processor: rename.replace
config:
- tag = "level"
- dest = "LogLevel"
```
When you want to make use of the `grok` filter for the logparser:
telegraf_plugins_extra:
logparser:
plugin: logparser
config:
- files = ["/var/log/messages"]
- from_beginning = false
filter:
name: grok
config:
- patterns = ["invoked oom-killer"]
## Dependencies
Dependencies
------------
No dependencies
Example Playbook
----------------
## Example Playbook
- hosts: servers
roles:
- { role: dj-wasabi.telegraf }
##Contributors
The following have contributed to this Ansible role:
## Contributors
* aferrari-technisys
The following have contributed to this Ansible role (Provided with: `git shortlog -s -n`):
* Werner Dijkerman
* Thomas Szymanski
* Jeroen Geusebroek
* or
* Alejandro
* Troy Jendra
* Slawomir Skowron
* gaelL
* Laurent Hoss
* Ismael
* Anthony ARNAUD
* Ilkka Tengvall
* Rick Box
* Steven Wirges
* Jack Ivy
* Emerson Knapp
* zend0
* Angristan
* Miroslav Prasil
* Olivier Boukili
* Pascal
* Romain BUREAU
* Ryan Conway
* Steve Durrheimer
* TheCodeAssassin
* aroglian
Test Kitchen
------------
Thank you all!
This roles is configured to be tested with Test Kitchen. You can find on this page some more information regarding Test Kitchen: http://werner-dijkerman.nl/2015/08/20/using-test-kitchen-with-docker-and-serverspec-to-test-ansible-roles/
## Molecule
License
-------
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
BSD
Author Information
------------------
## Author Information
Please let me know if you have issues. Pull requests are also accepted! :-)

View File

@ -1,18 +1,53 @@
---
telegraf_enabled: True
# defaults file for ansible-telegraf
telegraf_agent_version: 0.2.0
telegraf_agent_version: 1.10.0
telegraf_agent_version_patch: 1
telegraf_agent_package: telegraf
telegraf_agent_package_file_deb: telegraf_{{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}_{{ telegraf_agent_package_arch }}.deb
telegraf_agent_package_file_rpm: telegraf-{{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}.{{ ansible_architecture }}.rpm
telegraf_agent_package_path: /tmp
telegraf_agent_package_method: repo
telegraf_agent_package_state: present
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_aws_tags: False
telegraf_agent_aws_tags_prefix: ""
telegraf_agent_config_path: /etc/telegraf
telegraf_agent_tags:
# Docker specific settings
telegraf_uid_docker: 998
telegraf_gid_docker: 995
telegraf_agent_docker: False
telegraf_agent_docker_name: telegraf
telegraf_agent_docker_network_mode: bridge
telegraf_agent_docker_restart_policy: unless-stopped
# 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
# v1.1 settings:
telegraf_agent_logfile: ""
telegraf_agent_omit_hostname: False
telegraf_global_tags: []
telegraf_agent_output:
- type: influxdb
config:
- url = "http://localhost:8086"
- urls = ["http://localhost:8086"]
- database = "telegraf"
- precision = "s"
# defaults - /etc/telegraf/telegraf.conf
telegraf_plugins_default:
- plugin: cpu
config:
@ -24,9 +59,30 @@ telegraf_plugins_default:
- plugin: system
- plugin: swap
- plugin: netstat
- plugin: processes
- plugin: kernel
telegraf_plugins_extra:
- plugin: procstat
specifications:
- prefix = "" # optional string to prefix measurements
- exe = "java" # the name as pgrep can find
# extra configuration - /etc/telegraf/telegraf.d/*
telegraf_plugins_extra: {}
telegraf_plugins_extra_exclusive: False
# RedHat specific settings for convenience
telegraf_redhat_releasever: "$releasever"
telegraf_yum_baseurl:
amazon: "https://repos.influxdata.com/centos/6/$basearch/stable"
centos: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
default: "https://repos.influxdata.com/{{ ansible_distribution|lower }}/{{ telegraf_redhat_releasever }}/$basearch/stable"
redhat: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
telegraf_yum_gpgkey: "https://repos.influxdata.com/influxdb.key"
telegraf_win_install_dir: 'C:\Telegraf'
telegraf_win_logfile: 'C:\\Telegraf\\telegraf.log'
telegraf_win_include: 'C:\Telegraf\telegraf_agent.d'
telegraf_win_service_args:
- -service install
- -config {{ telegraf_win_install_dir }}\telegraf\telegraf.conf
- --config-directory {{ telegraf_win_include }}
telegraf_mac_user: user
telegraf_mac_group: admin

212
files/telegraf.init Normal file
View File

@ -0,0 +1,212 @@
#! /usr/bin/env bash
# chkconfig: 2345 99 01
# description: Telegraf daemon
### BEGIN INIT INFO
# Provides: telegraf
# Required-Start: $all
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start telegraf at boot time
### END INIT INFO
# this init script supports three different variations:
# 1. New lsb that define start-stop-daemon
# 2. Old lsb that don't have start-stop-daemon but define, log, pidofproc and killproc
# 3. Centos installations without lsb-core installed
#
# In the third case we have to define our own functions which are very dumb
# and expect the args to be positioned correctly.
# Command-line options that can be set in /etc/default/telegraf. These will override
# any config file values.
TELEGRAF_OPTS=
USER=telegraf
GROUP=telegraf
if [ -r /lib/lsb/init-functions ]; then
source /lib/lsb/init-functions
fi
DEFAULT=/etc/default/telegraf
if [ -r $DEFAULT ]; then
set -o allexport
source $DEFAULT
set +o allexport
fi
if [ -z "$STDOUT" ]; then
STDOUT=/dev/null
fi
if [ ! -f "$STDOUT" ]; then
mkdir -p `dirname $STDOUT`
fi
if [ -z "$STDERR" ]; then
STDERR=/var/log/telegraf/telegraf.log
fi
if [ ! -f "$STDERR" ]; then
mkdir -p `dirname $STDERR`
fi
OPEN_FILE_LIMIT=65536
function pidofproc() {
if [ $# -ne 3 ]; then
echo "Expected three arguments, e.g. $0 -p pidfile daemon-name"
fi
if [ ! -f "$2" ]; then
return 1
fi
local pidfile=`cat $2`
if [ "x$pidfile" == "x" ]; then
return 1
fi
if ps --pid "$pidfile" | grep -q $(basename $3); then
return 0
fi
return 1
}
function killproc() {
if [ $# -ne 3 ]; then
echo "Expected three arguments, e.g. $0 -p pidfile signal"
fi
pid=`cat $2`
kill -s $3 $pid
}
function log_failure_msg() {
echo "$@" "[ FAILED ]"
}
function log_success_msg() {
echo "$@" "[ OK ]"
}
# Process name ( For display )
name=telegraf
# Daemon name, where is the actual executable
daemon=/usr/bin/telegraf
# pid file for the daemon
pidfile=/var/run/telegraf/telegraf.pid
piddir=`dirname $pidfile`
if [ ! -d "$piddir" ]; then
mkdir -p $piddir
chown $USER:$GROUP $piddir
fi
# Configuration file
config=/etc/telegraf/telegraf.conf
confdir=/etc/telegraf/telegraf.d
# If the daemon is not there, then exit.
[ -x $daemon ] || exit 5
case $1 in
start)
# Checked the PID file exists and check the actual status of process
if [ -e $pidfile ]; then
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
# If the status is SUCCESS then don't need to start again.
if [ "x$status" = "x0" ]; then
log_failure_msg "$name process is running"
exit 0 # Exit
fi
fi
# Bump the file limits, before launching the daemon. These will carry over to
# launched processes.
ulimit -n $OPEN_FILE_LIMIT
if [ $? -ne 0 ]; then
log_failure_msg "set open file limit to $OPEN_FILE_LIMIT"
fi
log_success_msg "Starting the process" "$name"
if command -v startproc >/dev/null; then
startproc -u "$USER" -g "$GROUP" -p "$pidfile" -q -- "$daemon" -pidfile "$pidfile" -config "$config" -config-directory "$confdir" $TELEGRAF_OPTS
elif which start-stop-daemon > /dev/null 2>&1; then
start-stop-daemon --chuid $USER:$GROUP --start --quiet --pidfile $pidfile --exec $daemon -- -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &
else
su -s /bin/sh -c "nohup $daemon -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &" $USER
fi
log_success_msg "$name process was started"
;;
stop)
# Stop the daemon.
if [ -e $pidfile ]; then
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
if [ "$status" = 0 ]; then
if killproc -p $pidfile SIGTERM && /bin/rm -rf $pidfile; then
log_success_msg "$name process was stopped"
else
log_failure_msg "$name failed to stop service"
fi
fi
else
log_failure_msg "$name process is not running"
fi
;;
reload)
# Reload the daemon.
if [ -e $pidfile ]; then
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
if [ "$status" = 0 ]; then
if killproc -p $pidfile SIGHUP; then
log_success_msg "$name process was reloaded"
else
log_failure_msg "$name failed to reload service"
fi
fi
else
log_failure_msg "$name process is not running"
fi
;;
restart)
# Restart the daemon.
$0 stop && sleep 2 && $0 start
;;
status)
# Check the status of the process.
if [ -e $pidfile ]; then
if pidofproc -p $pidfile $daemon > /dev/null; then
log_success_msg "$name Process is running"
exit 0
else
log_failure_msg "$name Process is not running"
exit 1
fi
else
log_failure_msg "$name Process is not running"
exit 3
fi
;;
version)
$daemon version
;;
*)
# For invalid arguments, print the usage message.
echo "Usage: $0 {start|stop|restart|status|version}"
exit 2
;;
esac

View File

@ -2,8 +2,24 @@
# 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
when: not telegraf_agent_docker
become: yes
- name: "Restart Telegraf container"
docker_container:
name: "{{ telegraf_agent_docker_name }}"
restart: True
when: telegraf_agent_docker
- name: "Restart Windows Telegraf"
win_service:
name: Telegraf
start_mode: auto
state: restarted
- name: "Restart MacOS Telegraf"
shell: brew services restart telegraf

View File

@ -2,19 +2,31 @@
galaxy_info:
author: Werner Dijkerman
description: Installing and configuring Telegraf
company:
license: license BSD
min_ansible_version: 1.2
role_name: telegraf
company: myCompany.Dotcom
license: MIT
min_ansible_version: 2.4
platforms:
- name: EL
versions:
- all
- name: Ubuntu
versions:
- all
- name: Debian
versions:
- all
categories:
- monitoring
dependencies: []
- name: EL
versions:
- all
- name: Ubuntu
versions:
- all
- name: Debian
versions:
- all
- name: opensuse
versions:
- all
- name: Windows
versions:
- all
- name: MacOS
versions:
- all
galaxy_tags:
- monitoring
dependencies: []

View File

@ -1,4 +1,4 @@
---
- hosts: localhost
---
- hosts: telegraf
roles:
- role: ansible-telegraf

View File

@ -0,0 +1,61 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: influxdb
image: influxdb:1.7-alpine
command: influxd
groups:
- tsdb
networks:
- name: telegraf
environment:
INFLUXDB_DB: telegraf
- name: telegraf-${MY_MOLECULE_CONTAINER:-centos8}
image: ${MY_MOLECULE_IMAGE:-"geerlingguy/docker-centos8-ansible"}
command: ${MY_MOLECULE_DOCKER_COMMAND:-""}
privileged: True
pre_build_image: True
networks:
- name: telegraf
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
groups:
- telegraf
provisioner:
name: ansible
lint:
name: ansible-lint
inventory:
group_vars:
debian:
telegraf_agent_package_method: online
all:
telegraf_agent_package_state: latest
telegraf_agent_output:
- type: influxdb
config:
- urls = ["http://influxdb:8086"]
- database = "telegraf"
- precision = "s"
telegraf_plugins_extra:
logparser:
plugin: logparser
config:
- files = ["/var/log/messages"]
- from_beginning = false
filter:
name: grok
config:
- patterns = ["invoked oom-killer"]
scenario:
name: default
verifier:
name: testinfra
lint:
name: flake8

View File

@ -0,0 +1,40 @@
---
- hosts: telegraf
tasks:
- name: "Installing packages on CentOS"
yum:
name: which
state: present
when:
- ansible_os_family == 'RedHat'
- name: "Apt get update"
shell: apt-get update && apt-get install -y python-apt
when:
- ansible_os_family == 'Debian'
- name: debug
debug:
var: ansible_distribution_major_version
- name: "Installing packages on Debian"
apt:
name:
- wget
- python-apt
- "{{ 'gnupg-agent' if ansible_distribution_major_version in ['8', '18', '16'] else 'gpg-agent' }}"
update_cache: True
state: present
when:
- ansible_os_family == 'Debian'
- name: "Installing packages on Suse"
zypper:
name:
- sysvinit-tools
- insserv-compat
- aaa_base
state: present
when:
- ansible_os_family == 'Suse'

View File

@ -0,0 +1,48 @@
import os
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('telegraf')
def test_telegraf_running_and_enabled(host):
telegraf = host.service("telegraf")
if host.system_info.distribution not in ['opensuse-leap']:
assert telegraf.is_enabled
assert telegraf.is_running
def test_telegraf_dot_conf(host):
telegraf = host.file("/etc/telegraf/telegraf.conf")
assert telegraf.user == "telegraf"
assert telegraf.group == "telegraf"
assert telegraf.mode == 0o640
assert telegraf.contains('interval = "10s"')
assert telegraf.contains('[[inputs.cpu]]')
assert telegraf.contains('percpu = true')
assert telegraf.contains('[[outputs.influxdb]]')
assert telegraf.contains('["http://influxdb:8086"]')
assert telegraf.contains('[[inputs.net]]')
def test_telegraf_dot_d_dir(host):
telegraf = host.file("/etc/telegraf/telegraf.d")
assert telegraf.user == "root"
assert telegraf.group == "root"
assert telegraf.mode == 0o755
assert telegraf.is_directory
def test_telegraf_dot_d(host):
telegraf = host.file("/etc/telegraf/telegraf.d/logparser.conf")
assert telegraf.user == "telegraf"
assert telegraf.group == "telegraf"
assert telegraf.mode == 0o640
assert telegraf.contains('[[inputs.logparser]]')
assert telegraf.contains('from_beginning = false')
def test_telegraf_package(host):
telegraf = host.package('telegraf')
assert telegraf.is_installed

View File

@ -1,14 +1,104 @@
---
- name: "Fetch telegraf installation package | Debian"
action: get_url
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}_amd64.deb
dest=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb
mode=0440
- name: "Debian | Set name if state != latest"
set_fact:
telegraf_agent_package: telegraf={{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}
when:
- telegraf_agent_package_state != "latest"
- name: "Install telegraf package | Debian"
action: apt
deb=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb
state=installed
- name: "Debian | Set telegraf_agent_package_arch"
set_fact:
telegraf_agent_package_arch: "{{ ansible_architecture }}"
- name: "Debian | Set telegraf_agent_package_arch specific for x86_64"
set_fact:
telegraf_agent_package_arch: "amd64"
when:
- ansible_architecture == "x86_64"
- name: "Debian | Set telegraf_agent_package_arch specific for arm64"
set_fact:
telegraf_agent_package_arch: "armhf"
when:
- ansible_architecture == "arm64"
- name: "Debian | Ensure the system can use the HTTPS transport for APT"
stat:
path: /usr/lib/apt/methods/https
register: apt_https_transport
- name: "Debian | Install APT HTTPS transport"
apt:
name: "apt-transport-https"
state: present
register: are_telegraf_dependencies_packages_installed
until: are_telegraf_dependencies_packages_installed is succeeded
when:
- not apt_https_transport.stat.exists
become: yes
- name: "Debian | Download Telegraf apt key"
apt_key:
url: "https://repos.influxdata.com/influxdb.key"
id: 2582E0C5
state: present
register: are_telegraf_dependencies_keys_installed
until: are_telegraf_dependencies_keys_installed is succeeded
become: yes
when:
- telegraf_agent_package_method == "repo"
- name: "Debian | 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
when:
- telegraf_agent_package_method == "repo"
- ansible_lsb is defined
- ansible_lsb.codename is defined
- name: "Debian | Add Telegraf repository"
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
filename: "telegraf"
state: present
become: yes
when:
- telegraf_agent_package_method == "repo"
- ansible_lsb is not defined or ansible_lsb.codename is not defined
- name: "Debian | Download Telegraf package (online)"
get_url:
url: https://dl.influxdata.com/telegraf/releases/{{ telegraf_agent_package_file_deb }}
dest: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}"
use_proxy: "{{ true if http_proxy is defined and http_proxy else false }}"
environment:
http_proxy: "{{ http_proxy | default(None) | default(omit) }}"
https_proxy: "{{ https_proxy | default(None) | default(omit) }}"
when:
- telegraf_agent_package_method == "online"
- name: "Debian | Install Telegraf package"
apt:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
update_cache: yes
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
sudo: yes
become: yes
when:
- telegraf_agent_package_method == "repo"
- name: "Debian | Install Telegraf package"
apt:
deb: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}"
state: "present"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
become: yes
when:
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"

24
tasks/FreeBSD.yml Normal file
View File

@ -0,0 +1,24 @@
---
# description: FreeBSD specific installation
- name: "FreeBSD | set package name"
set_fact:
telegraf_agent_package: telegraf
- name: "FreeBSD | Install Telegraf package"
pkgng:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
- name: "FreeBSD | add telegraf_flags for extra plugins"
shell: sysrc telegraf_flags="-quiet -config-directory=/usr/local/etc/telegraf.d"
tags:
- skip_ansible_lint
- name: "FreeBSD | add telegraf to init"
shell: sysrc telegraf_enable="YES"
tags:
- skip_ansible_lint

14
tasks/MacOS.yml Normal file
View File

@ -0,0 +1,14 @@
---
# description: MacOS specific installation
- name: "MacOS | set package name"
set_fact:
telegraf_agent_package: telegraf
- name: "MacOS | Install Telegraf package"
package:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"

View File

@ -1,14 +1,45 @@
---
# description: RedHat specific installation
- name: "Fetch telegraf installation package | RedHat"
action: get_url
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}-1.x86_64.rpm
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm
mode=0440
- name: "RedHat | Set name if state == latest"
set_fact:
telegraf_agent_package: telegraf-{{ telegraf_agent_version }}
when:
- telegraf_agent_package_state != "latest"
- name: "Install telegraf package | RedHat"
action: yum
name=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm
state=installed
- name: Use RHEL 7 packages for Fedora
set_fact:
telegraf_redhat_releasever: 7
when:
- ansible_distribution == "Fedora"
- name: "RedHat | Add yum repository"
yum_repository:
name: influxdb
description: InfluxDB Repository - RHEL $releasever
baseurl: "{{ telegraf_yum_baseurl[ansible_distribution|lower] | default(telegraf_yum_baseurl['default']) }}"
gpgcheck: "{{ telegraf_yum_gpgcheck | default('true') }}"
gpgkey: "{{ telegraf_yum_gpgkey }}"
become: yes
when:
- telegraf_agent_package_method == "repo"
- name: "RedHat | Download Telegraf package (online)"
get_url:
url: https://dl.influxdata.com/telegraf/releases/{{ telegraf_agent_package_file_rpm }}
dest: "{{ telegraf_agent_package }}"
use_proxy: "{{ true if http_proxy is defined and http_proxy else false }}"
environment:
http_proxy: "{{ http_proxy | default(None) | default(omit) }}"
https_proxy: "{{ https_proxy | default(None) | default(omit) }}"
when:
- telegraf_agent_package_method == "online"
- name: "RedHat | Install Telegraf package"
package:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
become: yes
notify: "Restart Telegraf"
sudo: yes

56
tasks/Suse.yml Normal file
View File

@ -0,0 +1,56 @@
---
- name: "Suse | Adding Telegraf group"
group:
name: telegraf
state: present
- name: "Suse | Adding Telegraf user"
user:
name: telegraf
group: telegraf
state: present
become: yes
- name: "Suse | Install repo dependencies"
zypper:
name: ["python-libxml2", "python-xml"]
update_cache: True
state: present
register: are_telegraf_dependencies_packages_installed
until: are_telegraf_dependencies_packages_installed is succeeded
become: yes
- name: "Suse | Install basic repo file"
zypper_repository:
repo: "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/"
name: The Go Programming Language (openSUSE_Factory)
state: present
runrefresh: True
auto_import_keys: True
become: yes
- name: "Suse | Install Telegraf"
zypper:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
become: yes
- name: "Suse | Create directories for telegraf"
file:
path: "{{ item.path }}"
owner: "{{ item.owner }}"
state: directory
with_items:
- path: /etc/telegraf/telegraf.d/
owner: root
- path: /var/log/telegraf
owner: telegraf
- name: "Suse | Install init file"
copy:
src: telegraf.init
dest: /etc/init.d/telegraf
mode: 0755

188
tasks/configure_linux.yml Normal file
View File

@ -0,0 +1,188 @@
---
# 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: yes
when:
- telegraf_agent_version is version_compare('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: yes
when:
- telegraf_agent_version is version_compare('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: yes
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: yes
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: yes
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: yes
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: yes
when: not telegraf_agent_docker
- 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
shell: 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 }}"
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"

128
tasks/configure_macos.yml Normal file
View File

@ -0,0 +1,128 @@
---
# 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 in ["FreeBSD", "Darwin"]
- 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_mac_user }}"
group: "{{ telegraf_mac_group }}"
mode: 0640
become: yes
when:
- telegraf_agent_version is version_compare('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_mac_user }}"
group: "{{ telegraf_mac_group }}"
mode: 0640
become: yes
when:
- telegraf_agent_version is version_compare('0.10.0', '>=')
notify:
- Restart MacOS 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: yes
notify:
- Restart MacOS Telegraf
- Restart Telegraf container
- name: "Create telegraf extra plugin path"
file:
state: directory
path: "{{ telegraf_agent_config_path }}/telegraf.d/"
owner: "{{ telegraf_mac_user }}"
group: "{{ telegraf_mac_group }}"
mode: 0755
when:
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
notify:
- Restart MacOS 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_mac_user }}"
group: "{{ telegraf_mac_group }}"
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: yes
notify:
- Restart MacOS 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: yes
notify:
- Restart MacOS Telegraf
- Restart Telegraf container
- name: "Force restart service after reread config"
meta: flush_handlers
- name: "Start Telegraf (If it wasn't running)"
shell: brew services start telegraf
register: brew_services_start_telegraf
changed_when: '"Successfully started `telegraf`" in brew_services_start_telegraf.stdout'
when: not telegraf_agent_docker

View File

@ -0,0 +1,78 @@
---
- name: "Windows | Create directory structure"
win_file:
path: "{{ item }}"
state: directory
with_items:
- "{{ telegraf_win_install_dir }}"
- "{{ telegraf_win_include }}"
- name: "Windows | Check if file is already downloaded"
win_stat:
path: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
register: file_info
- name: "Windows | Download Telegraf Agent Zip file"
win_get_url:
url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}_windows_amd64.zip
dest: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
when:
- not file_info.stat.exists
- name: "Windows | Unzip file"
win_unzip:
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
dest: "{{ telegraf_win_install_dir }}"
creates: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe'
- name: "Windows | Configure Telegraf"
win_template:
src: telegraf.conf.j2
dest: '{{ telegraf_win_install_dir }}\telegraf\telegraf.conf'
notify: "Restart Windows Telegraf"
- name: "Windows | Copy telegraf extra plugins"
win_template:
src: "telegraf-extra-plugin.conf.j2"
dest: '{{ telegraf_win_include }}\{{ item.key }}.conf'
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'
notify: "Restart Windows Telegraf"
- name: "Windows | Remove telegraf extra plugins"
win_file:
path: '{{ telegraf_win_include }}\{{ 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'
notify: "Restart Windows Telegraf"
- name: "Windows | Register Service"
win_command: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe {{ telegraf_win_service_args | join(" ") }}'
register: telegraf_windows_install
args:
creates: '{{ telegraf_win_install_dir }}\.installed'
- name: "Windows | Create done file so it won't register itself again"
win_file:
path: '{{ telegraf_win_install_dir }}\.installed'
state: touch
when:
- telegraf_windows_install is changed
- name: "Windows | Set service startup mode to auto and ensure it is started"
win_service:
name: Telegraf
start_mode: auto
state: started

59
tasks/docker.yml Normal file
View File

@ -0,0 +1,59 @@
---
- name: Adding Telegraf group
group:
name: telegraf
state: present
gid: "{{ telegraf_gid_docker }}"
- name: Adding Telegraf user
user:
name: telegraf
group: telegraf
state: present
create_home: False
home: /etc/telegraf
uid: "{{ telegraf_uid_docker }}"
system: True
become: yes
- name: Create /etc/telegraf (home) directory
file:
path: /etc/telegraf
owner: telegraf
group: telegraf
mode: 0750
state: directory
become: yes
- name: Create /etc/telegraf.d directory
file:
path: /etc/telegraf/telegraf.d
owner: telegraf
group: telegraf
mode: 0750
state: directory
become: yes
- name: Ensure Telegraf Docker container is running
docker_container:
name: "{{ telegraf_agent_docker_name }}"
image: "telegraf:{{ telegraf_agent_version }}"
state: started
restart_policy: "{{ telegraf_agent_docker_restart_policy }}"
command: -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
network_mode: "{{ telegraf_agent_docker_network_mode }}"
security_opts:
- apparmor:unconfined
volumes:
- /etc/telegraf:/etc/telegraf:ro
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run:ro
env:
HOST_MOUNT_PREFIX: /hostfs
HOST_ETC: /hostfs/etc
HOST_PROC: /hostfs/proc
HOST_SYS: /hostfs/sys

View File

@ -1,20 +1,47 @@
---
# tasks file for ansible-telegraf
- name: "Install the correct repository"
include: "RedHat.yml"
when: ansible_os_family == "RedHat"
- name: "Install on RedHat"
include_tasks: "RedHat.yml"
when:
- ansible_os_family == "RedHat" and not telegraf_agent_docker
- name: "Install the correct repository"
include: "Debian.yml"
when: ansible_os_family == "Debian"
- name: "Install on Debian"
include_tasks: "Debian.yml"
when:
- ansible_os_family == "Debian" and not telegraf_agent_docker
tags:
- telegraf
- packages
- name: "Copy the template"
action: template
src=etc-opt-telegraf-telegraf.conf.j2
dest=/etc/opt/telegraf/telegraf.conf
owner=root
group=root
mode=644
sudo: yes
notify: "Restart Telegraf"
- name: "Install on Suse"
include_tasks: "Suse.yml"
when: ansible_os_family == "Suse" and not telegraf_agent_docker
- name: "Install on FreeBSD"
include_tasks: "FreeBSD.yml"
when:
- ansible_os_family == "FreeBSD" and not telegraf_agent_docker
- name: "Install on MacOS"
include_tasks: "MacOS.yml"
when:
- ansible_os_family == "Darwin" and not telegraf_agent_docker
- include_tasks: "docker.yml"
when: telegraf_agent_docker
- name: "Configure Telegraf"
include_tasks: "configure_linux.yml"
when:
- ansible_os_family not in ['Windows', 'Darwin']
- name: "Install / Configure telegraf on Windows"
include_tasks: "configure_windows.yml"
when:
- ansible_os_family == "Windows" and not telegraf_agent_docker
- name: "Install / Configure telegraf on MacOS"
include_tasks: "configure_macos.yml"
when:
- ansible_os_family == "Darwin" and not telegraf_agent_docker

View File

@ -1,12 +1,18 @@
# Telegraf configuration
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
[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 %}
{% 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
[agent]
interval = "{{ telegraf_agent_interval }}s"
@ -21,6 +27,18 @@
{% for items in item.config %}
{{ items }}
{% endfor %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[outputs.{{ item.type }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[outputs.{{ item.type }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
@ -37,81 +55,17 @@
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
[inputs.{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
[inputs.{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[{{ item.plugin }}]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -0,0 +1,57 @@
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
[[inputs.{{ item.value.plugin | default(item.key) }}]]
{% if item.value.interval is defined %}
interval = "{{ item.value.interval }}s"
{% endif %}
{% if item.value.config is defined and item.value.config is iterable %}
{% for items in item.value.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.tags is defined and item.value.tags is iterable %}
[inputs.{{ item.value.plugin | default(item.key) }}.tags]
{% for items in item.value.tags %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.tagpass is defined and item.value.tagpass is iterable %}
[inputs.{{ item.value.plugin | default(item.key) }}.tagpass]
{% for items in item.value.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.tagdrop is defined and item.value.tagdrop is iterable %}
[inputs.{{ item.value.plugin | default(item.key) }}.tagdrop]
{% for items in item.value.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.filter is defined %}
{% if item.value.filter.name is defined %}
[inputs.{{ item.value.plugin | default(item.key) }}.{{ item.value.filter.name | default("grok") }}]
{% if item.value.filter.config is defined and item.value.filter.config is iterable %}
{% for items in item.value.filter.config %}
{{ items }}
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
{% if item.value.objects is defined and item.value.objects is iterable %}
{% for object in item.value.objects %}
[[inputs.{{ item.value.plugin | default(item.key) }}.object]]
ObjectName = {{ object.name | to_json }}
Instances = {{ object.instances | default(["*"]) | to_json }}
Counters = {{ object.counters | default(["*"]) | to_json }}
Measurement = {{ object.measurement | default("win_perf_counters") | to_json }}
IncludeTotal = {{ object.total | default(false) | string | lower }}
{% endfor %}
{% endif %}
{% if item.value.queries is defined and item.value.queries is iterable %}
{% for query in item.value.queries %}
[[inputs.{{ item.value.plugin | default(item.key) }}.query]]
{% for item in item.value.queries[query] %}
{{ item }}
{% endfor %}
{% endfor %}
{% endif %}

130
templates/telegraf.conf.j2 Normal file
View File

@ -0,0 +1,130 @@
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
[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 %}
{% if telegraf_agent_aws_tags == true and ec2_tags is defined and ec2_tags != None %}
{% for key, value in ec2_tags.tags.items()%}
"{{telegraf_agent_aws_tags_prefix}}{{ key }}" = "{{ value }}"
{% endfor %}
{% endif %}
# Configuration for telegraf agent
[agent]
interval = "{{ telegraf_agent_interval }}s"
debug = {{ telegraf_agent_debug | lower }}
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 is 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 is version_compare('1.1', '>=') %}
{% if ansible_os_family == "Windows" %}
logfile = "{{ telegraf_win_logfile }}"
{% else %}
logfile = "{{ telegraf_agent_logfile }}"
{% endif %}
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
{% endif %}
###############################################################################
# OUTPUTS #
###############################################################################
{% if telegraf_agent_output is defined and telegraf_agent_output is iterable %}
{% for item in telegraf_agent_output %}
[[outputs.{{ item.type }}]]
{% for items in item.config %}
{{ items }}
{% endfor %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[outputs.{{ item.type }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[outputs.{{ item.type }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
###############################################################################
# INPUTS #
###############################################################################
{% if telegraf_plugins_default is defined and telegraf_plugins_default is iterable %}
{% for item in telegraf_plugins_default %}
[[inputs.{{ item.plugin }}]]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ 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 %}
[inputs.{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[inputs.{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.objects is defined and item.objects is iterable %}
{% for object in item.objects %}
[[inputs.{{ item.plugin }}.object]]
ObjectName = {{ object.name | to_json }}
Instances = {{ object.instances | default(["*"]) | to_json }}
Counters = {{ object.counters | default(["*"]) | to_json }}
Measurement = {{ object.measurement | default("win_perf_counters") | to_json }}
IncludeTotal = {{ object.total | default(false) | string | lower }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% if telegraf_plugins_default is defined and telegraf_plugins_default|length == 0 %}
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra.keys() | length == 0 %}
# No plugins configured, added a mem plugin so telegraf doesn't stop working.
[[inputs.mem]]
{% endif %}
{% endif %}
###############################################################################
# PROCESSORS #
###############################################################################
{% if telegraf_processors is defined and telegraf_processors is iterable %}
{% for item in telegraf_processors %}
[[processors.{{ item.processor }}]]
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -1,27 +0,0 @@
require 'serverspec'
require 'spec_helper'
describe 'Telegraf Packages' do
describe package('telegraf') do
it { should be_installed }
end
end
describe 'Telegraf Services' do
describe service('telegraf') do
it { should be_enabled }
end
end
describe 'Telegraf Configuration' do
describe file('/etc/opt/telegraf/telegraf.conf') do
it { should be_file}
it { should be_owned_by 'root'}
it { should be_grouped_into 'root'}
it { should contain "[cpu]" }
it { should contain "[mem]" }
it { should contain "url = \"http://localhost:8086\"" }
end
end

View File

@ -1,2 +0,0 @@
require 'serverspec'
set :backend, :exec

View File

@ -1,2 +0,0 @@
---
# vars file for .