20 Commits

Author SHA1 Message Date
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
12 changed files with 198 additions and 248 deletions

View File

@ -1,5 +1,56 @@
# Changelog # Changelog
## [Unreleased](https://github.com/dj-wasabi/ansible-telegraf/tree/HEAD)
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.2...HEAD)
**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) ## [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) [Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.12.0...0.13.0)

View File

@ -3,10 +3,13 @@
Anthony ARNAUD Anthony ARNAUD
Carl Bäckström Carl Bäckström
DEvil0000 DEvil0000
DJΞRFY
Daniel Werdermann Daniel Werdermann
Diego Nava Diego Nava
Emerson Knapp Emerson Knapp
Farshad Nematdoust Farshad Nematdoust
Greg
Heckel, Robert J
Ilkka Tengvall Ilkka Tengvall
Ismael Ismael
Jack Ivy Jack Ivy
@ -34,6 +37,7 @@
Thomas Szymanski Thomas Szymanski
Troy Jendra Troy Jendra
Werner Dijkerman Werner Dijkerman
Werner Dijkerman [GH bot]
aroglian aroglian
gaelL gaelL
or or

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_logfile`: The location to the logfile of Telegraf.
* `telegraf_win_include`: The directory that will contain all plugin configuration. * `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 ## MacOS specific Variables
**NOTE** **NOTE**
@ -271,9 +275,9 @@ The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific t
cat group_vars/mysql_database cat group_vars/mysql_database
telegraf_plugins_extra: telegraf_plugins_extra:
mysql: mysql:
config: config:
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"] - servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
There is an option to delete extra-plugin files in /etc/telegraf/telegraf.d if they weren't generated by this playbook with `telegraf_plugins_extra_exclusive` variable. There is an option to delete extra-plugin files in /etc/telegraf/telegraf.d if they weren't generated by this playbook with `telegraf_plugins_extra_exclusive` variable.

View File

@ -2,7 +2,7 @@
telegraf_enabled: True telegraf_enabled: True
# defaults file for ansible-telegraf # defaults file for ansible-telegraf
telegraf_agent_version: 1.10.0 telegraf_agent_version: 1.18.2
telegraf_agent_version_patch: 1 telegraf_agent_version_patch: 1
telegraf_agent_package: telegraf telegraf_agent_package: telegraf
telegraf_agent_package_file_deb: telegraf_{{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}_{{ telegraf_agent_package_arch }}.deb telegraf_agent_package_file_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: False
telegraf_agent_aws_tags_prefix: "" telegraf_agent_aws_tags_prefix: ""
telegraf_agent_config_path: /etc/telegraf telegraf_agent_config_path: /etc/telegraf
telegraf_win_logfile_rotation_max_archives: 3
# Docker specific settings # Docker specific settings
telegraf_uid_docker: 998 telegraf_uid_docker: 998
@ -75,14 +76,21 @@ telegraf_yum_baseurl:
centos: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable" centos: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
default: "https://repos.influxdata.com/{{ ansible_distribution|lower }}/{{ telegraf_redhat_releasever }}/$basearch/stable" default: "https://repos.influxdata.com/{{ ansible_distribution|lower }}/{{ telegraf_redhat_releasever }}/$basearch/stable"
redhat: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable" redhat: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
rocky: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
telegraf_yum_gpgkey: "https://repos.influxdata.com/influxdb.key" telegraf_yum_gpgkey: "https://repos.influxdata.com/influxdb.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_install_dir: 'C:\Telegraf'
telegraf_win_logfile: 'C:\\Telegraf\\telegraf.log' telegraf_win_logfile: 'C:\\Telegraf\\telegraf.log'
telegraf_win_include: 'C:\Telegraf\telegraf_agent.d' telegraf_win_include: 'C:\Telegraf\telegraf_agent.d'
telegraf_win_service_args: telegraf_win_service_args:
- -service install - -service install
- -config {{ telegraf_win_install_dir }}\telegraf\telegraf.conf - -config {{ telegraf_win_install_dir }}\telegraf.conf
- --config-directory {{ telegraf_win_include }} - --config-directory {{ telegraf_win_include }}
telegraf_mac_user: user telegraf_mac_user: user

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

@ -52,6 +52,13 @@ provisioner:
name: grok name: grok
config: config:
- patterns = ["invoked oom-killer"] - patterns = ["invoked oom-killer"]
telegraf_aggregators:
- aggregator: basicstats
config:
- drop_original = false
- stats = ['mean']
tagpass:
- cpu = ["cpu-total"]
scenario: scenario:
name: default name: default

View File

@ -28,8 +28,6 @@
- name: "Installing packages on Suse" - name: "Installing packages on Suse"
zypper: zypper:
name: name:
- sysvinit-tools
- insserv-compat
- aaa_base - aaa_base
state: present state: present
when: when:

View File

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

View File

@ -80,7 +80,7 @@
when: when:
- telegraf_agent_package_method == "online" - telegraf_agent_package_method == "online"
- name: "Debian | Install Telegraf package" - name: "Debian | Install Telegraf package (repo)"
apt: apt:
name: "{{ telegraf_agent_package }}" name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}" state: "{{ telegraf_agent_package_state }}"
@ -92,7 +92,7 @@
when: when:
- telegraf_agent_package_method == "repo" - telegraf_agent_package_method == "repo"
- name: "Debian | Install Telegraf package" - name: "Debian | Install Telegraf package (online)"
apt: apt:
deb: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}" deb: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}"
state: "present" state: "present"
@ -102,3 +102,11 @@
become: yes become: yes
when: when:
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline" - telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"
- name: "Debian | Remove repository (online/offline install)"
file:
path: "/etc/apt/sources.list.d/telegraf.list"
state: absent
become: yes
when:
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"

