73 Commits

Author SHA1 Message Date
68af70ea86 Updated CHANGELOG.md on "2024-11-26 13:09:19" 2024-11-26 13:09:19 +00:00
7c9c047c67 fix: add missing tasks for RedHat distro (rpm install) (#189) 2024-11-26 14:08:46 +01:00
732dffa435 Updated CHANGELOG.md on "2024-11-25 13:51:52" 2024-11-25 13:51:52 +00:00
570f81a779 Updating the Python packages to make Molecule work (#190)
* Updating the Python packages to make Molecule work
* Triggering jobs with updating Telegraf version
* Changing Ansible version
* Changing github ci version
* Changing Python version version
* Removal of Debian9
2024-11-25 14:51:20 +01:00
29fb3ea5e0 Updated CHANGELOG.md on "2024-11-06 16:17:14" 2024-11-06 16:17:14 +00:00
c318de1e2e Bump ansible-core from 2.15.9 to 2.17.6 (#188)
Bumps [ansible-core](https://github.com/ansible/ansible) from 2.15.9 to 2.17.6.
- [Release notes](https://github.com/ansible/ansible/releases)
- [Commits](https://github.com/ansible/ansible/compare/v2.15.9...v2.17.6)

---
updated-dependencies:
- dependency-name: ansible-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 17:16:39 +01:00
8a5a7187fa Updated CHANGELOG.md on "2024-10-08 07:02:11" 2024-10-08 07:02:11 +00:00
6f30799a7f fix: add almalinux analog to rockylinux in defaults/main.yml (#187)
Co-authored-by: Simon Couball <simon.couball@akquinet.de>
2024-10-08 09:01:37 +02:00
2b8cb8a9d8 Updated CHANGELOG.md on "2024-06-25 06:44:26" 2024-06-25 06:44:26 +00:00
108284cda1 Add Archlinux OS (#186)
Signed-off-by: Frank Villaro-Dixon <frank@villaro-dixon.eu>
2024-06-25 08:43:52 +02:00
51c2bb66f5 Updated CHANGELOG.md on "2024-02-28 19:01:19" 2024-02-28 19:01:19 +00:00
bfe52cd752 Support for sub_inputs in extra plugins (#184)
Co-authored-by: Michał Lisowski <mlisowski@sentient.ie>
2024-02-28 20:00:49 +01:00
b5179f4dfe Updated CHANGELOG.md on "2024-02-19 08:33:43" 2024-02-19 08:33:43 +00:00
c8a2209fe5 use redhat baseurl (#183) 2024-02-19 09:33:14 +01:00
bd5dfd18c1 Updated CHANGELOG.md on "2024-02-17 11:37:35" 2024-02-17 11:37:35 +00:00
870e56c5a7 Updating CHANGELOG.md file for release 0.14.1 2024-02-17 12:37:08 +01:00
5fb03da151 Updating CONTRIBUTORS file for release 0.14.1 2024-02-17 12:36:46 +01:00
39bc504fd5 Merge branch 'master' of github.com:dj-wasabi/ansible-telegraf 2024-02-17 12:34:10 +01:00
171ecb0434 Updated CHANGELOG.md on "2024-02-17 11:33:43" 2024-02-17 11:33:43 +00:00
06117f38a1 Bump ansible-core from 2.15.2 to 2.15.9 (#182)
Bumps [ansible-core](https://github.com/ansible/ansible) from 2.15.2 to 2.15.9.
- [Release notes](https://github.com/ansible/ansible/releases)
- [Commits](https://github.com/ansible/ansible/compare/v2.15.2...v2.15.9)

---
updated-dependencies:
- dependency-name: ansible-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-17 12:33:17 +01:00
d84931411e Bump ansible from 8.2.0 to 8.5.0 (#181)
Bumps [ansible](https://github.com/ansible-community/ansible-build-data) from 8.2.0 to 8.5.0.
- [Changelog](https://github.com/ansible-community/ansible-build-data/blob/main/docs/release-process.md)
- [Commits](https://github.com/ansible-community/ansible-build-data/compare/8.2.0...8.5.0)

---
updated-dependencies:
- dependency-name: ansible
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-17 12:33:03 +01:00
d5ab4b07a8 Updated CHANGELOG.md on "2023-10-23 06:26:59" 2023-10-23 06:26:59 +00:00
5c160d6bbe Change Debian repo location (#179)
Changing the Debian repo to use "stable/main" instead of release-specific repos, per InfluxDB team suggestion
2023-10-23 08:26:21 +02:00
d36c400cd3 Merge branch 'master' of github.com:dj-wasabi/ansible-telegraf 2023-10-20 18:07:07 +02:00
cec761a336 Updated CHANGELOG.md on "2023-10-20 16:06:42" 2023-10-20 16:06:42 +00:00
da55c4a711 Fix molecule tests so that PR's can properly validated (#180)
* Making molecule work again
* Enable newer os'es
2023-10-20 18:06:02 +02:00
ccdb9bd98e Merge branch 'master' of github.com:dj-wasabi/ansible-telegraf 2023-10-20 17:18:11 +02:00
94774fbc8d Updated CHANGELOG.md on "2023-10-20 15:17:47" 2023-10-20 15:17:47 +00:00
73c00ab7b6 replace depracted aws module (#178)
Co-authored-by: Lauber, Simon <Simon.Lauber@adesso-service.com>
2023-10-20 17:17:06 +02:00
f241fd34d0 added yaml 1.2.2 compatibility (#176) 2023-10-20 17:16:45 +02:00
4064c8b040 Migrate from io to diskio (#173)
Telegraf throws following deprecation warning:

```
W! DeprecationWarning: Plugin "inputs.io" deprecated since version 0.10.0 and will be removed in 2.0.0: use 'inputs.diskio' instead
```

As far as I can tell this is simple rename and the output of these plugins should not change. I've also tried comparing the output locally and it seems to be the same.

```
# The following command outputs two sets of identical data:
telegraf --test --config telegraf.conf --input-filter io:diskio
```
2023-10-20 17:16:10 +02:00
fdcff0b195 Merge branch 'master' of github.com:dj-wasabi/ansible-telegraf 2023-10-20 16:19:48 +02:00
6b6aa755f6 Updated CHANGELOG.md on "2023-03-14 19:02:02" 2023-03-14 19:02:02 +00:00
ca76832c24 Updated CHANGELOG.md on "2023-03-14 18:51:28" 2023-03-14 18:51:28 +00:00
6f6fdf7f5e Replace apt_key with get_url (#170)
* Replace apt_key with get_url

Removing deprecated call to apt_key and replacing with a direct download of the key into trusted.gpg.d due to the apt-key command returning an error on newer releases.

* Dearmor GPG key

* Use new apt keyring method when supported

Changed playbook logic to run classic apt-key task for older Debian releases and use new keyring location for newer releases
2023-03-14 19:50:34 +01:00
f915bc0bd9 Updated CHANGELOG.md on "2023-01-31 14:37:03" 2023-01-31 14:37:03 +00:00
5066c5c7f9 Fix check-mode failures (#168)
* feat: Fix check-mode

* ci: Add "check-mode" runs to tests

* feat: Ensure check-mode works for repo-based installs
2023-01-31 15:36:14 +01:00
adb678a9e5 Updated CHANGELOG.md on "2023-01-30 18:32:17" 2023-01-30 18:32:17 +00:00
b8e8710ccf Updating CONTRIBUTORS file for release 0.14.0 2023-01-30 19:27:39 +01:00
e4728f4a6a Updated CHANGELOG.md on "2023-01-30 18:27:16" 2023-01-30 18:27:16 +00:00
8ac7c14045 Added/removed OS'es for Molecule (#167) 2023-01-30 19:26:38 +01:00
8c665829e6 Updated CHANGELOG.md on "2023-01-30 18:02:07" 2023-01-30 18:02:07 +00:00
68da943438 update influxdata GPG key after rotation (#165)
Co-authored-by: Harald Krämer <harald.kraemer@serviceware.de>
2023-01-30 19:01:27 +01:00
5fad4a7a64 Updated CHANGELOG.md on "2023-01-30 17:40:06" 2023-01-30 17:40:06 +00:00
5eeb4d6409 Downgrade support (#160)
* Support downgrades
2023-01-30 18:39:21 +01:00
83fda666a8 Fixed issues with Windows paths containing spaces (#162)
* Update configure_windows.yml

Add Quotes

* Update main.yml

add quotes
2023-01-30 18:38:44 +01:00
9a548d825d Updated CHANGELOG.md on "2023-01-30 17:38:35" 2023-01-30 17:38:35 +00:00
6d3d9741f0 feat: Ensure check-mode works (#163)
This commit ensures that check-mode works on systems when this role is
run without any telegraf being installed.

Before

```
fatal: [host-1]: FAILED! => {"changed": false, "msg": "Could not find the requested service telegraf: host"}
```

After

```
fatal: [host-1]: FAILED! => {"changed": false, "msg": "Could not find the requested service telegraf: host"}
...ignoring
```
2023-01-30 18:37:53 +01:00
df4af3eeef Updated CHANGELOG.md on "2023-01-30 17:04:28" 2023-01-30 17:04:28 +00:00
6432640e89 Fix the molecule run as part of CI process (#166)
* Updating CI Job;
* Changing gpg rpm key;
2023-01-30 18:03:35 +01:00
4fd39fe753 Updated CHANGELOG.md on "2022-08-08 16:33:46" 2022-08-08 16:33:46 +00:00
e59d785c7e Updating CHANGELOG.md file for release 0.13.3 2022-08-08 18:33:10 +02:00
4bef71819d Updating CONTRIBUTORS file for release 0.13.3 2022-08-08 18:32:34 +02:00
e13c62d918 Updated CHANGELOG.md on "2022-03-21 15:46:31" 2022-03-21 15:46:31 +00:00
f329d9e207 Adding support for aggregators (#156)
* templates/telegraf.conf.j2: Adding aggregator support.

Adding aggregator support and tagpass/tagdrop support for
processors and aggregators.

* Adding test for aggregator templating
2022-03-21 16:45:54 +01:00
554434c7ad Updated CHANGELOG.md on "2022-02-24 19:33:36" 2022-02-24 19:33:36 +00:00
a89b6aff93 Improve usage on SUSE releases (#155)
* Do not install init script on SUSE systems (#152)

The last SUSE releases that didn't support systemd were SLE 11 and
openSUSE 11.x.  The telegraf packages on the Open Build Service all
contain systemd service files.  openSUSE 11.x is long since dead and
buried and SLE 11 has been out of general support since mid-2019.

There are no other users of the script and it can be removed.  The
dependencies required in the molecule configuration can also be removed.

* Fix Python package dependencies on SUSE releases (#153)

The naming of the packages for the Python libxml and xml modules
on SUSE releases is a bit of a mess across releases.

SLE12 ships with Python 3.4 which is not new enough for Ansible to
use so Python 2 must be used.  Those packages are named python-xml
and python-libxml2.

SLE15 ships with Python 3.6 but the package containing the libxml2
module is named python3-libxml2-python.  The xml module is part of
python3-base and will be present if the interpreter is present.

On later releases, the package containing the libxml2 module has been
renamed python3-libxml2 but it still offers an alias for the old name.

* Add default repository handling for SUSE releases (#154)

The repositories for SUSE releases are in well-known locations
and requiring the user to specify them is unnecessary.  If the user
wishes to override the default repo using the telegraf_zypper_baseurl
that will still be honored.
2022-02-24 20:32:54 +01:00
fd18c08145 Updated CHANGELOG.md on "2022-01-19 07:18:03" 2022-01-19 07:18:03 +00:00
3596c7b95e Add variable for openSUSE RPM repository (#151) 2022-01-19 08:17:27 +01:00
8e4b34d4bd Updated CHANGELOG.md on "2021-11-02 18:53:24" 2021-11-02 18:53:24 +00:00
632fe13972 Add telegraf_yum_baseurl for Rocky Linux (#147)
Rocky Linux is an alternative to CentOS 8
2021-11-02 19:52:43 +01:00
4b7d9713e3 Updated CHANGELOG.md on "2021-05-19 16:07:01" 2021-05-19 16:07:01 +00:00
968b005f3a Add Windows feature of upgrade agents (#146) 2021-05-19 18:06:16 +02:00
28cd5b8f6e Updated CHANGELOG.md on "2021-04-15 05:41:37" 2021-04-15 05:41:37 +00:00
eb55757a01 Removed redundant "telegraf" folder in path (#144)
Fixed issues with paths containing spaces
2021-04-15 07:41:02 +02:00
1c15756019 Updated CHANGELOG.md on "2021-04-07 17:22:32" 2021-04-07 17:22:32 +00:00
9a1c543906 Updating CHANGELOG.md file for release 0.13.2 2021-04-07 19:21:51 +02:00
805071d0d9 Updating CONTRIBUTORS file for release 0.13.2 2021-04-07 19:21:34 +02:00
81246d67ea Updated CHANGELOG.md on "2021-03-05 17:23:51" 2021-03-05 17:23:51 +00:00
0ca3c1ddda Fix spacing for telegraf_plugins_extra example in readme.md (#143)
The spacing for the telegraf_plugins_extra section (lines 273-276) in readme.md was too indented, corrected spacing to hopefully be valid YML.
2021-03-05 18:22:57 +01:00
ecce0edb9b Remove telegraf repository after switching to online method (#142)
* Remove telegraf repository after switching to online method

Co-authored-by: Jérémy CHABERNAUD <jeremy.chabernaud@axians.com>
2021-02-08 17:03:19 +01:00
d7863b10ef Updating CONTRIBUTORS file for release 0.13.1 2021-01-31 12:00:45 +01:00
a9809890ee Updating CHANGELOG.md file for release 0.13.1 2021-01-31 12:00:45 +01:00
26 changed files with 746 additions and 343 deletions

View File

@ -22,40 +22,47 @@ on:
- '.github/workflows/telegraf.yml'
jobs:
molecule:
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
molecule_distro:
- container: centos8
image: geerlingguy/docker-centos8-ansible:latest
- container: centos7
image: geerlingguy/docker-centos7-ansible:latest
- container: rocky8
image: geerlingguy/docker-rockylinux8-ansible
- container: rocky9
image: geerlingguy/docker-rockylinux9-ansible
- container: ubuntu2204
image: geerlingguy/docker-ubuntu2204-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
- container: debian10
image: geerlingguy/docker-debian10-ansible:latest
- container: debian11
image: geerlingguy/docker-debian11-ansible:latest
steps:
- name: Check out code
uses: actions/checkout@v1
- name: Set up Python 3.7
- name: Set up Python 3.11
uses: actions/setup-python@v1
with:
python-version: 3.7
python-version: 3.11.10
- 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 on empty systems in check-mode
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 -s empty-checkmode
- name: Run role tests
run: >-
MY_MOLECULE_CONTAINER=${{ matrix.molecule_distro.container }}

View File

@ -1,5 +1,134 @@
# Changelog
## [Unreleased](https://github.com/dj-wasabi/ansible-telegraf/tree/HEAD)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.14.1...HEAD)
**Implemented enhancements:**
- Repo installation fails for Almalinux [\#172](https://github.com/dj-wasabi/ansible-telegraf/issues/172)
- Support for sub\_inputs in extra plugins [\#184](https://github.com/dj-wasabi/ansible-telegraf/pull/184) ([lisuml](https://github.com/lisuml))
**Fixed bugs:**
- Add default repository handling for SUSE releases [\#154](https://github.com/dj-wasabi/ansible-telegraf/issues/154)
- Fix Python package dependencies on SUSE releases [\#153](https://github.com/dj-wasabi/ansible-telegraf/issues/153)
**Closed issues:**
- amazon.aws.ec2\_tag\_info [\#177](https://github.com/dj-wasabi/ansible-telegraf/issues/177)
- Failing on Debian Bookwork, telegraf recomends stable main rather than specific release [\#175](https://github.com/dj-wasabi/ansible-telegraf/issues/175)
- Unable to run against linux machines \(redhat\) [\#159](https://github.com/dj-wasabi/ansible-telegraf/issues/159)
- How to add the sub inputs into the same config file using telegraf\_plugin\_extra [\#149](https://github.com/dj-wasabi/ansible-telegraf/issues/149)
**Merged pull requests:**
- Updating the Python packages to make Molecule work [\#190](https://github.com/dj-wasabi/ansible-telegraf/pull/190) ([dj-wasabi](https://github.com/dj-wasabi))
- fix: add missing tasks for RedHat distro \(rpm install\) [\#189](https://github.com/dj-wasabi/ansible-telegraf/pull/189) ([vfreitassentient](https://github.com/vfreitassentient))
- Bump ansible-core from 2.15.9 to 2.17.6 [\#188](https://github.com/dj-wasabi/ansible-telegraf/pull/188) ([dependabot[bot]](https://github.com/apps/dependabot))
- Use `rhel` within yum url for almalinux [\#187](https://github.com/dj-wasabi/ansible-telegraf/pull/187) ([kuhball](https://github.com/kuhball))
- Add Archlinux OS [\#186](https://github.com/dj-wasabi/ansible-telegraf/pull/186) ([Frankkkkk](https://github.com/Frankkkkk))
- Fixes Role for Almalinux 8.8, Closes \#172 [\#183](https://github.com/dj-wasabi/ansible-telegraf/pull/183) ([mira-miracoli](https://github.com/mira-miracoli))
## [0.14.1](https://github.com/dj-wasabi/ansible-telegraf/tree/0.14.1) (2024-02-17)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.14.0...0.14.1)
**Implemented enhancements:**
- Fix check-mode failures [\#168](https://github.com/dj-wasabi/ansible-telegraf/pull/168) ([pieterlexis-tomtom](https://github.com/pieterlexis-tomtom))
**Fixed bugs:**
- Fix molecule tests so that PR's can properly validated [\#180](https://github.com/dj-wasabi/ansible-telegraf/pull/180) ([dj-wasabi](https://github.com/dj-wasabi))
- Replace apt\_key with get\_url [\#170](https://github.com/dj-wasabi/ansible-telegraf/pull/170) ([danclough](https://github.com/danclough))
**Closed issues:**
- Failure due to apt-key when run against newer Debian/Ubuntu releases [\#169](https://github.com/dj-wasabi/ansible-telegraf/issues/169)
**Merged pull requests:**
- Bump ansible-core from 2.15.2 to 2.15.9 [\#182](https://github.com/dj-wasabi/ansible-telegraf/pull/182) ([dependabot[bot]](https://github.com/apps/dependabot))
- Bump ansible from 8.2.0 to 8.5.0 [\#181](https://github.com/dj-wasabi/ansible-telegraf/pull/181) ([dependabot[bot]](https://github.com/apps/dependabot))
- Change Debian repo location [\#179](https://github.com/dj-wasabi/ansible-telegraf/pull/179) ([danclough](https://github.com/danclough))
- replace depracted aws module [\#178](https://github.com/dj-wasabi/ansible-telegraf/pull/178) ([daparm](https://github.com/daparm))
- added yaml 1.2.2 compatibility [\#176](https://github.com/dj-wasabi/ansible-telegraf/pull/176) ([DEvil0000](https://github.com/DEvil0000))
- Migrate from io to diskio to fix deprecation warning [\#173](https://github.com/dj-wasabi/ansible-telegraf/pull/173) ([mprasil](https://github.com/mprasil))
## [0.14.0](https://github.com/dj-wasabi/ansible-telegraf/tree/0.14.0) (2023-01-30)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.3...0.14.0)
**Implemented enhancements:**
- Added/removed OS'es for Molecule CI testing [\#167](https://github.com/dj-wasabi/ansible-telegraf/pull/167) ([dj-wasabi](https://github.com/dj-wasabi))
- Ensure check-mode works [\#163](https://github.com/dj-wasabi/ansible-telegraf/pull/163) ([pieterlexis-tomtom](https://github.com/pieterlexis-tomtom))
- Downgrade support [\#160](https://github.com/dj-wasabi/ansible-telegraf/pull/160) ([maxnasonov](https://github.com/maxnasonov))
**Fixed bugs:**
- Don't install init script on SUSE/openSUSE systems running systemd [\#152](https://github.com/dj-wasabi/ansible-telegraf/issues/152)
- Fix the molecule run as part of CI process [\#166](https://github.com/dj-wasabi/ansible-telegraf/pull/166) ([dj-wasabi](https://github.com/dj-wasabi))
- update influxdata GPG key after rotation [\#165](https://github.com/dj-wasabi/ansible-telegraf/pull/165) ([Tetha](https://github.com/Tetha))
- Fixed issues with Windows paths containing spaces [\#162](https://github.com/dj-wasabi/ansible-telegraf/pull/162) ([KlettIT](https://github.com/KlettIT))
**Closed issues:**
- Influxdata key rotation causing failure [\#164](https://github.com/dj-wasabi/ansible-telegraf/issues/164)
- Influxdb2 output [\#158](https://github.com/dj-wasabi/ansible-telegraf/issues/158)
## [0.13.3](https://github.com/dj-wasabi/ansible-telegraf/tree/0.13.3) (2022-03-21)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.2...0.13.3)
**Implemented enhancements:**
- Adding support for aggregators [\#156](https://github.com/dj-wasabi/ansible-telegraf/pull/156) ([simo-tuomisto](https://github.com/simo-tuomisto))
- Add support for Rocky Linux [\#147](https://github.com/dj-wasabi/ansible-telegraf/pull/147) ([maxwondercorn](https://github.com/maxwondercorn))
- Add Windows feature of upgrade agents [\#146](https://github.com/dj-wasabi/ansible-telegraf/pull/146) ([PeterSzegedi](https://github.com/PeterSzegedi))
**Merged pull requests:**
- Improve usage on SUSE releases [\#155](https://github.com/dj-wasabi/ansible-telegraf/pull/155) ([jeffmahoney](https://github.com/jeffmahoney))
- Add variable for openSUSE RPM repository [\#151](https://github.com/dj-wasabi/ansible-telegraf/pull/151) ([kingphil](https://github.com/kingphil))
- Fixed issues with Windows paths containing spaces & removed redundant "telegraf" folder in path [\#144](https://github.com/dj-wasabi/ansible-telegraf/pull/144) ([treanorjp](https://github.com/treanorjp))
## [0.13.2](https://github.com/dj-wasabi/ansible-telegraf/tree/0.13.2) (2021-03-05)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.1...0.13.2)
**Implemented enhancements:**
- Remove telegraf repository after switching to online method [\#142](https://github.com/dj-wasabi/ansible-telegraf/pull/142) ([djerfy](https://github.com/djerfy))
**Merged pull requests:**
- Fix spacing for telegraf\_plugins\_extra example in readme.md [\#143](https://github.com/dj-wasabi/ansible-telegraf/pull/143) ([isclever](https://github.com/isclever))
## [0.13.1](https://github.com/dj-wasabi/ansible-telegraf/tree/0.13.1) (2021-01-06)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.0...0.13.1)
**Implemented enhancements:**
- Added GH Action to automatically update CHANGELOG.md [\#141](https://github.com/dj-wasabi/ansible-telegraf/pull/141) ([dj-wasabi](https://github.com/dj-wasabi))
**Fixed bugs:**
- adjustments for Windows \>= 1.15 [\#139](https://github.com/dj-wasabi/ansible-telegraf/pull/139) ([billabongrob](https://github.com/billabongrob))
**Closed issues:**
- Newer versions of Telegraf fail on Windows [\#138](https://github.com/dj-wasabi/ansible-telegraf/issues/138)
**Merged pull requests:**
- Added property telegraf\_agent\_docker\_image\_version for using a specific version of the Docker image [\#137](https://github.com/dj-wasabi/ansible-telegraf/pull/137) ([dj-wasabi](https://github.com/dj-wasabi))
- Apply ansible-lint in pre-commit hook and fix changes [\#136](https://github.com/dj-wasabi/ansible-telegraf/pull/136) ([dj-wasabi](https://github.com/dj-wasabi))
- Using version as version\_compare is deprecated [\#135](https://github.com/dj-wasabi/ansible-telegraf/pull/135) ([dj-wasabi](https://github.com/dj-wasabi))
- Using command instead of shell module [\#134](https://github.com/dj-wasabi/ansible-telegraf/pull/134) ([dj-wasabi](https://github.com/dj-wasabi))
## [0.13.0](https://github.com/dj-wasabi/ansible-telegraf/tree/0.13.0) (2020-10-16)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.12.0...0.13.0)

View File

@ -1,40 +1,59 @@
A. Binzxxxxxx
Alejandro
Angristan
Anthony ARNAUD
Carl Bäckström
DEvil0000
DJΞRFY
Dan Clough
Daniel Werdermann
Diego Nava
Emerson Knapp
Farshad Nematdoust
Greg
Harald Kraemer
Heckel, Robert J
Ilkka Tengvall
Ismael
Jack Ivy
Jeff Mahoney
Jeroen Geusebroek
Klett IT
Kyle
Laurent Hoss
Lex Rivera
Marcin Wito
Markus Langer
Matt
Max Nasonov
Miro Prasil
Miroslav Prasil
NotDead
Olivier Boukili
Pascal
Pavel Savchenko
PeterSzegedi
Pieter Lexis (TomTom)
Puneeth Nanjundaswamy
Rick Box
Rohit Gohri
Romain BUREAU
Ryan Conway
Simo Tuomisto
Slawomir Skowron
Steve Durrheimer
Steven Wirges
TheCodeAssassin
Thomas Szymanski
ThorstenHeck
Troy Jendra
Werner Dijkerman
Werner Dijkerman [GH bot]
aroglian
dependabot[bot]
gaelL
kingphil
maxwondercorn
or
treanorjp
zend0

View File

@ -55,6 +55,7 @@ This role supports the following systems:
* (Open)Suse
* Windows (Best effort)
* FreeBSD (Best effort)
* Archlinux (only "online" mode)
So, you'll need one of those systems.. :-)
Please sent Pull Requests or suggestions when you want to use this role for other systems.
@ -233,6 +234,10 @@ _Supporting Windows is an best effort (I don't have the possibility to either te
* `telegraf_win_logfile`: The location to the logfile of Telegraf.
* `telegraf_win_include`: The directory that will contain all plugin configuration.
## openSUSE specific Variables
* `telegraf_zypper_baseurl`: The URL to the openSUSE repository that hosts Telegraf (for example, for openSUSE Leap: "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Leap_{{ ansible_distribution_version }}/"). If this is unspecified, a default repository will be used.
## MacOS specific Variables
**NOTE**
@ -285,6 +290,7 @@ Telegraf plugin options:
* `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)
* `sub_inputs`: If the input requires other sub inputs, you can add them here (see example below).
An example might look like this:
@ -321,6 +327,30 @@ When you want to make use of the `grok` filter for the logparser:
config:
- patterns = ["invoked oom-killer"]
When you want to include a sub inputs with their own configuration:
```yaml
sqs:
plugin: cloudwatch
config:
- region = "eu-west-1"
- access_key = "foo"
- secret_key = "bar"
- period = "1m"
- delay = "2m"
- interval = "1m"
- namespace = "AWS/SQS"
- statistic_include = ["average"]
sub_inputs:
metrics:
- names = [
"ApproximateAgeOfOldestMessage",
"ApproximateNumberOfMessagesVisible",
]
metrics.dimensions:
- name = "QueueName"
- value = "*"
```
## Dependencies
No dependencies

View File

@ -2,7 +2,7 @@
telegraf_enabled: True
# defaults file for ansible-telegraf
telegraf_agent_version: 1.10.0
telegraf_agent_version: 1.32.3
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
@ -19,6 +19,7 @@ telegraf_agent_flush_jitter: 0
telegraf_agent_aws_tags: False
telegraf_agent_aws_tags_prefix: ""
telegraf_agent_config_path: /etc/telegraf
telegraf_win_logfile_rotation_max_archives: 3
# Docker specific settings
telegraf_uid_docker: 998
@ -54,7 +55,7 @@ telegraf_plugins_default:
config:
- percpu = true
- plugin: disk
- plugin: io
- plugin: diskio
- plugin: mem
- plugin: net
- plugin: system
@ -75,15 +76,22 @@ telegraf_yum_baseurl:
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"
rocky: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
almalinux: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
telegraf_yum_gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key"
telegraf_zypper_repos:
"opensuse tumbleweed": "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/"
"default": "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/"
"sles": "http://download.opensuse.org/repositories/devel:/languages:/go/SLE_{{ ansible_distribution_major_version }}_SP{{ ansible_distribution_release }}/"
"opensuse leap": "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Leap_{{ ansible_distribution_version }}/"
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 }}
- '-config "{{ telegraf_win_install_dir }}\telegraf.conf"'
- '--config-directory "{{ telegraf_win_include }}"'
telegraf_mac_user: user
telegraf_mac_group: admin

View File

@ -1,212 +0,0 @@
#! /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

@ -5,21 +5,25 @@
service:
name: telegraf
state: restarted
enabled: yes
enabled: true
when: not telegraf_agent_docker
become: yes
become: true
ignore_errors: "{{ ansible_check_mode }}"
- name: "Restart Telegraf container"
docker_container:
name: "{{ telegraf_agent_docker_name }}"
restart: True
when: telegraf_agent_docker
ignore_errors: "{{ ansible_check_mode }}"
- name: "Restart Windows Telegraf"
win_service:
name: Telegraf
start_mode: auto
state: restarted
ignore_errors: "{{ ansible_check_mode }}"
- name: "Restart MacOS Telegraf"
command: brew services restart telegraf
ignore_errors: "{{ ansible_check_mode }}"

View File

@ -4,6 +4,7 @@ dependency:
driver:
name: docker
role_name_check: 1
platforms:
- name: influxdb
image: influxdb:1.7-alpine
@ -19,10 +20,11 @@ platforms:
command: ${MY_MOLECULE_DOCKER_COMMAND:-""}
privileged: True
pre_build_image: True
cgroupns_mode: host
networks:
- name: telegraf
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /sys/fs/cgroup:/sys/fs/cgroup:rw
groups:
- telegraf
@ -52,10 +54,15 @@ provisioner:
name: grok
config:
- patterns = ["invoked oom-killer"]
telegraf_aggregators:
- aggregator: basicstats
config:
- drop_original = false
- stats = ['mean']
tagpass:
- cpu = ["cpu-total"]
scenario:
name: default
verifier:
name: testinfra
lint:
name: flake8

View File

@ -10,10 +10,21 @@
- ansible_os_family == 'RedHat'
- name: "Apt get update"
shell: apt-get update && apt-get install -y python-apt
shell: apt-get update
when:
- ansible_os_family == 'Debian'
- name: "Installing packages on Debian"
apt:
name:
- wget
- "{{ 'gnupg-agent' if ansible_distribution_major_version in ['8', '18', '16'] else 'gpg-agent' }}"
update_cache: True
state: present
when:
- ansible_os_family == 'Debian'
- ansible_distribution_major_version not in [9, 10]
- name: "Installing packages on Debian"
apt:
name:
@ -24,12 +35,11 @@
state: present
when:
- ansible_os_family == 'Debian'
- ansible_distribution_major_version in [9, 10]
- name: "Installing packages on Suse"
zypper:
name:
- sysvinit-tools
- insserv-compat
- aaa_base
state: present
when:

View File

@ -24,6 +24,7 @@ def test_telegraf_dot_conf(host):
assert telegraf.contains('[[outputs.influxdb]]')
assert telegraf.contains('["http://influxdb:8086"]')
assert telegraf.contains('[[inputs.net]]')
assert telegraf.contains('[[aggregators.basicstats]]')
def test_telegraf_dot_d_dir(host):

View File

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

View File

@ -0,0 +1,70 @@
---
dependency:
name: galaxy
driver:
name: docker
role_name_check: 1
platforms:
- 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
cgroupns_mode: host
networks:
- name: telegraf
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
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"]
telegraf_aggregators:
- aggregator: basicstats
config:
- drop_original = false
- stats = ['mean']
tagpass:
- cpu = ["cpu-total"]
scenario:
name: empty-checkmode
test_sequence:
- dependency
- cleanup
- destroy
- syntax
- create
- prepare
- check
- verify
- cleanup
- destroy
verifier:
name: testinfra

View File

@ -0,0 +1,46 @@
---
- 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
when:
- ansible_os_family == 'Debian'
- name: "Installing packages on Debian"
apt:
name:
- wget
- "{{ 'gnupg-agent' if ansible_distribution_major_version in ['8', '18', '16'] else 'gpg-agent' }}"
update_cache: True
state: present
when:
- ansible_os_family == 'Debian'
- ansible_distribution_major_version not in [9, 10]
- 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'
- ansible_distribution_major_version in [9, 10]
- name: "Installing packages on Suse"
zypper:
name:
- aaa_base
state: present
when:
- ansible_os_family == 'Suse'

View File

@ -0,0 +1,32 @@
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 not telegraf.is_enabled
assert not telegraf.is_running
def test_telegraf_dot_conf(host):
telegraf = host.file("/etc/telegraf/telegraf.conf")
assert not telegraf.exists
def test_telegraf_dot_d_dir(host):
telegraf = host.file("/etc/telegraf/telegraf.d")
assert not telegraf.exists
def test_telegraf_dot_d(host):
telegraf = host.file("/etc/telegraf/telegraf.d/logparser.conf")
assert not telegraf.exists
def test_telegraf_package(host):
telegraf = host.package('telegraf')
assert not telegraf.is_installed

11
requirements.txt Normal file
View File

@ -0,0 +1,11 @@
ansible==9.7.0
ansible-compat==24.10.0
ansible-core==2.16.8
docker==7.1.0
molecule==6.0.3
molecule-docker==2.1.0
molecule-plugins==23.5.3
netaddr==1.3.0
pytest==8.3.3
pytest-testinfra==10.1.1
testinfra==6.0.0

86
tasks/Archlinux.yml Normal file
View File

@ -0,0 +1,86 @@
---
- name: "Archlinux | Set name if state != latest"
set_fact:
telegraf_agent_binary: telegraf={{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}
when:
- telegraf_agent_package_state != "latest"
- name: "Archlinux | Set telegraf_agent_package_arch"
set_fact:
telegraf_agent_package_arch: "{{ ansible_architecture }}"
- name: "Archlinux | Set telegraf_agent_package_arch specific for x86_64"
set_fact:
telegraf_agent_package_arch: "amd64"
when:
- ansible_architecture == "x86_64"
- name: "Archlinux | Set telegraf_agent_package_arch specific for arm64/armv7l"
set_fact:
telegraf_agent_package_arch: "armhf"
when:
- ansible_architecture == "arm64" or ansible_architecture == "armv7l"
- name: "Archlinux | Create telegraf user"
user:
name: telegraf
system: yes
shell: /bin/false
home: /etc/telegraf
when:
- telegraf_agent_package_method == "online"
- name: "Archlinux | Create telegraf directory"
file:
path: /etc/telegraf
state: directory
when:
- telegraf_agent_package_method == "online"
- name: "Archlinux | Extract telegraf binary"
ansible.builtin.unarchive:
src: "https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}_linux_{{ telegraf_agent_package_arch }}.tar.gz"
dest: /tmp/
remote_src: yes
when:
- telegraf_agent_package_method == "online"
- name: "Archlinux | Copy telegraf binary"
ansible.builtin.copy:
src: "/tmp/telegraf-{{ telegraf_agent_version }}/usr/bin/telegraf"
remote_src: yes
dest: /usr/bin/
owner: root
group: root
mode: 0755
when:
- telegraf_agent_package_method == "online"
- name: "Archlinux | Copy telegraf unit file"
ansible.builtin.copy:
src: "/tmp/telegraf-{{ telegraf_agent_version }}/usr/lib/telegraf/scripts/telegraf.service"
remote_src: yes
dest: /etc/systemd/system/telegraf.service
owner: root
group: root
mode: 0755
when:
- telegraf_agent_package_method == "online"
- name: "Archlinux | Copy telegraf unit file"
ansible.builtin.copy:
src: "/tmp/telegraf-{{ telegraf_agent_version }}/usr/lib/telegraf/scripts/telegraf.service"
remote_src: yes
dest: /etc/systemd/system/telegraf.service
owner: root
group: root
mode: 0755
when:
- telegraf_agent_package_method == "online"
register: telegraf_service
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: yes
when: telegraf_service.changed

View File

@ -35,39 +35,80 @@
until: are_telegraf_dependencies_packages_installed is succeeded
when:
- not apt_https_transport.stat.exists
become: yes
become: true
- name: "Debian | Download Telegraf apt key"
- name: "Debian | Configure Telegraf apt repository"
when:
- telegraf_agent_package_method == "repo"
block:
- when: (ansible_distribution == "Debian" and ansible_distribution_major_version|int < 9) or (ansible_distribution == "Ubuntu" and ansible_distribution_major_version|int < 18)
name: "Debian | Download Telegraf apt key"
apt_key:
url: "https://repos.influxdata.com/influxdb.key"
id: 2582E0C5
url: "https://repos.influxdata.com/influxdata-archive.key"
id: 7df8b07e
state: present
register: are_telegraf_dependencies_keys_installed
until: are_telegraf_dependencies_keys_installed is succeeded
become: yes
when:
- telegraf_agent_package_method == "repo"
become: true
- when: (ansible_distribution == "Debian" and ansible_distribution_major_version|int >= 9) or (ansible_distribution == "Ubuntu" and ansible_distribution_major_version|int >= 18)
block:
- name: "Debian | Ensure the shared keyrings directory exists"
stat:
path: /usr/share/keyrings
register: usr_share_keyrings
- 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
- name: "Debian | Create shared keyrings directory"
file:
state: directory
path: /usr/share/keyrings
owner: root
group: root
mode: 0755
when:
- telegraf_agent_package_method == "repo"
- ansible_lsb is defined
- ansible_lsb.codename is defined
- not usr_share_keyrings.stat.exists
become: true
- name: "Debian | Install Telegraf apt key"
get_url:
url: https://repos.influxdata.com/influxdata-archive.key
dest: /usr/share/keyrings/influxdata-archive.asc
register: are_telegraf_dependencies_keys_installed
until: are_telegraf_dependencies_keys_installed is succeeded
become: true
- name: "Debian | Set Telegraf apt repository parameters"
set_fact:
telegraf_repository_params: "[signed-by=/usr/share/keyrings/influxdata-archive.asc]"
- name: "Debian | Add Telegraf repository"
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
filename: "telegraf"
state: present
copy:
content: "deb {{ telegraf_repository_params | default('') }} https://repos.influxdata.com/{{ ansible_distribution|lower }} stable main"
dest: /etc/apt/sources.list.d/telegraf.list
become: yes
- name: "Debian | Install Telegraf package (repo)"
apt:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
update_cache: true
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
become: true
when:
- telegraf_agent_package_method == "repo"
- ansible_lsb is not defined or ansible_lsb.codename is not defined
ignore_errors: "{{ ansible_check_mode }}"
- name: "Debian | Install Telegraf package (repo)"
apt:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
update_cache: true
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
become: true
ignore_errors: "{{ ansible_check_mode }}"
- name: "Debian | Download Telegraf package (online)"
get_url:
@ -80,25 +121,23 @@
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"
become: yes
when:
- telegraf_agent_package_method == "repo"
- name: "Debian | Install Telegraf package"
- name: "Debian | Install Telegraf package (online)"
apt:
deb: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}"
state: "present"
allow_downgrade: true
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
become: yes
become: true
when:
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"
ignore_errors: "{{ ansible_check_mode }}"
- name: "Debian | Remove repository (online/offline install)"
file:
path: "/etc/apt/sources.list.d/telegraf.list"
state: absent
become: true
when:
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"

View File

@ -17,17 +17,17 @@
yum_repository:
name: influxdb
description: InfluxDB Repository - RHEL $releasever
baseurl: "{{ telegraf_yum_baseurl[ansible_distribution|lower] | default(telegraf_yum_baseurl['default']) }}"
baseurl: "{{ telegraf_yum_baseurl['redhat'] | default(telegraf_yum_baseurl['default']) }}"
gpgcheck: "{{ telegraf_yum_gpgcheck | default('true') }}"
gpgkey: "{{ telegraf_yum_gpgkey }}"
become: yes
become: true
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 }}"
dest: "{{ telegraf_agent_package_path }}"
use_proxy: "{{ true if http_proxy is defined and http_proxy else false }}"
environment:
http_proxy: "{{ http_proxy | default(None) | default(omit) }}"
@ -35,11 +35,28 @@
when:
- telegraf_agent_package_method == "online"
- name: "RedHat | Install Telegraf package"
- name: "RedHat | Install Telegraf package (repo)"
package:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
become: yes
become: true
notify: "Restart Telegraf"
ignore_errors: "{{ ansible_check_mode }}"
when:
- telegraf_agent_package_method == "repo"
- name: "RedHat | Install Telegraf package (online)"
dnf:
name: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package_file_rpm }}"
disable_gpg_check: true
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
become: true
notify: "Restart Telegraf"
ignore_errors: "{{ ansible_check_mode }}"
when:
- telegraf_agent_package_method == "online"

View File

@ -10,25 +10,50 @@
name: telegraf
group: telegraf
state: present
become: yes
become: true
- name: "Suse | Install repo dependencies"
- name: "Suse | Install repo dependencies for Python 2"
zypper:
name: ["python-libxml2", "python-xml"]
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
become: true
when: ansible_python.version.major == 2
- name: "Suse | Install basic repo file"
- name: "Suse | Install repo dependencies for Python >= 3"
zypper:
name:
- python3-libxml2-python
update_cache: True
state: present
register: are_telegraf_dependencies_packages_installed
until: are_telegraf_dependencies_packages_installed is succeeded
become: true
when: ansible_python.version.major >= 3
- name: "Suse | Add default Open Build Service repository"
zypper_repository:
repo: "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/"
name: The Go Programming Language (openSUSE_Factory)
repo: "{{ telegraf_zypper_repos[ansible_distribution|lower] | default(telegraf_zypper_repos['default']) }}"
name: "telegraf"
state: present
runrefresh: True
auto_import_keys: True
become: yes
become: true
when: telegraf_zypper_baseurl is not defined
- name: "Suse | Add specified package repository"
zypper_repository:
repo: "{{ telegraf_zypper_baseurl }}"
name: "telegraf"
state: present
runrefresh: True
auto_import_keys: True
become: true
when: telegraf_zypper_baseurl is defined
- name: "Suse | Install Telegraf"
zypper:
@ -36,7 +61,8 @@
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
become: yes
become: true
ignore_errors: "{{ ansible_check_mode }}"
- name: "Suse | Create directories for telegraf"
file:
@ -49,9 +75,3 @@
owner: root
- path: /var/log/telegraf
owner: telegraf
- name: "Suse | Install init file"
copy:
src: telegraf.init
dest: /etc/init.d/telegraf
mode: 0755

View File

@ -13,10 +13,9 @@
- ansible_os_family == "FreeBSD"
- name: Retrieve all ec2 tags on the instance
ec2_tag:
amazon.aws.ec2_tag_info:
region: '{{ ansible_ec2_placement_region }}'
resource: '{{ ansible_ec2_instance_id }}'
state: list
when:
- telegraf_agent_aws_tags
register: ec2_tags
@ -28,7 +27,7 @@
owner: telegraf
group: telegraf
mode: 0640
become: yes
become: true
when:
- telegraf_agent_version is version('0.10.0', '<')
notify:
@ -42,7 +41,7 @@
owner: telegraf
group: telegraf
mode: 0640
become: yes
become: true
when:
- telegraf_agent_version is version('0.10.0', '>=')
notify:
@ -63,7 +62,7 @@
when:
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
become: true
notify:
- Restart Telegraf
- Restart Telegraf container
@ -78,7 +77,7 @@
when:
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
become: true
notify:
- Restart Telegraf
- Restart Telegraf container
@ -97,7 +96,7 @@
- telegraf_plugins_extra is defined
- telegraf_plugins_extra is iterable
- item.value.state|default('present') != 'absent'
become: yes
become: true
notify:
- Restart Telegraf
- Restart Telegraf container
@ -113,7 +112,7 @@
- telegraf_plugins_extra is defined
- telegraf_plugins_extra is iterable
- item.value.state|default('present') == 'absent'
become: yes
become: true
notify:
- Restart Telegraf
- Restart Telegraf container
@ -126,8 +125,9 @@
name: telegraf
state: "{{ telegraf_enabled | ternary('started', 'stopped') }}"
enabled: "{{ telegraf_enabled }}"
become: yes
become: true
when: not telegraf_agent_docker
ignore_errors: "{{ ansible_check_mode }}"
- name: Configure system for for docker plugin
block:

View File

@ -13,10 +13,9 @@
- ansible_os_family in ["FreeBSD", "Darwin"]
- name: Retrieve all ec2 tags on the instance
ec2_tag:
amazon.aws.ec2_tag_info:
region: '{{ ansible_ec2_placement_region }}'
resource: '{{ ansible_ec2_instance_id }}'
state: list
when:
- telegraf_agent_aws_tags
register: ec2_tags
@ -28,7 +27,7 @@
owner: "{{ telegraf_mac_user }}"
group: "{{ telegraf_mac_group }}"
mode: 0640
become: yes
become: true
when:
- telegraf_agent_version is version('0.10.0', '<')
notify:
@ -42,7 +41,7 @@
owner: "{{ telegraf_mac_user }}"
group: "{{ telegraf_mac_group }}"
mode: 0640
become: yes
become: true
when:
- telegraf_agent_version is version('0.10.0', '>=')
notify:
@ -63,7 +62,7 @@
when:
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
become: true
notify:
- Restart MacOS Telegraf
- Restart Telegraf container
@ -78,7 +77,7 @@
when:
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
become: true
notify:
- Restart MacOS Telegraf
- Restart Telegraf container
@ -97,7 +96,7 @@
- telegraf_plugins_extra is defined
- telegraf_plugins_extra is iterable
- item.value.state|default('present') != 'absent'
become: yes
become: true
notify:
- Restart MacOS Telegraf
- Restart Telegraf container
@ -113,7 +112,7 @@
- telegraf_plugins_extra is defined
- telegraf_plugins_extra is iterable
- item.value.state|default('present') == 'absent'
become: yes
become: true
notify:
- Restart MacOS Telegraf
- Restart Telegraf container
@ -126,3 +125,4 @@
register: brew_services_start_telegraf
changed_when: '"Successfully started `telegraf`" in brew_services_start_telegraf.stdout'
when: not telegraf_agent_docker
ignore_errors: "{{ ansible_check_mode }}"

View File

@ -29,23 +29,30 @@
- name: "Windows | Move extracted directory (newer than 1.15)"
win_copy:
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}\'
dest: '{{ telegraf_win_install_dir }}\telegraf'
remote_src: yes
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}\telegraf.exe'
dest: '{{ telegraf_win_install_dir }}\telegraf.exe'
remote_src: true
when: telegraf_agent_version is version('1.15', '>=')
- 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'
delete_archive: yes
creates: '{{ telegraf_win_install_dir }}\telegraf.exe'
delete_archive: true
when: telegraf_agent_version is version('1.15', '<')
- name: "Windows | Move extracted executable"
win_copy:
src: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe'
dest: '{{ telegraf_win_install_dir }}\telegraf.exe'
remote_src: true
when: telegraf_agent_version is version('1.15', '<')
- name: "Windows | Configure Telegraf"
win_template:
src: telegraf.conf.j2
dest: '{{ telegraf_win_install_dir }}\telegraf\telegraf.conf'
dest: '{{ telegraf_win_install_dir }}\telegraf.conf'
notify: "Restart Windows Telegraf"
- name: "Windows | Copy telegraf extra plugins"
@ -74,18 +81,31 @@
- 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 | Check if Telegraf service is already in place"
win_service:
name: telegraf
register: service_result
failed_when: service_result is not defined
- name: "Windows | Create done file so it won't register itself again"
win_file:
path: '{{ telegraf_win_install_dir }}\.installed'
state: touch
- debug: msg={{ service_result }}
- name: "Windows | Set service startup mode to auto and ensure it is started"
win_service:
name: Telegraf
start_mode: auto
state: stopped
when:
- telegraf_windows_install is changed
- service_result.exists
- name: "Windows | Unregister Service"
win_command: '"{{ telegraf_win_install_dir }}\telegraf.exe" --service uninstall'
register: telegraf_windows_uninstall
when:
- service_result.exists
- name: "Windows | Register Service"
win_command: '"{{ telegraf_win_install_dir }}\telegraf.exe" {{ telegraf_win_service_args | join(" ") }}'
register: telegraf_windows_install
- name: "Windows | Set service startup mode to auto and ensure it is started"
win_service:

View File

@ -15,7 +15,7 @@
home: /etc/telegraf
uid: "{{ telegraf_uid_docker }}"
system: True
become: yes
become: true
- name: Create /etc/telegraf (home) directory
file:
@ -24,7 +24,7 @@
group: telegraf
mode: 0750
state: directory
become: yes
become: true
- name: Create /etc/telegraf.d directory
file:
@ -33,7 +33,7 @@
group: telegraf
mode: 0750
state: directory
become: yes
become: true
- name: Ensure Telegraf Docker container is running
docker_container:

View File

@ -14,6 +14,11 @@
- telegraf
- packages
- name: "Install on Archlinux"
include_tasks: "Archlinux.yml"
when:
- ansible_os_family == "Archlinux" and not telegraf_agent_docker
- name: "Install on Suse"
include_tasks: "Suse.yml"
when: ansible_os_family == "Suse" and not telegraf_agent_docker

View File

@ -55,3 +55,11 @@
{% endfor %}
{% endfor %}
{% endif %}
{% if item.value.sub_inputs is defined and item.value.sub_inputs is iterable %}
{% for sub_input, config in item.value.sub_inputs.items() %}
[[inputs.{{ item.value.plugin | default(item.key) }}.{{ sub_input }}]]
{% for items in config %}
{{ items }}
{% endfor %}
{% endfor %}
{% endif %}

View File

@ -30,6 +30,9 @@
{% if telegraf_agent_version is version_compare('1.1', '>=') %}
{% if ansible_os_family == "Windows" %}
logfile = "{{ telegraf_win_logfile }}"
logfile_rotation_interval = "{{ telegraf_win_logfile_rotation_interval }}"
logfile_rotation_max_size = "{{ telegraf_win_logfile_rotation_max_size }}"
logfile_rotation_max_archives = {{ telegraf_win_logfile_rotation_max_archives| int }}
{% else %}
logfile = "{{ telegraf_agent_logfile }}"
{% endif %}
@ -126,5 +129,44 @@
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[processors.{{ item.processor }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[processors.{{ item.processor }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
###############################################################################
# AGGREGATORS #
###############################################################################
{% if telegraf_aggregators is defined and telegraf_aggregators is iterable %}
{% for item in telegraf_aggregators %}
[[aggregators.{{ item.aggregator }}]]
{% 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 %}
[aggregators.{{ item.aggregator }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[aggregators.{{ item.aggregator }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}