mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
11acaaa0d8 | |||
abb2b1bb04 | |||
0e712c0c55 | |||
ee9e7428ec | |||
2ac6549492 | |||
619b52b98a | |||
19a4a44b58 | |||
08416516bf | |||
0a37012e6e | |||
859ffb9e6e | |||
f96e6167e7 | |||
ecc24940b6 | |||
e93bc95cb5 | |||
d039a0568e | |||
b015df26ae |
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal 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. -->
|
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal 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.
|
@ -5,7 +5,7 @@ services:
|
||||
- docker
|
||||
|
||||
install:
|
||||
- pip install molecule ansible docker==2.7.0
|
||||
- pip install -r requirements.txt
|
||||
|
||||
script:
|
||||
- molecule --version
|
||||
|
10
CHANGELOG.md
10
CHANGELOG.md
@ -5,6 +5,16 @@ Below an overview of all changes in the releases.
|
||||
|
||||
Version (Release date)
|
||||
|
||||
0.10.0 (2018-08-12)
|
||||
|
||||
* Updating to telegraf 1.7.3
|
||||
* Fix Deprecation warnings #54
|
||||
* Changed 'include' to 'include_tasks' to remove deprecation warning #53 (By pull request: tjend (Thanks!))
|
||||
* Add option to remove extra plugin config files #52 (By pull request: tjend (Thanks!))
|
||||
* Plugins extra hash allow multiple inputs same type #50 (By pull request: tjend (Thanks!))
|
||||
* Using specific version for tests
|
||||
* Update minimum Ansible version to 2.4
|
||||
|
||||
0.9.0 (2018-05-06)
|
||||
|
||||
* plugins: be able to specify the filename of extra plugings #40 (By pull request: gaelL (Thanks!))
|
||||
|
3
CODE_OF_CONDUCT.md
Normal file
3
CODE_OF_CONDUCT.md
Normal 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
88
CONTRIBUTING.md
Normal file
@ -0,0 +1,88 @@
|
||||
# Contributing to this role
|
||||
|
||||
**Table of content**
|
||||
|
||||
- [Contributing to this role](#contributing-to-this-role)
|
||||
* [Contributing](#contributing)
|
||||
* [(local) Development](#-local--development)
|
||||
+ [Requirements](#requirements)
|
||||
+ [Execution](#execution)
|
||||
- [Other](#other)
|
||||
* [Virtualenv](#virtualenv)
|
||||
* [Links](#links)
|
||||
|
||||
Thank you very much for making time to improve this Ansible role.
|
||||
|
||||
## Contributing
|
||||
|
||||
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. [Contributor Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html).
|
||||
|
||||
1. Fork the repo
|
||||
|
||||
2. Create a branch and apply your changes to this branch.
|
||||
|
||||
a. Make sure you have updated the documentation when adding new variables;
|
||||
|
||||
b. Don't forget to add/update tests so we can test the functionality during each Pull Request;
|
||||
|
||||
c. Make sure the tests will succeed.
|
||||
|
||||
3. Push the branch to your fork and submit a pull request.
|
||||
|
||||
**Note**
|
||||
|
||||
Pull Requests that fails during the tests will not be merged.
|
||||
|
||||
## Coding Guidelines
|
||||
|
||||
Style guides are important because they ensure consistency in the content, look, and feel of a book or a website.
|
||||
|
||||
* [Ansible Style Guide](http://docs.ansible.com/ansible/latest/dev_guide/style_guide/)
|
||||
* It's "Ansible" when referring to the product and ``ansible`` when referring to the command line tool, package, etc
|
||||
* Playbooks should be written in multi-line YAML with ``key: value``. The form ``key=value`` is only for ``ansible`` ad-hoc, not for ``ansible-playbook``.
|
||||
* Tasks should always have a ``name:``
|
||||
|
||||
## (local) Development
|
||||
|
||||
This role make use of Molecule to test the execution of the role and verificate it. In the root of the repository, a file named `requirements.txt` exists and contains the versions used by the tests.
|
||||
|
||||
### Requirements
|
||||
|
||||
You can install them with the following command:
|
||||
|
||||
```
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
Once the dependencies are installed, please install Docker as Molecule is configured in this repository to create Docker containers. See [this](https://docs.docker.com/install/) link to install Docker on your system.
|
||||
|
||||
### Execution
|
||||
|
||||
Once everything is installed, you can validate your changes by executing:
|
||||
```
|
||||
molecule test
|
||||
```
|
||||
|
||||
It should run without any issues.
|
||||
|
||||
# Other
|
||||
|
||||
## Virtualenv
|
||||
|
||||
Suggestion is to create a virtualenv so you won't have issues with other projects.
|
||||
|
||||
Some web pages describing for virtual env:
|
||||
|
||||
* http://thepythonguru.com/python-virtualenv-guide/
|
||||
* https://realpython.com/python-virtual-environments-a-primer/
|
||||
* https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/
|
||||
|
||||
## Links
|
||||
|
||||
[Molecule](https://molecule.readthedocs.io/)
|
||||
|
||||
[Ansible](https://www.ansible.com/)
|
||||
|
||||
[Molecule V2 with your own role](https://werner-dijkerman.nl/2017/09/05/using-molecule-v2-to-test-ansible-roles/)
|
||||
|
||||
**End note**: Have fun making changes. If a feature helps you, then others find it helpful too and I will happily have it merged.
|
21
LICENSE
Normal file
21
LICENSE
Normal 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
12
PULL_REQUEST_TEMPLATE.md
Normal 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. -->
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
# defaults file for ansible-telegraf
|
||||
|
||||
telegraf_agent_version: 1.4.0
|
||||
telegraf_agent_version: 1.7.3
|
||||
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
||||
telegraf_agent_interval: 10
|
||||
telegraf_agent_debug: False
|
||||
|
@ -4,7 +4,7 @@ galaxy_info:
|
||||
description: Installing and configuring Telegraf
|
||||
company:
|
||||
license: license BSD
|
||||
min_ansible_version: 1.2
|
||||
min_ansible_version: 2.4
|
||||
platforms:
|
||||
- name: EL
|
||||
versions:
|
||||
|
@ -3,7 +3,7 @@
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: False
|
||||
# no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||
vars:
|
||||
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
|
||||
|
@ -13,8 +13,13 @@ platforms:
|
||||
image: milcom/centos7-systemd
|
||||
privileged: True
|
||||
- name: telegraf-debian
|
||||
image: maint/debian-systemd
|
||||
image: minimum2scp/systemd-stretch
|
||||
privileged: True
|
||||
command: /sbin/init
|
||||
- name: telegraf-ubuntu
|
||||
image: solita/ubuntu-systemd:bionic
|
||||
privileged: True
|
||||
command: /sbin/init
|
||||
|
||||
provisioner:
|
||||
name: ansible
|
||||
|
@ -4,12 +4,19 @@
|
||||
- name: "Installing which on CentOS"
|
||||
yum:
|
||||
name: which
|
||||
state: installed
|
||||
when: ansible_distribution == 'CentOS'
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'RedHat'
|
||||
|
||||
- name: "Installing wget on Debian"
|
||||
apt:
|
||||
name: wget
|
||||
state: installed
|
||||
when: ansible_distribution == 'Debian'
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'Debian'
|
||||
with_items:
|
||||
- wget
|
||||
- gpg
|
||||
|
||||
roles:
|
||||
- role: ansible-telegraf
|
||||
|
@ -4,6 +4,6 @@ extends: default
|
||||
|
||||
rules:
|
||||
line-length:
|
||||
max: 120
|
||||
max: 140
|
||||
level: warning
|
||||
truthy: disable
|
||||
|
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@ -0,0 +1,4 @@
|
||||
ansible==2.4.4.0
|
||||
docker==3.3.0
|
||||
molecule==2.13.1
|
||||
testinfra==1.12.0
|
@ -37,6 +37,6 @@
|
||||
- name: "Install telegraf package | Debian"
|
||||
apt:
|
||||
name: "telegraf"
|
||||
state: installed
|
||||
state: present
|
||||
notify: "Restart Telegraf"
|
||||
become: yes
|
||||
|
@ -21,7 +21,7 @@
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
become: yes
|
||||
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
||||
when: telegraf_agent_version is version_compare('0.10.0', '<')
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
- name: "Copy the template for versions >= 0.10.0"
|
||||
@ -32,18 +32,27 @@
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
become: yes
|
||||
when: telegraf_agent_version|version_compare('0.10.0', '>=')
|
||||
when: telegraf_agent_version is version_compare('0.10.0', '>=')
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
- name: "Copy telegraf extra plugins"
|
||||
template:
|
||||
src: "telegraf-extra-plugin.conf.j2"
|
||||
dest: "/etc/telegraf/telegraf.d/{{ item.value.filename | default(item.key) }}.conf"
|
||||
dest: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable and item.value.state|default('present') != 'absent'"
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
- name: "Remove telegraf extra plugins"
|
||||
file:
|
||||
path: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
|
||||
state: absent
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable and item.value.state|default('present') == 'absent'"
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
|
@ -2,15 +2,15 @@
|
||||
# tasks file for ansible-telegraf
|
||||
|
||||
- name: "Install the correct repository"
|
||||
include: "RedHat.yml"
|
||||
include_tasks: "RedHat.yml"
|
||||
when: ansible_os_family == "RedHat"
|
||||
|
||||
- name: "Install the correct repository"
|
||||
include: "Debian.yml"
|
||||
include_tasks: "Debian.yml"
|
||||
when: ansible_os_family == "Debian"
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
||||
- name: "Configure telegraf"
|
||||
include: "configure.yml"
|
||||
include_tasks: "configure.yml"
|
||||
|
@ -1,6 +1,6 @@
|
||||
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
|
||||
|
||||
[[inputs.{{ item.key }}]]
|
||||
[[inputs.{{ item.value.plugin | default(item.key) }}]]
|
||||
{% if item.value.interval is defined %}
|
||||
interval = "{{ item.value.interval }}s"
|
||||
{% endif %}
|
||||
@ -10,37 +10,37 @@
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.value.tags is defined and item.value.tags is iterable %}
|
||||
[inputs.{{ item.key }}.tags]
|
||||
[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 %}
|
||||
[{{ item.key }}.tagpass]
|
||||
[{{ 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 %}
|
||||
[{{ item.key }}.tagdrop]
|
||||
[{{ item.value.plugin | default(item.key) }}.tagdrop]
|
||||
{% for items in item.value.tagdrop %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.value.pass is defined and item.value.pass is iterable %}
|
||||
[{{ item.key }}.pass]
|
||||
[{{ item.value.plugin | default(item.key) }}.pass]
|
||||
{% for items in item.value.pass %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.value.drop is defined and item.value.drop is iterable %}
|
||||
[{{ item.key }}.drop]
|
||||
[{{ item.value.plugin | default(item.key) }}.drop]
|
||||
{% for items in item.value.drop %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.value.specifications is defined and item.value.specifications is iterable %}
|
||||
[[{{item.key}}.specifications]]
|
||||
[[{{item.value.plugin | default(item.key)}}.specifications]]
|
||||
{% for items in item.value.specifications %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
|
@ -21,13 +21,13 @@
|
||||
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', '>=') %}
|
||||
{% 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|version_compare('1.1', '>=') %}
|
||||
{% if telegraf_agent_version is version_compare('1.1', '>=') %}
|
||||
logfile = "{{ telegraf_agent_logfile }}"
|
||||
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
|
||||
{% endif %}
|
||||
|
Reference in New Issue
Block a user