mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
98 Commits
Author | SHA1 | Date | |
---|---|---|---|
bd62e6316e | |||
b86a9f29a3 | |||
b2a1652c47 | |||
2bee19f8a1 | |||
87e6e95c72 | |||
4fb8da24af | |||
b4317d8e5d | |||
7766329cb8 | |||
1e57d51575 | |||
163284ab36 | |||
a08dee2562 | |||
9e0be2c3d2 | |||
82ca1ef61d | |||
4f8fa12fad | |||
1100ceddd6 | |||
40b25772f3 | |||
71f436f8ca | |||
c416bb20a7 | |||
ae8c1cbe7f | |||
c6848506cf | |||
0b82b8420e | |||
f7e7045e9f | |||
35b594cf36 | |||
128faa55b6 | |||
641981bfb3 | |||
e29aa87c04 | |||
227c6f9418 | |||
cb215db02c | |||
0597f0115c | |||
62a6158281 | |||
fe9f970bde | |||
2696c2aca5 | |||
f3f67f4f7a | |||
8b522beab0 | |||
4291b00a6e | |||
7694682e56 | |||
8fd9c2c9c9 | |||
4c0d09d11e | |||
9aad1a8d39 | |||
2c54dea8d2 | |||
f962f4ca82 | |||
194d3d6e92 | |||
5036595b79 | |||
3bd9681567 | |||
536dce400b | |||
0405d3d993 | |||
1533214071 | |||
26b473b0fb | |||
d486975c81 | |||
3201ec329c | |||
b95a67954f | |||
ad1a4430c6 | |||
ec63b2aa24 | |||
8dbb365ed0 | |||
f23fc6ea23 | |||
51c82e1c85 | |||
a3ca2db212 | |||
9c9dc33ac3 | |||
95d5161d33 | |||
86fabca61b | |||
b0dfe773a7 | |||
3826a37496 | |||
4d197aa8ea | |||
40230aa198 | |||
7512939626 | |||
e4ac118212 | |||
6e990c9a03 | |||
01d05b0a88 | |||
cf37fb1d2e | |||
4bd9a85f94 | |||
fe287f5d7c | |||
a733de5695 | |||
f28ba37db5 | |||
54f2b75af5 | |||
bbcd52e32f | |||
e2205aa7d8 | |||
66e20cd7f6 | |||
720e9c94da | |||
ec993c2066 | |||
fabb511365 | |||
6f7d970595 | |||
18cfcd8cff | |||
5692928cb3 | |||
aa391d97f9 | |||
64f62c8dc5 | |||
8a869e7a0e | |||
ef8ecffbdf | |||
37f3a8e208 | |||
a3951d52a8 | |||
3f7f83cfc4 | |||
677950be23 | |||
a41e4f9c84 | |||
890e48c82d | |||
ac27a7a9eb | |||
7cc9e52d85 | |||
43e5e633fd | |||
2239f59c85 | |||
4196a74c22 |
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,3 +1,7 @@
|
|||||||
.kitchen/
|
.idea
|
||||||
.kitchen.local.yml
|
.molecule
|
||||||
.idea/
|
tests/.cache
|
||||||
|
.cache
|
||||||
|
__pycache__
|
||||||
|
*.retry
|
||||||
|
pmip
|
||||||
|
19
.kitchen.yml
19
.kitchen.yml
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
driver:
|
|
||||||
name: docker
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
name: ansible_playbook
|
|
||||||
ansible_yum_repo: "http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm"
|
|
||||||
hosts: localhost
|
|
||||||
|
|
||||||
platforms:
|
|
||||||
- name: centos-6.6
|
|
||||||
|
|
||||||
verifier:
|
|
||||||
ruby_bindir: '/usr/bin'
|
|
||||||
|
|
||||||
suites:
|
|
||||||
- name: default
|
|
||||||
run_list:
|
|
||||||
attributes:
|
|
15
.travis.yml
Normal file
15
.travis.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
sudo: required
|
||||||
|
language: python
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
install:
|
||||||
|
- pip install molecule ansible docker
|
||||||
|
|
||||||
|
script:
|
||||||
|
- molecule --version
|
||||||
|
- ansible --version
|
||||||
|
- molecule test
|
||||||
|
notifications:
|
||||||
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
89
CHANGELOG.md
Normal file
89
CHANGELOG.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
dj-wasabi.telegraf
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Below an overview of all changes in the releases.
|
||||||
|
|
||||||
|
Version (Release date)
|
||||||
|
|
||||||
|
0.8.0 (2017-10-30)
|
||||||
|
|
||||||
|
* Updating to Molecule V2
|
||||||
|
* Test if LSB codename exists before using it #35 (By pull request: tszym (Thanks!))
|
||||||
|
* Remove useless packages on RedHat. fix #28 #36 (By pull request: tszym (Thanks!))
|
||||||
|
* Fix extra plugins by file / Change apt source filename / Change tags by global_tags #37 (By pull request: aarnaud (Thanks!))
|
||||||
|
* Use telegra_global_tags for oldest telegraf versions #38 (By pull request: tszym (Thanks!))
|
||||||
|
|
||||||
|
0.7.0 (2017-02-23)
|
||||||
|
|
||||||
|
* Replace action by modules #26 (By pull request: tszym (Thanks!))
|
||||||
|
* Use yum repository to install telegraf on RedHat #25 (By pull request: tszym (Thanks!))
|
||||||
|
* Remove for-loop in extra-plugin template #24 (By pull request: emersondispatch (Thanks!))
|
||||||
|
* Update Debian.yml #23 (By pull request: zend0 (Thanks!))
|
||||||
|
* extra plugins tags #21 (By pull request: oboukili (Thanks!))
|
||||||
|
* Input tags support #20 (By pull request: szibis (Thanks!))
|
||||||
|
* Fix telegraf confguration permissions #19 (By pull request: szibis (Thanks!))
|
||||||
|
|
||||||
|
0.6.0 (2017-01-02)
|
||||||
|
|
||||||
|
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #9 (By pull request: Ismael (Thanks!))
|
||||||
|
* Do "become" for the steps that require root access on Debian #10 (By pull request: Ismael (Thanks!))
|
||||||
|
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #11 (By pull request: Ismael (Thanks!))
|
||||||
|
* Removed imports #12
|
||||||
|
* Fixing molecule #15
|
||||||
|
* set telegraf hostname in defaults. #13 (By pull request: romainbureau (Thanks!))
|
||||||
|
* use version_compare filter … #14 (By pull request: lhoss (Thanks!))
|
||||||
|
* support missing agent settings upto telegraf v1.1 #16 (By pull request: lhoss (Thanks!))
|
||||||
|
* update the README with the latest v0.13 - v1.1 agent settings #17 (By pull request: lhoss (Thanks!))
|
||||||
|
|
||||||
|
0.5.1 (2016-08-24)
|
||||||
|
|
||||||
|
* fixed issue with ansible not getting the package #6 (By pull request: thecodeassassin (Thanks!))
|
||||||
|
|
||||||
|
0.5.0 (2016-07-17)
|
||||||
|
|
||||||
|
* Removed Test Kitchen tests
|
||||||
|
* 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
|
||||||
|
* Adding "net" to the telegraf_plugins_default property
|
||||||
|
* Update etc-opt-telegraf-telegraf.conf.j2 #2 (By pull request: aferrari-technisys (Thanks!))
|
||||||
|
* Improvement and upgrade for v0.2.0 of telegraf #1 (By pull request: aferrari-technisys (Thanks!))
|
||||||
|
|
||||||
|
0.1.0 (2015-09-23)
|
||||||
|
|
||||||
|
* Updated `telegraf_agent_version` to 0.1.9
|
||||||
|
* Added restart when package is changed (When updated for example)
|
||||||
|
* Added several plugin options:
|
||||||
|
* pass
|
||||||
|
* drop
|
||||||
|
* tagpass
|
||||||
|
* tagdrop
|
||||||
|
* interval
|
||||||
|
* Updated documentation
|
||||||
|
|
||||||
|
|
||||||
|
0.0.2 (2015-09-20)
|
||||||
|
|
||||||
|
* Updated README dus to missing colon
|
||||||
|
* Forgot to update the meta file
|
||||||
|
* Added Changelog file
|
||||||
|
|
||||||
|
0.0.1 (2015-09-20)
|
||||||
|
|
||||||
|
* Initial release
|
5
Gemfile
5
Gemfile
@ -1,5 +0,0 @@
|
|||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem "test-kitchen"
|
|
||||||
gem "kitchen-docker"
|
|
||||||
gem "kitchen-ansible"
|
|
101
README.md
101
README.md
@ -1,5 +1,8 @@
|
|||||||
dj-wasabi.telegraf
|
# dj-wasabi.telegraf
|
||||||
=========
|
|
||||||
|
## Build status:
|
||||||
|
|
||||||
|
[](https://travis-ci.org/dj-wasabi/ansible-telegraf)
|
||||||
|
|
||||||
This role will install and configure telegraf.
|
This role will install and configure telegraf.
|
||||||
|
|
||||||
@ -9,25 +12,42 @@ Design goals are to have a minimal memory footprint with a plugin system so that
|
|||||||
|
|
||||||
(https://github.com/influxdb/telegraf)
|
(https://github.com/influxdb/telegraf)
|
||||||
|
|
||||||
Requirements
|
## Requirements
|
||||||
------------
|
|
||||||
|
|
||||||
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
|
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
|
||||||
|
|
||||||
Role Variables
|
## Upgrade
|
||||||
--------------
|
### 0.7.0
|
||||||
|
|
||||||
|
There was an issue:
|
||||||
|
|
||||||
|
If I configure a telegraf_plugins_extra, run ansible, delete the plugin and run ansible again, the plugin stays on the machine.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Role Variables
|
||||||
|
|
||||||
The following parameters can be set for the Telegraf agent:
|
The following parameters can be set for the Telegraf agent:
|
||||||
|
|
||||||
* `telegraf_agent_version`: The version of Telegraf to install. Default: `0.1.8`
|
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.0.0`
|
||||||
* `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10`
|
* `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_utc`: Option for outputting data in UTC. Default: `True`
|
* `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True
|
||||||
* `telegraf_agent_precision`: Precision to write data at. Valid values for Precision are n, u, ms, s, m, and h. Default: `s`
|
* `telegraf_agent_flush_interval`: Default data flushing interval for all outputs. Default: 10
|
||||||
|
* `telegraf_agent_flush_jitter`: Jitter the flush interval by a random amount. Default: 0
|
||||||
|
* `telegraf_agent_collection_jitter`: Jitter the collection by a random amount. Default: 0 (since v0.13)
|
||||||
|
* `telegraf_agent_metric_batch_size`: The agent metric batch size. Default: 1000 (since v0.13)
|
||||||
|
* `telegraf_agent_metric_buffer_limit`: The agent metric buffer limit. Default: 10000 (since v0.13)
|
||||||
|
* `telegraf_agent_quiet`: Run Telegraf in quiet mode (error messages only). Default: `False` (since v0.13)
|
||||||
|
* `telegraf_agent_logfile`: The agent logfile name. Default: '' (means to log to stdout) (since v1.1)
|
||||||
|
* `telegraf_agent_omit_hostname`: Do no set the "host" tag in the agent. Default: `False` (since v1.1)
|
||||||
|
|
||||||
|
Full agent settings reference: https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration
|
||||||
|
|
||||||
You can set tags for the host running telegraf:
|
You can set tags for the host running telegraf:
|
||||||
|
|
||||||
telegraf_agent_tags:
|
telegraf_global_tags:
|
||||||
- tag_name: some_name
|
- tag_name: some_name
|
||||||
tag_value: some_value
|
tag_value: some_value
|
||||||
|
|
||||||
@ -36,8 +56,10 @@ Specifying an output. The default is set to localhost, you'll have to specify th
|
|||||||
telegraf_agent_output:
|
telegraf_agent_output:
|
||||||
- type: influxdb
|
- type: influxdb
|
||||||
config:
|
config:
|
||||||
- url = "http://localhost:8086"
|
- urls = ["http://localhost:8086"]
|
||||||
- database = "telegraf"
|
- database = "telegraf"
|
||||||
|
tagpass:
|
||||||
|
- diskmetrics = ["true"]
|
||||||
|
|
||||||
The config will be printed line by line into the configuration, so you could also use:
|
The config will be printed line by line into the configuration, so you could also use:
|
||||||
|
|
||||||
@ -62,41 +84,70 @@ With the property `telegraf_plugins_default` it is set to use the default set of
|
|||||||
- plugin: mem
|
- plugin: mem
|
||||||
- plugin: system
|
- plugin: system
|
||||||
- plugin: swap
|
- plugin: swap
|
||||||
|
- plugin: netstat
|
||||||
|
|
||||||
Every telegraf agent has these as an default configuration.
|
Every telegraf agent has these as a default configuration.
|
||||||
|
|
||||||
The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific to the servers goal. Following is an example for using this parameter for MySQL database servers:
|
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:
|
||||||
|
|
||||||
cat group_vars/mysql_database
|
cat group_vars/mysql_database
|
||||||
telegraf_plugins_extra
|
telegraf_plugins_extra:
|
||||||
- plugin: mysql
|
- plugin: mysql
|
||||||
config:
|
config:
|
||||||
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
|
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
Telegraf plugin options:
|
||||||
------------
|
|
||||||
|
* `tags` An k/v tags to apply to a specific input's measurements. Can be used on any stage for better filtering for example in outputs.
|
||||||
|
* `pass`: An array of strings that is used to filter metrics generated by the current plugin. Each string in the array is tested as a prefix against metric names and if it matches, the metric is emitted.
|
||||||
|
* `drop`: The inverse of pass, if a metric name matches, it is not emitted.
|
||||||
|
* `tagpass`: (added in Telegraf 0.1.5) tag names and arrays of strings that are used to filter metrics by the current plugin. Each string in the array is tested as an exact match against the tag name, and if it matches the metric is emitted.
|
||||||
|
* `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.
|
||||||
|
|
||||||
|
An example might look like this:
|
||||||
|
|
||||||
|
telegraf_plugins_default:
|
||||||
|
- plugin: disk
|
||||||
|
interval: 12
|
||||||
|
tags:
|
||||||
|
- diskmetrics = "true"
|
||||||
|
tagpass:
|
||||||
|
- fstype = [ "ext4", "xfs" ]
|
||||||
|
- path = [ "/opt", "/home" ]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
No dependencies
|
No dependencies
|
||||||
|
|
||||||
Example Playbook
|
## Example Playbook
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: servers
|
- hosts: servers
|
||||||
roles:
|
roles:
|
||||||
- { role: dj-wasabi.telegraf }
|
- { role: dj-wasabi.telegraf }
|
||||||
|
|
||||||
Test Kitchen
|
##Contributors
|
||||||
------------
|
The following have contributed to this Ansible role:
|
||||||
|
|
||||||
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/
|
* aferrari-technisys
|
||||||
|
* stvnwrgs
|
||||||
|
* lhoss
|
||||||
|
* thecodeassassin
|
||||||
|
* Ismael
|
||||||
|
* romainbureau
|
||||||
|
|
||||||
License
|
## Molecule
|
||||||
-------
|
|
||||||
|
This roles is configured to be tested with Molecule. You can find on this page some more information regarding Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
BSD
|
BSD
|
||||||
|
|
||||||
Author Information
|
## Author Information
|
||||||
------------------
|
|
||||||
|
|
||||||
Please let me know if you have issues. Pull requests are also accepted! :-)
|
Please let me know if you have issues. Pull requests are also accepted! :-)
|
||||||
|
|
||||||
|
@ -1,19 +1,32 @@
|
|||||||
---
|
---
|
||||||
# defaults file for ansible-telegraf
|
# defaults file for ansible-telegraf
|
||||||
|
|
||||||
telegraf_agent_version: 0.1.8
|
telegraf_agent_version: 1.4.0
|
||||||
|
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
||||||
telegraf_agent_interval: 10
|
telegraf_agent_interval: 10
|
||||||
telegraf_agent_debug: False
|
telegraf_agent_debug: False
|
||||||
telegraf_agent_utc: True
|
telegraf_agent_round_interval: True
|
||||||
telegraf_agent_precision: s
|
telegraf_agent_flush_interval: 10
|
||||||
|
telegraf_agent_flush_jitter: 0
|
||||||
|
|
||||||
telegraf_agent_tags:
|
# 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:
|
telegraf_agent_output:
|
||||||
- type: influxdb
|
- type: influxdb
|
||||||
config:
|
config:
|
||||||
- url = "http://localhost:8086"
|
- urls = ["http://localhost:8086"]
|
||||||
- database = "telegraf"
|
- database = "telegraf"
|
||||||
|
- precision = "s"
|
||||||
|
|
||||||
telegraf_plugins_default:
|
telegraf_plugins_default:
|
||||||
- plugin: cpu
|
- plugin: cpu
|
||||||
@ -22,7 +35,9 @@ telegraf_plugins_default:
|
|||||||
- plugin: disk
|
- plugin: disk
|
||||||
- plugin: io
|
- plugin: io
|
||||||
- plugin: mem
|
- plugin: mem
|
||||||
|
- plugin: net
|
||||||
- plugin: system
|
- plugin: system
|
||||||
- plugin: swap
|
- plugin: swap
|
||||||
|
- plugin: netstat
|
||||||
|
|
||||||
telegraf_plugins_extra:
|
telegraf_plugins_extra:
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# handlers file for ansible-telegraf
|
# handlers file for ansible-telegraf
|
||||||
|
|
||||||
- name: "Restart Telegraf"
|
- name: "Restart Telegraf"
|
||||||
action: service
|
service:
|
||||||
name=telegraf
|
name: telegraf
|
||||||
state=restarted
|
state: restarted
|
||||||
enabled=yes
|
enabled: yes
|
||||||
sudo: yes
|
become: yes
|
||||||
|
151
meta/main.yml
151
meta/main.yml
@ -1,139 +1,20 @@
|
|||||||
---
|
---
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: your name
|
author: Werner Dijkerman
|
||||||
description:
|
description: Installing and configuring Telegraf
|
||||||
company: your company (optional)
|
company:
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
license: license BSD
|
||||||
# next line and provide a value
|
|
||||||
# issue_tracker_url: http://example.com/issue/tracker
|
|
||||||
# Some suggested licenses:
|
|
||||||
# - BSD (default)
|
|
||||||
# - MIT
|
|
||||||
# - GPLv2
|
|
||||||
# - GPLv3
|
|
||||||
# - Apache
|
|
||||||
# - CC-BY
|
|
||||||
license: license (GPLv2, CC-BY, etc)
|
|
||||||
min_ansible_version: 1.2
|
min_ansible_version: 1.2
|
||||||
#
|
platforms:
|
||||||
# Below are all platforms currently available. Just uncomment
|
- name: EL
|
||||||
# the ones that apply to your role. If you don't see your
|
versions:
|
||||||
# platform on this list, let us know and we'll get it added!
|
- all
|
||||||
#
|
- name: Ubuntu
|
||||||
#platforms:
|
versions:
|
||||||
#- name: EL
|
- all
|
||||||
# versions:
|
- name: Debian
|
||||||
# - all
|
versions:
|
||||||
# - 5
|
- all
|
||||||
# - 6
|
categories:
|
||||||
# - 7
|
- monitoring
|
||||||
#- name: GenericUNIX
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 16
|
|
||||||
# - 17
|
|
||||||
# - 18
|
|
||||||
# - 19
|
|
||||||
# - 20
|
|
||||||
# - 21
|
|
||||||
# - 22
|
|
||||||
#- name: Windows
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2012R2
|
|
||||||
#- name: SmartOS
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: opensuse
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 12.1
|
|
||||||
# - 12.2
|
|
||||||
# - 12.3
|
|
||||||
# - 13.1
|
|
||||||
# - 13.2
|
|
||||||
#- name: Amazon
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2013.03
|
|
||||||
# - 2013.09
|
|
||||||
#- name: GenericBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: FreeBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 8.0
|
|
||||||
# - 8.1
|
|
||||||
# - 8.2
|
|
||||||
# - 8.3
|
|
||||||
# - 8.4
|
|
||||||
# - 9.0
|
|
||||||
# - 9.1
|
|
||||||
# - 9.1
|
|
||||||
# - 9.2
|
|
||||||
#- name: Ubuntu
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - lucid
|
|
||||||
# - maverick
|
|
||||||
# - natty
|
|
||||||
# - oneiric
|
|
||||||
# - precise
|
|
||||||
# - quantal
|
|
||||||
# - raring
|
|
||||||
# - saucy
|
|
||||||
# - trusty
|
|
||||||
# - utopic
|
|
||||||
# - vivid
|
|
||||||
#- name: SLES
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 10SP3
|
|
||||||
# - 10SP4
|
|
||||||
# - 11
|
|
||||||
# - 11SP1
|
|
||||||
# - 11SP2
|
|
||||||
# - 11SP3
|
|
||||||
#- name: GenericLinux
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Debian
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - etch
|
|
||||||
# - jessie
|
|
||||||
# - lenny
|
|
||||||
# - squeeze
|
|
||||||
# - wheezy
|
|
||||||
#
|
|
||||||
# Below are all categories currently available. Just as with
|
|
||||||
# the platforms above, uncomment those that apply to your role.
|
|
||||||
#
|
|
||||||
#categories:
|
|
||||||
#- cloud
|
|
||||||
#- cloud:ec2
|
|
||||||
#- cloud:gce
|
|
||||||
#- cloud:rax
|
|
||||||
#- clustering
|
|
||||||
#- database
|
|
||||||
#- database:nosql
|
|
||||||
#- database:sql
|
|
||||||
#- development
|
|
||||||
#- monitoring
|
|
||||||
#- networking
|
|
||||||
#- packaging
|
|
||||||
#- system
|
|
||||||
#- web
|
|
||||||
dependencies: []
|
dependencies: []
|
||||||
# List your role dependencies here, one per line.
|
|
||||||
# Be sure to remove the '[]' above if you add dependencies
|
|
||||||
# to this list.
|
|
||||||
|
|
||||||
|
7
molecule/default/Dockerfile.j2
Normal file
7
molecule/default/Dockerfile.j2
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM {{ item.image }}
|
||||||
|
|
||||||
|
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
|
||||||
|
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf bash && dnf clean all; \
|
||||||
|
elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
|
||||||
|
elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \
|
||||||
|
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; fi
|
46
molecule/default/INSTALL.rst
Normal file
46
molecule/default/INSTALL.rst
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
*******
|
||||||
|
Install
|
||||||
|
*******
|
||||||
|
|
||||||
|
This set of playbooks have specific dependencies on Ansible due to the modules
|
||||||
|
being used.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Ansible 2.2
|
||||||
|
* Docker Engine
|
||||||
|
* docker-py
|
||||||
|
|
||||||
|
Install OS dependencies on CentOS 7
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ sudo yum install -y epel-release
|
||||||
|
$ sudo yum install -y gcc python-pip python-devel openssl-devel
|
||||||
|
# If installing Molecule from source.
|
||||||
|
$ sudo yum install libffi-devel git
|
||||||
|
|
||||||
|
Install OS dependencies on Ubuntu 16.x
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ sudo apt-get update
|
||||||
|
$ sudo apt-get install -y python-pip libssl-dev docker-engine
|
||||||
|
# If installing Molecule from source.
|
||||||
|
$ sudo apt-get install -y libffi-dev git
|
||||||
|
|
||||||
|
Install OS dependencies on Mac OS
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ brew install python
|
||||||
|
$ brew install git
|
||||||
|
|
||||||
|
Install using pip:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ sudo pip install ansible
|
||||||
|
$ sudo pip install docker-py
|
||||||
|
$ sudo pip install molecule --pre
|
47
molecule/default/create.yml
Normal file
47
molecule/default/create.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
- name: Create
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: False
|
||||||
|
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||||
|
vars:
|
||||||
|
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||||
|
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
|
||||||
|
molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}"
|
||||||
|
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
||||||
|
tasks:
|
||||||
|
- name: Create Dockerfiles from image names
|
||||||
|
template:
|
||||||
|
src: "{{ molecule_scenario_directory }}/Dockerfile.j2"
|
||||||
|
dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}"
|
||||||
|
with_items: "{{ molecule_yml.platforms }}"
|
||||||
|
register: platforms
|
||||||
|
|
||||||
|
- name: Discover local Docker images
|
||||||
|
docker_image_facts:
|
||||||
|
name: "molecule_local/{{ item.item.name }}"
|
||||||
|
with_items: "{{ platforms.results }}"
|
||||||
|
register: docker_images
|
||||||
|
|
||||||
|
- name: Build an Ansible compatible image
|
||||||
|
docker_image:
|
||||||
|
path: "{{ molecule_ephemeral_directory }}"
|
||||||
|
name: "molecule_local/{{ item.item.image }}"
|
||||||
|
dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
|
||||||
|
force: "{{ item.item.force | default(True) }}"
|
||||||
|
with_items: "{{ platforms.results }}"
|
||||||
|
when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0
|
||||||
|
|
||||||
|
- name: Create molecule instance(s)
|
||||||
|
docker_container:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
hostname: "{{ item.name }}"
|
||||||
|
image: "molecule_local/{{ item.image }}"
|
||||||
|
state: started
|
||||||
|
recreate: False
|
||||||
|
log_driver: syslog
|
||||||
|
command: "{{ item.command | default('sleep infinity') }}"
|
||||||
|
privileged: "{{ item.privileged | default(omit) }}"
|
||||||
|
volumes: "{{ item.volumes | default(omit) }}"
|
||||||
|
capabilities: "{{ item.capabilities | default(omit) }}"
|
||||||
|
with_items: "{{ molecule_yml.platforms }}"
|
16
molecule/default/destroy.yml
Normal file
16
molecule/default/destroy.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
- name: Destroy
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: False
|
||||||
|
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||||
|
vars:
|
||||||
|
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||||
|
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
||||||
|
tasks:
|
||||||
|
- name: Destroy molecule instance(s)
|
||||||
|
docker_container:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
state: absent
|
||||||
|
force_kill: "{{ item.force_kill | default(True) }}"
|
||||||
|
with_items: "{{ molecule_yml.platforms }}"
|
28
molecule/default/molecule.yml
Normal file
28
molecule/default/molecule.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
lint:
|
||||||
|
name: yamllint
|
||||||
|
options:
|
||||||
|
config-file: molecule/default/yaml-lint.yml
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: telegraf-centos
|
||||||
|
image: milcom/centos7-systemd
|
||||||
|
privileged: True
|
||||||
|
- name: telegraf-debian
|
||||||
|
image: maint/debian-systemd
|
||||||
|
privileged: True
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
lint:
|
||||||
|
name: ansible-lint
|
||||||
|
scenario:
|
||||||
|
name: default
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
lint:
|
||||||
|
name: flake8
|
15
molecule/default/playbook.yml
Normal file
15
molecule/default/playbook.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
pre_tasks:
|
||||||
|
- name: "Installing which on CentOS"
|
||||||
|
yum:
|
||||||
|
name: which
|
||||||
|
state: installed
|
||||||
|
when: ansible_distribution == 'CentOS'
|
||||||
|
- name: "Installing wget on Debian"
|
||||||
|
apt:
|
||||||
|
name: wget
|
||||||
|
state: installed
|
||||||
|
when: ansible_distribution == 'Debian'
|
||||||
|
roles:
|
||||||
|
- role: ansible-telegraf
|
26
molecule/default/tests/test_default.py
Normal file
26
molecule/default/tests/test_default.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import testinfra.utils.ansible_runner
|
||||||
|
|
||||||
|
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||||
|
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_running_and_enabled(Service, SystemInfo):
|
||||||
|
telegraf = Service("telegraf")
|
||||||
|
assert telegraf.is_enabled
|
||||||
|
if SystemInfo.distribution == 'centos':
|
||||||
|
assert telegraf.is_running
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_dot_conf(File):
|
||||||
|
telegraf = File("/etc/telegraf/telegraf.conf")
|
||||||
|
assert telegraf.user == "telegraf"
|
||||||
|
assert telegraf.group == "telegraf"
|
||||||
|
assert telegraf.mode == 0o640
|
||||||
|
assert telegraf.contains('[[inputs.cpu]]')
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_package(Package, SystemInfo):
|
||||||
|
telegraf = Package('telegraf')
|
||||||
|
assert telegraf.is_installed
|
BIN
molecule/default/tests/test_default.pyc
Normal file
BIN
molecule/default/tests/test_default.pyc
Normal file
Binary file not shown.
9
molecule/default/yaml-lint.yml
Normal file
9
molecule/default/yaml-lint.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
line-length:
|
||||||
|
max: 120
|
||||||
|
level: warning
|
||||||
|
truthy: disable
|
@ -1,13 +1,60 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: "Fetch telegraf installation package | Debian"
|
- name: Ensure the system can use the HTTPS transport for APT.
|
||||||
action: get_url
|
stat:
|
||||||
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}_amd64.deb
|
path: /usr/lib/apt/methods/https
|
||||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb
|
register: apt_https_transport
|
||||||
mode=0440
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Install APT HTTPS transport.
|
||||||
|
apt:
|
||||||
|
name: "apt-transport-https"
|
||||||
|
state: present
|
||||||
|
when: not apt_https_transport.stat.exists
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Download Telegraf apt key.
|
||||||
|
apt_key:
|
||||||
|
url: "https://repos.influxdata.com/influxdb.key"
|
||||||
|
state: present
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Add Telegraf repository (using LSB).
|
||||||
|
apt_repository:
|
||||||
|
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
|
||||||
|
filename: "telegraf"
|
||||||
|
state: present
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
when: ansible_lsb is defined and ansible_lsb.codename is defined
|
||||||
|
|
||||||
|
- name: Add Telegraf repository.
|
||||||
|
apt_repository:
|
||||||
|
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
|
||||||
|
filename: "telegraf"
|
||||||
|
state: present
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
when: ansible_lsb is not defined or ansible_lsb.codename is not defined
|
||||||
|
|
||||||
- name: "Install telegraf package | Debian"
|
- name: "Install telegraf package | Debian"
|
||||||
action: apt
|
apt:
|
||||||
deb=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb
|
name: telegraf
|
||||||
state=installed
|
state: installed
|
||||||
sudo: yes
|
notify: "Restart Telegraf"
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: "Fetch telegraf installation package | RedHat"
|
- name: "Add yum repository | RedHat"
|
||||||
action: get_url
|
yum_repository:
|
||||||
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}-1.x86_64.rpm
|
name: influxdb
|
||||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm
|
description: InfluxDB Repository - RHEL $releasever
|
||||||
mode=0440
|
baseurl: https://repos.influxdata.com/rhel/$releasever/$basearch/stable
|
||||||
|
gpgcheck: yes
|
||||||
|
gpgkey: https://repos.influxdata.com/influxdb.key
|
||||||
|
|
||||||
- name: "Install telegraf package | RedHat"
|
- name: "Install telegraf package | RedHat"
|
||||||
action: yum
|
yum:
|
||||||
name=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm
|
name: "telegraf-{{ telegraf_agent_version }}"
|
||||||
state=installed
|
state: installed
|
||||||
sudo: yes
|
notify: "Restart Telegraf"
|
||||||
|
@ -9,12 +9,36 @@
|
|||||||
include: "Debian.yml"
|
include: "Debian.yml"
|
||||||
when: ansible_os_family == "Debian"
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
- name: "Copy the template"
|
- name: "Copy the template for versions < 0.10.0"
|
||||||
action: template
|
template:
|
||||||
src=etc-opt-telegraf-telegraf.conf.j2
|
src: etc-opt-telegraf-telegraf.conf.j2
|
||||||
dest=/etc/opt/telegraf/telegraf.conf
|
dest: /etc/opt/telegraf/telegraf.conf
|
||||||
owner=root
|
owner: telegraf
|
||||||
group=root
|
group: telegraf
|
||||||
mode=644
|
mode: 0640
|
||||||
sudo: yes
|
become: yes
|
||||||
|
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
||||||
|
notify: "Restart Telegraf"
|
||||||
|
|
||||||
|
- name: "Copy the template for versions >= 0.10.0"
|
||||||
|
template:
|
||||||
|
src: telegraf.conf.j2
|
||||||
|
dest: /etc/telegraf/telegraf.conf
|
||||||
|
owner: telegraf
|
||||||
|
group: telegraf
|
||||||
|
mode: 0640
|
||||||
|
become: yes
|
||||||
|
when: telegraf_agent_version|version_compare('0.10.0', '>=')
|
||||||
|
notify: "Restart Telegraf"
|
||||||
|
|
||||||
|
- name: "Copy telegraf extra plugins"
|
||||||
|
template:
|
||||||
|
src: "telegraf-extra-plugin.conf.j2"
|
||||||
|
dest: "/etc/telegraf/telegraf.d/{{ item.plugin }}.conf"
|
||||||
|
owner: telegraf
|
||||||
|
group: telegraf
|
||||||
|
mode: 0640
|
||||||
|
with_items: "{{ telegraf_plugins_extra }}"
|
||||||
|
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||||
|
become: yes
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
@ -1,8 +1,8 @@
|
|||||||
# Telegraf configuration
|
# Telegraf configuration
|
||||||
|
|
||||||
[tags]
|
[tags]
|
||||||
{% if telegraf_agent_tags is defined and telegraf_agent_tags is iterable %}
|
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
|
||||||
{% for item in telegraf_agent_tags %}
|
{% for item in telegraf_global_tags %}
|
||||||
{{ item.tag_name }} = "{{ item.tag_value }}"
|
{{ item.tag_name }} = "{{ item.tag_value }}"
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -12,8 +12,6 @@
|
|||||||
interval = "{{ telegraf_agent_interval }}s"
|
interval = "{{ telegraf_agent_interval }}s"
|
||||||
debug = {{ telegraf_agent_debug | lower }}
|
debug = {{ telegraf_agent_debug | lower }}
|
||||||
hostname = "{{ ansible_fqdn }}"
|
hostname = "{{ ansible_fqdn }}"
|
||||||
utc = {{ telegraf_agent_utc | lower }}
|
|
||||||
precision = "{{ telegraf_agent_precision }}"
|
|
||||||
|
|
||||||
# Configuration for influxdb server to send metrics to
|
# Configuration for influxdb server to send metrics to
|
||||||
[outputs]
|
[outputs]
|
||||||
@ -30,23 +28,45 @@
|
|||||||
{% if telegraf_plugins_default is defined and telegraf_plugins_default is iterable %}
|
{% if telegraf_plugins_default is defined and telegraf_plugins_default is iterable %}
|
||||||
{% for item in telegraf_plugins_default %}
|
{% for item in telegraf_plugins_default %}
|
||||||
[{{ item.plugin }}]
|
[{{ item.plugin }}]
|
||||||
|
{% if item.interval is defined %}
|
||||||
|
interval = "{{ item.interval }}s"
|
||||||
|
{% endif %}
|
||||||
{% if item.config is defined and item.config is iterable %}
|
{% if item.config is defined and item.config is iterable %}
|
||||||
{% for items in item.config %}
|
{% for items in item.config %}
|
||||||
{{ items }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if item.tagpass is defined and item.tagpass is iterable %}
|
||||||
|
[{{ item.plugin }}.tagpass]
|
||||||
|
{% for items in item.tagpass %}
|
||||||
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if item.tagdrop is defined and item.tagdrop is iterable %}
|
||||||
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
|
[{{ item.plugin }}.tagdrop]
|
||||||
{% for item in telegraf_plugins_extra %}
|
{% for items in item.tagdrop %}
|
||||||
[{{ item.plugin }}]
|
{{ items }}
|
||||||
{% if item.config is defined and item.config is iterable %}
|
{% endfor %}
|
||||||
{% for items in item.config %}
|
{% 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 }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
45
templates/telegraf-extra-plugin.conf.j2
Normal file
45
templates/telegraf-extra-plugin.conf.j2
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[[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 %}
|
||||||
|
[{{ 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 %}
|
94
templates/telegraf.conf.j2
Normal file
94
templates/telegraf.conf.j2
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# Telegraf configuration
|
||||||
|
|
||||||
|
[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 %}
|
||||||
|
|
||||||
|
# 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|version_compare('0.13', '>=') %}
|
||||||
|
collection_jitter = "{{ telegraf_agent_collection_jitter }}s"
|
||||||
|
metric_batch_size = {{ telegraf_agent_metric_batch_size }}
|
||||||
|
metric_buffer_limit = {{ telegraf_agent_metric_buffer_limit }}
|
||||||
|
quiet = {{ telegraf_agent_quiet | lower }}
|
||||||
|
{% endif %}
|
||||||
|
{% if telegraf_agent_version|version_compare('1.1', '>=') %}
|
||||||
|
logfile = "{{ telegraf_agent_logfile }}"
|
||||||
|
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# OUTPUTS #
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
{% 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 %}
|
||||||
|
{% 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 %}
|
||||||
|
[{{ 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 %}
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: localhost
|
|
||||||
roles:
|
|
||||||
- role: ansible-telegraf
|
|
@ -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
|
|
@ -1,2 +0,0 @@
|
|||||||
require 'serverspec'
|
|
||||||
set :backend, :exec
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for .
|
|
Reference in New Issue
Block a user