View File

@ -12,23 +12,48 @@
state: present state: present
become: yes become: yes
- name: "Suse | Install repo dependencies" - name: "Suse | Install repo dependencies for Python 2"
zypper: zypper:
name: ["python-libxml2", "python-xml"] name:
- python-libxml2
- python-xml
update_cache: True update_cache: True
state: present state: present
register: are_telegraf_dependencies_packages_installed register: are_telegraf_dependencies_packages_installed
until: are_telegraf_dependencies_packages_installed is succeeded until: are_telegraf_dependencies_packages_installed is succeeded
become: yes 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: zypper_repository:
repo: "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/" repo: "{{ telegraf_zypper_repos[ansible_distribution|lower] | default(telegraf_zypper_repos['default']) }}"
name: The Go Programming Language (openSUSE_Factory) name: "telegraf"
state: present state: present
runrefresh: True runrefresh: True
auto_import_keys: True auto_import_keys: True
become: yes 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" - name: "Suse | Install Telegraf"
zypper: zypper:
@ -49,9 +74,3 @@
owner: root owner: root
- path: /var/log/telegraf - path: /var/log/telegraf
owner: 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)" - name: "Windows | Move extracted directory (newer than 1.15)"
win_copy: win_copy:
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}\' src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}\telegraf.exe'
dest: '{{ telegraf_win_install_dir }}\telegraf' dest: '{{ telegraf_win_install_dir }}\telegraf.exe'
remote_src: yes remote_src: yes
when: telegraf_agent_version is version('1.15', '>=') when: telegraf_agent_version is version('1.15', '>=')
@ -38,14 +38,21 @@
win_unzip: win_unzip:
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip' src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
dest: '{{ telegraf_win_install_dir }}' dest: '{{ telegraf_win_install_dir }}'
creates: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe' creates: '{{ telegraf_win_install_dir }}\telegraf.exe'
delete_archive: yes delete_archive: yes
when: telegraf_agent_version is version('1.15', '<') 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" - name: "Windows | Configure Telegraf"
win_template: win_template:
src: telegraf.conf.j2 src: telegraf.conf.j2
dest: '{{ telegraf_win_install_dir }}\telegraf\telegraf.conf' dest: '{{ telegraf_win_install_dir }}\telegraf.conf'
notify: "Restart Windows Telegraf" notify: "Restart Windows Telegraf"
- name: "Windows | Copy telegraf extra plugins" - name: "Windows | Copy telegraf extra plugins"
@ -74,18 +81,31 @@
- item.value.state|default('present') == 'absent' - item.value.state|default('present') == 'absent'
notify: "Restart Windows Telegraf" notify: "Restart Windows Telegraf"
- name: "Windows | Register Service" - name: "Windows | Check if Telegraf service is already in place"
win_command: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe {{ telegraf_win_service_args | join(" ") }}' win_service:
register: telegraf_windows_install name: telegraf
args: register: service_result
creates: '{{ telegraf_win_install_dir }}\.installed' failed_when: service_result is not defined
- name: "Windows | Create done file so it won't register itself again" - debug: msg={{ service_result }}
win_file:
path: '{{ telegraf_win_install_dir }}\.installed' - name: "Windows | Set service startup mode to auto and ensure it is started"
state: touch win_service:
name: Telegraf
start_mode: auto
state: stopped
when: 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" - name: "Windows | Set service startup mode to auto and ensure it is started"
win_service: win_service:

View File

@ -30,6 +30,9 @@
{% if telegraf_agent_version is version_compare('1.1', '>=') %} {% if telegraf_agent_version is version_compare('1.1', '>=') %}
{% if ansible_os_family == "Windows" %} {% if ansible_os_family == "Windows" %}
logfile = "{{ telegraf_win_logfile }}" 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 %} {% else %}
logfile = "{{ telegraf_agent_logfile }}" logfile = "{{ telegraf_agent_logfile }}"
{% endif %} {% endif %}
@ -115,7 +118,7 @@
{% endif %} {% endif %}
############################################################################### ###############################################################################
# PROCESSORS # # PROCESSORS #
############################################################################### ###############################################################################
{% if telegraf_processors is defined and telegraf_processors is iterable %} {% if telegraf_processors is defined and telegraf_processors is iterable %}
@ -126,5 +129,44 @@
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% 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 %} {% endfor %}
{% endif %} {% endif %}