mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
39 Commits
Author | SHA1 | Date | |
---|---|---|---|
68af70ea86 | |||
7c9c047c67 | |||
732dffa435 | |||
570f81a779 | |||
29fb3ea5e0 | |||
c318de1e2e | |||
8a5a7187fa | |||
6f30799a7f | |||
2b8cb8a9d8 | |||
108284cda1 | |||
51c2bb66f5 | |||
bfe52cd752 | |||
b5179f4dfe | |||
c8a2209fe5 | |||
bd5dfd18c1 | |||
870e56c5a7 | |||
5fb03da151 | |||
39bc504fd5 | |||
171ecb0434 | |||
06117f38a1 | |||
d84931411e | |||
d5ab4b07a8 | |||
5c160d6bbe | |||
d36c400cd3 | |||
cec761a336 | |||
da55c4a711 | |||
ccdb9bd98e | |||
94774fbc8d | |||
73c00ab7b6 | |||
f241fd34d0 | |||
4064c8b040 | |||
fdcff0b195 | |||
6b6aa755f6 | |||
ca76832c24 | |||
6f6fdf7f5e | |||
f915bc0bd9 | |||
5066c5c7f9 | |||
adb678a9e5 | |||
b8e8710ccf |
27
.github/workflows/telegraf.yml
vendored
27
.github/workflows/telegraf.yml
vendored
@ -22,25 +22,21 @@ on:
|
||||
- '.github/workflows/telegraf.yml'
|
||||
jobs:
|
||||
molecule:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
molecule_distro:
|
||||
- container: centos7
|
||||
image: geerlingguy/docker-centos7-ansible:latest
|
||||
- container: rocky8
|
||||
image: geerlingguy/docker-rockylinux8-ansible
|
||||
# - container: rocky9
|
||||
# image: geerlingguy/docker-rockylinux9-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: debian10
|
||||
image: geerlingguy/docker-debian10-ansible:latest
|
||||
- container: debian11
|
||||
@ -49,17 +45,24 @@ jobs:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: Set up Python 3.9
|
||||
- name: Set up Python 3.11
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: 3.9
|
||||
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 }}
|
||||
|
58
CHANGELOG.md
58
CHANGELOG.md
@ -2,7 +2,63 @@
|
||||
|
||||
## [Unreleased](https://github.com/dj-wasabi/ansible-telegraf/tree/HEAD)
|
||||
|
||||
[Full Changelog](https://github.com/dj-wasabi/ansible-telegraf/compare/0.13.3...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:**
|
||||
|
||||
|
@ -1,32 +1,39 @@
|
||||
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
|
||||
@ -38,10 +45,12 @@
|
||||
Steven Wirges
|
||||
TheCodeAssassin
|
||||
Thomas Szymanski
|
||||
ThorstenHeck
|
||||
Troy Jendra
|
||||
Werner Dijkerman
|
||||
Werner Dijkerman [GH bot]
|
||||
aroglian
|
||||
dependabot[bot]
|
||||
gaelL
|
||||
kingphil
|
||||
maxwondercorn
|
||||
|
26
README.md
26
README.md
@ -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.
|
||||
@ -289,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:
|
||||
|
||||
@ -325,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
|
||||
|
@ -2,7 +2,7 @@
|
||||
telegraf_enabled: True
|
||||
# defaults file for ansible-telegraf
|
||||
|
||||
telegraf_agent_version: 1.18.2
|
||||
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
|
||||
@ -55,7 +55,7 @@ telegraf_plugins_default:
|
||||
config:
|
||||
- percpu = true
|
||||
- plugin: disk
|
||||
- plugin: io
|
||||
- plugin: diskio
|
||||
- plugin: mem
|
||||
- plugin: net
|
||||
- plugin: system
|
||||
@ -77,6 +77,7 @@ telegraf_yum_baseurl:
|
||||
default: "https://repos.influxdata.com/{{ ansible_distribution|lower }}/{{ 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"
|
||||
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:
|
||||
|
@ -5,9 +5,9 @@
|
||||
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"
|
||||
|
@ -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
|
||||
|
||||
@ -64,5 +66,3 @@ scenario:
|
||||
name: default
|
||||
verifier:
|
||||
name: testinfra
|
||||
lint:
|
||||
name: flake8
|
||||
|
4
molecule/empty-checkmode/converge.yml
Normal file
4
molecule/empty-checkmode/converge.yml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
- hosts: telegraf
|
||||
roles:
|
||||
- role: ansible-telegraf
|
70
molecule/empty-checkmode/molecule.yml
Normal file
70
molecule/empty-checkmode/molecule.yml
Normal 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
|
46
molecule/empty-checkmode/prepare.yml
Normal file
46
molecule/empty-checkmode/prepare.yml
Normal 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'
|
32
molecule/empty-checkmode/tests/test_default.py
Normal file
32
molecule/empty-checkmode/tests/test_default.py
Normal 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
11
requirements.txt
Normal 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
86
tasks/Archlinux.yml
Normal 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
|
116
tasks/Debian.yml
116
tasks/Debian.yml
@ -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"
|
||||
apt_key:
|
||||
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
|
||||
- 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/influxdata-archive.key"
|
||||
id: 7df8b07e
|
||||
state: present
|
||||
register: are_telegraf_dependencies_keys_installed
|
||||
until: are_telegraf_dependencies_keys_installed is succeeded
|
||||
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
|
||||
when:
|
||||
- telegraf_agent_package_method == "repo"
|
||||
- ansible_lsb is defined
|
||||
- ansible_lsb.codename is defined
|
||||
- name: "Debian | Create shared keyrings directory"
|
||||
file:
|
||||
state: directory
|
||||
path: /usr/share/keyrings
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0755
|
||||
when:
|
||||
- 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 | Add Telegraf repository"
|
||||
apt_repository:
|
||||
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
|
||||
filename: "telegraf"
|
||||
state: present
|
||||
become: yes
|
||||
when:
|
||||
- telegraf_agent_package_method == "repo"
|
||||
- ansible_lsb is not defined or ansible_lsb.codename is not defined
|
||||
- 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"
|
||||
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"
|
||||
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,34 +121,23 @@
|
||||
when:
|
||||
- telegraf_agent_package_method == "online"
|
||||
|
||||
- name: "Debian | Install Telegraf package (repo)"
|
||||
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 (online)"
|
||||
apt:
|
||||
deb: "{{ telegraf_agent_package_path }}/{{ telegraf_agent_package }}"
|
||||
state: "present"
|
||||
allow_downgrade: yes
|
||||
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: yes
|
||||
become: true
|
||||
when:
|
||||
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"
|
||||
|
@ -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"
|
||||
|
@ -10,7 +10,7 @@
|
||||
name: telegraf
|
||||
group: telegraf
|
||||
state: present
|
||||
become: yes
|
||||
become: true
|
||||
|
||||
- name: "Suse | Install repo dependencies for Python 2"
|
||||
zypper:
|
||||
@ -21,7 +21,7 @@
|
||||
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 repo dependencies for Python >= 3"
|
||||
@ -32,7 +32,7 @@
|
||||
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 >= 3
|
||||
|
||||
- name: "Suse | Add default Open Build Service repository"
|
||||
@ -42,7 +42,7 @@
|
||||
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"
|
||||
@ -52,7 +52,7 @@
|
||||
state: present
|
||||
runrefresh: True
|
||||
auto_import_keys: True
|
||||
become: yes
|
||||
become: true
|
||||
when: telegraf_zypper_baseurl is defined
|
||||
|
||||
- name: "Suse | Install Telegraf"
|
||||
@ -61,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:
|
||||
|
@ -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:
|
||||
|
@ -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 }}"
|
||||
|
@ -31,7 +31,7 @@
|
||||
win_copy:
|
||||
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}\telegraf.exe'
|
||||
dest: '{{ telegraf_win_install_dir }}\telegraf.exe'
|
||||
remote_src: yes
|
||||
remote_src: true
|
||||
when: telegraf_agent_version is version('1.15', '>=')
|
||||
|
||||
- name: "Windows | Unzip file"
|
||||
@ -39,14 +39,14 @@
|
||||
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
|
||||
dest: '{{ telegraf_win_install_dir }}'
|
||||
creates: '{{ telegraf_win_install_dir }}\telegraf.exe'
|
||||
delete_archive: yes
|
||||
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: yes
|
||||
remote_src: true
|
||||
when: telegraf_agent_version is version('1.15', '<')
|
||||
|
||||
- name: "Windows | Configure Telegraf"
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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 %}
|
||||
|
Reference in New Issue
Block a user