Go to file
Jannik Beyerstedt 584a7e506f telegraf: Remove docker total option
Option "total" of plugin "inputs.docker" deprecated since version 1.18.0
But for now, it still needs to be set for "total_include" to be honored.
2022-08-06 14:38:49 +02:00
defaults [TIDY] move when statements, fix whitespace 2022-02-13 20:52:02 +01:00
files telegraf: add support for UBNT NanoStation 2020-05-22 13:18:45 +02:00
handlers [TIDY] Update to ansible 4 module names 2021-08-28 18:01:53 +02:00
meta change license, add license file 2020-04-08 19:35:17 +02:00
tasks [TIDY] move when statements, fix whitespace 2022-02-13 20:52:02 +01:00
templates telegraf: Remove docker total option 2022-08-06 14:38:49 +02:00
LICENSE change license, add license file 2020-04-08 19:35:17 +02:00
README.md Docker compose: Fix ansible module dependency 2021-09-25 23:39:27 +02:00



Essential server setup tasks, like sshd config, ddns cronjobs (+ mail output), etc used by Jannik Beyerstedt.



Role Variables

There are several variables, that should be set per host (e.g. in the inventory).

Some of the tasks listed below, will not run, if the corresponding variables are not set. Therefore you can use the same playbook for multiple servers and activate the needed features with host variables.


If you want to configure borgbackup backups, these variables need to be set:

  • borgbackup_passphrase: Passphrase of the borgbackup repo
  • borgbackup_repo: Repository path (e.g. ssh://$user@$hostname/$path)
  • borgbackup_hostname: Hostname to prefix the snapshots

Optional configuration:

  • borgbackup_ssh_id: Path to the used ssh id (default: {{ ansible_user_dir }}/.ssh/id_ed25519)

Attention: You still need to setup the borgbackup repository manually.


Mandatory variable:

  • caddy_email: Email address to use for getting let's encrypt certificates


Mandatory variable:

  • cron_email: Sender email address used by cron
  • exim_etc_mailname: Exim4 /etc/mailname (default: inventory_hostname)


Optional variable:

  • none


This task and it's configuration files might be quite specific for the davd/docker-ddns docker container.

Mandatory variables:

  • ddns_server_domain: Domain name of the DynDNS server
  • ddns_passphrase: Passphrase for updating dynDNS entries
  • ddns_zone: Domain where the host's entries are created as $hostname.$ddns_zone

Optional variable:

  • ddns_silence: Set to true to silence stderr too


Mandatory variables:

  • telegraf_server_url: URL of the influxDB server, e.g. https://example.com:8086
  • telegraf_server_user: Username of the influxDB user
  • telegraf_server_passwd: Password of the influxDB user

Telegraf is configured with basic host telemetry by default. You can add more features, if you like:

  • telegraf_docker: Set to true, if docker telemetry should be collected (uses file from telegraf_docker_file)
  • telegraf_unifi_usg_ips: Specify a list of USG IPs, if SNMP telemetry should be collected (uses file from telegraf_unifi_file)
  • telegraf_unifi_ap_ips: Specify a list of AP IPs, if SNMP telemetry should be collected (uses file from telegraf_unifi_file)
  • telegraf_ubnt_ns_ips: Specify a list of Ubiquiti NanoStation IPs, if SNMP telemetry should be collected (uses file from telegraf_airmax_file)
  • telegraf_docker_file: filename of the docker telegraf config part in {{role_path}}/templates (default telegraf-docker.conf).
  • telegraf_unifi_file: filename of the SNMP telegraf config part in {{role_path}}/templates (default telegraf-UniFi.conf.j2).
  • telegraf_airmax_file: filename of the SNMP telegraf config part in {{role_path}}/templates (default telegraf-AirMAX.conf.j2).

Optional settings:

  • telegraf_interval: Data sampling interval (default 300s)



Example Playbook

The different tasks should be used on a case-by-case basis:

- name: Common Server Configuration
  hosts: servers
  - name: Servers - Generic setup tasks
      name: server
      tasks_from: setup
  - name: Servers - Setup cronjob mails
      name: server
      tasks_from: cronmails
  - name: Servers - Setup dyndns cronjob
      name: server
      tasks_from: dyndns
  - name: Servers - Setup monitoring
      name: server
      tasks_from: telegraf
  - name: Servers - Setup backups (if variables are set)
      name: server
      tasks_from: borgbackup

  # Docker
  - name: Servers - Install docker
      name: server
      tasks_from: docker
  - name: Servers - Add telegraf to docker group
    become: yes
      name: telegraf
      groups: docker
      append: yes

  # Caddy Webserver
  - name: Servers - Install and setup caddy
      name: server
      tasks_from: caddyserver
  - name: Servers - Start caddy service
    become: yes
      name: caddy
      enabled: yes
      state: started

  # UFW Firewall
  - name: Servers - Install UFW
    become: yes
      name: ufw
      state: present