29 Commits

Author SHA1 Message Date
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
14 changed files with 212 additions and 258 deletions

View File

@ -22,15 +22,17 @@ on:
- '.github/workflows/telegraf.yml'
jobs:
molecule:
runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
molecule_distro:
- container: centos8
image: geerlingguy/docker-centos8-ansible:latest
- container: centos7
image: geerlingguy/docker-centos7-ansible:latest
- container: rocky8
image: geerlingguy/docker-rockylinux8-ansible
# - container: rocky9
# image: geerlingguy/docker-rockylinux9-ansible
- container: ubuntu2004
image: geerlingguy/docker-ubuntu2004-ansible:latest
- container: ubuntu1804
@ -39,16 +41,18 @@ jobs:
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.9
uses: actions/setup-python@v1
with:
python-version: 3.7
python-version: 3.9
- name: Install dependencies
run: |

View File

@ -2,7 +2,45 @@
## [Unreleased](https://github.com/dj-wasabi/ansible-telegraf/tree/HEAD)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.1...HEAD)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.3...HEAD)
**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:**
@ -33,6 +71,7 @@
- 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)
@ -54,7 +93,6 @@
**Merged pull requests:**
- Using command instead of shell module [\#134](https://github.com/dj-wasabi/ansible-telegraf/pull/134) ([dj-wasabi](https://github.com/dj-wasabi))
- corrected "Example Docker configuration" to make it work by default [\#132](https://github.com/dj-wasabi/ansible-telegraf/pull/132) ([NotDead](https://github.com/NotDead))
- Removing requirements file and use it from ci-base repo [\#131](https://github.com/dj-wasabi/ansible-telegraf/pull/131) ([dj-wasabi](https://github.com/dj-wasabi))
- Going to Github Actions [\#130](https://github.com/dj-wasabi/ansible-telegraf/pull/130) ([dj-wasabi](https://github.com/dj-wasabi))

View File

@ -3,14 +3,17 @@
Anthony ARNAUD
Carl Bäckström
DEvil0000
DJΞRFY
Daniel Werdermann
Diego Nava
Emerson Knapp
Farshad Nematdoust
Greg
Heckel, Robert J
Ilkka Tengvall
Ismael
Jack Ivy
Jeff Mahoney
Jeroen Geusebroek
Kyle
Laurent Hoss
@ -23,11 +26,13 @@
Olivier Boukili
Pascal
Pavel Savchenko
PeterSzegedi
Puneeth Nanjundaswamy
Rick Box
Rohit Gohri
Romain BUREAU
Ryan Conway
Simo Tuomisto
Slawomir Skowron
Steve Durrheimer
Steven Wirges
@ -35,7 +40,11 @@
Thomas Szymanski
Troy Jendra
Werner Dijkerman
Werner Dijkerman [GH bot]
aroglian
gaelL
kingphil
maxwondercorn
or
treanorjp
zend0

View File

@ -233,6 +233,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**

View File

@ -2,7 +2,7 @@
telegraf_enabled: True
# defaults file for ansible-telegraf
telegraf_agent_version: 1.10.0
telegraf_agent_version: 1.18.2
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
@ -75,15 +76,21 @@ 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"
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

@ -8,18 +8,22 @@
enabled: yes
when: not telegraf_agent_docker
become: yes
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

@ -52,6 +52,13 @@ 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

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

@ -39,8 +39,8 @@
- 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
@ -96,6 +96,7 @@
apt:
deb: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}"
state: "present"
allow_downgrade: yes
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"

View File

@ -12,23 +12,48 @@
state: present
become: yes
- 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
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: yes
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
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: yes
when: telegraf_zypper_baseurl is defined
- name: "Suse | Install Telegraf"
zypper:
@ -49,9 +74,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

@ -29,8 +29,8 @@
- 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'
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}\telegraf.exe'
dest: '{{ telegraf_win_install_dir }}\telegraf.exe'
remote_src: yes
when: telegraf_agent_version is version('1.15', '>=')
@ -38,14 +38,21 @@
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'
creates: '{{ telegraf_win_install_dir }}\telegraf.exe'
delete_archive: yes
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: yes
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

@ -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 %}