infra/roles/common-telegraf/tasks/telegraf.yml

202 lines
4.7 KiB
YAML

---
- name: group for telegraf user
group:
state: present
name: "{{ systemuserlist.telegraf.username }}"
gid: "{{ systemuserlist.telegraf.gid }}"
tags: users
notify: restart telegraf
- name: telegraf user
user:
state: present
name: "{{ systemuserlist.telegraf.username }}"
group: "{{ systemuserlist.telegraf.username }}"
shell: "{{ systemuserlist.telegraf.shell }}"
uid: "{{ systemuserlist.telegraf.uid }}"
create_home: yes
home: "{{ systemuserlist.telegraf.home }}"
move_home: yes
system: yes
tags: users
notify: restart telegraf
- name: allow telegraf to sudo and use smartctl
template:
src: telegraf.sudoers.j2
dest: /etc/sudoers.d/telegraf
mode: 0440
owner: root
group: root
when: telegraf_smart_disks
notify: restart telegraf
tags: users
- name: install humanize in virtualenv
pip:
name: humanize
state: present
virtualenv: /var/lib/virtualens/telegraf-scripts
virtualenv_site_packages: false
virtualenv_command: python3 -m venv
when: not ansible_check_mode
tags:
- venvs
- virtualenvs
- pip
- packages
- pip-latest
- name: template vnstat script
template:
src: telegraf-vnstat.py.j2
dest: /usr/local/bin/telegraf-vnstat.py
mode: 0775
owner: telegraf
group: telegraf
notify: restart telegraf
# - name: get list of existing groups
# shell: "/usr/bin/getent group | awk -F':' '{print $1}'"
# register: etc_groups
# check_mode: no
# changed_when: false
# tags: users
#
# use with:
#
# with_items: "{{ systemuserlist.telegraf.groups }}"
# when: 'item in etc_groups.stdout_lines'
# sudo gpg --no-default-keyring --keyring /usr/share/keyrings/influxdb-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D8FF8E1F7DF8B07E
# - name: add apt key for influxdata to install telegraf
# apt_key:
# url: https://repos.influxdata.com/influxdb.key
# state: present
# tags:
# - packages
- name: set distro to debian if raspbian
set_fact:
distro: debian
when: ansible_lsb.id == "Raspbian"
tags:
- influx-repo
- packages
- name: otherwise use lsb id
set_fact:
distro: "{{ ansible_lsb.id }}"
when: ansible_lsb.id != "Raspbian"
tags:
- influx-repo
- packages
- name: set codename to bullseye (oldstable) if trixie or bookwork
set_fact:
codename: bullseye
when: ansible_lsb.codename in ["bookworm", "trixie"]
tags:
- influx-repo
- packages
- name: set codename to focal if hirsute
set_fact:
codename: focal
when:
- false
- ansible_lsb.codename == "hirsute"
tags:
- influx-repo
- packages
- name: otherwise use lsb codename
set_fact:
codename: "{{ ansible_lsb.codename }}"
when:
- ansible_lsb.codename != "bookworm"
- ansible_lsb.codename != "trixie"
#- ansible_lsb.codename != "hirsute"
tags:
- influx-repo
- packages
#- name: get influxdb key
# get_url:
# url: https://repos.influxdata.com/influxdb.key
# dest: /etc/apt/trusted.gpg.d/influxdb.asc
# tags:
# - influx-repo
# - packages
- name: install dearmored influxdb key
copy:
src: influxdb-archive-keyring.gpg
dest: /usr/share/keyrings/influxdb-archive-keyring.gpg
owner: root
group: root
mode: '0644'
tags:
- influx-repo
- packages
- name: remove repo definition without signed-by
apt_repository:
repo: deb https://repos.influxdata.com/{{ distro | lower }} {{ codename }} stable
state: absent
update_cache: false
tags:
- packages
- influx-repo
- name: add repo for influxdata to install telegraf
apt_repository:
repo: deb [signed-by=/usr/share/keyrings/influxdb-archive-keyring.gpg] https://repos.influxdata.com/{{ distro | lower }} {{ codename }} stable
#repo: deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.asc] https://repos.influxdata.com/{{ distro | lower }} {{ codename }} stable
state: present
update_cache: false
when: not skip_apt|default(false)
tags:
- packages
- influx-repo
- name: install telegraf
apt:
name: telegraf
state: latest
update_cache: true
when: not skip_apt|default(false)
tags:
- packages
notify: restart telegraf
# telegraf errors and doesnt do the smart check if this
# isnt installed, regardless of if there are nvme disks
- name: install nvme-cli for telegraf s.m.a.r.t. monitoring
apt:
name: nvme-cli
state: latest
when: telegraf_smart_disks
tags:
- packages
notify: restart telegraf
- name: template telegraf config
template:
src: telegraf.conf.j2
dest: /etc/telegraf/telegraf.conf
notify:
- restart telegraf
tags:
- telegraf-config
- name: enable telegraf
service:
name: telegraf
state: started
enabled: yes
notify: restart telegraf
- meta: flush_handlers