From 927300877c41ef9109488faf9ba3ac53287305cf Mon Sep 17 00:00:00 2001 From: "felix.niederwanger@suse.com" Date: Thu, 25 Mar 2021 13:39:17 +0100 Subject: [PATCH] first commit --- README.md | 23 ++++++++++++++++ defaults/main.yml | 18 ++++++++++++ handlers/main.yml | 14 ++++++++++ meta/main.yml | 23 ++++++++++++++++ tasks/grafana.yml | 24 ++++++++++++++++ tasks/influxdb.yml | 46 +++++++++++++++++++++++++++++++ tasks/main.yml | 11 ++++++++ templates/influxdb_config.toml.j2 | 29 +++++++++++++++++++ vars/main.yml | 2 ++ vars/openSUSE Leap_15.2.yml | 3 ++ 10 files changed, 193 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/grafana.yml create mode 100644 tasks/influxdb.yml create mode 100644 tasks/main.yml create mode 100644 templates/influxdb_config.toml.j2 create mode 100644 vars/main.yml create mode 100644 vars/openSUSE Leap_15.2.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed834c7 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# geekoops-grafana + +Easy ansible role for setup of `grafana` with a custom backend. Currently only `influxdb` is supported + + +## Role Variables + + +## Example Playbook + + - hosts: jellyfish + roles: + - { role: geekoops-grafana } + +## License + +MIT + +## Author Information + +phoenix + +Have a lot of fun! \ No newline at end of file diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..3085927 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,18 @@ +--- +# defaults file for geekoops-grafana + +config_firewall: false +firewall_zone: public +open_grafana_port: false + +grafana_port: 3000 + +influxdb: false +influxdb_port: 8086 +influxdb_bind: "" +open_influxdb_port: false +influxdb_collectd: false +influxdb_collectd_database: "collectd" +influxdb_collectd_port: 25826 +influxdb_collectd_bind: "" +open_collectd_port: false diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..4bf1275 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,14 @@ +--- +# handlers file for geekoops-grafana + +- name: reload firewalld + shell: firewall-cmd --reload + +- name: restart influxdb + service: + name: influxdb + state: restarted +- name: restart grafana + service: + name: grafana-server + state: restarted diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..a6a099f --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,23 @@ +--- +galaxy_info: + author: Felix Niederwanger + description: Configurable grafana installation role + company: SUSE + issue_tracker_url: https://github.com/GeekOops/geekoops-grafana/issues + + license: license MIT + + min_ansible_version: 2.9 + + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + platforms: + - name: opensuse + versions: + - 15.2 + + galaxy_tags: + - grafana + +dependencies: [] diff --git a/tasks/grafana.yml b/tasks/grafana.yml new file mode 100644 index 0000000..ca2aec5 --- /dev/null +++ b/tasks/grafana.yml @@ -0,0 +1,24 @@ +--- + +- name: Install grafana + package: + name: "{{ packages_grafana }}" + state: present + tags: ['grafana'] + +- name: Ensure grafana is started + systemd: + name: grafana-server + state: started + enabled: true + tags: ['grafana'] + +- name: Ensure grafana firewall port is open + firewalld: + zone: "{{ firewall_zone }}" + port: "{{grafana_port}}/tcp" + permanent: yes + state: enabled + when: config_firewall and open_grafana_port + notify: reload firewalld + tags: ['grafana', 'firewalld'] diff --git a/tasks/influxdb.yml b/tasks/influxdb.yml new file mode 100644 index 0000000..b74cdbc --- /dev/null +++ b/tasks/influxdb.yml @@ -0,0 +1,46 @@ +--- + +- name: Install influxdb + package: + name: "{{ packages_influxdb }}" + state: present + tags: ['influxdb'] + +- name: Ensure influxdb is configured + template: + src: influxdb_config.toml.j2 + dest: /etc/influxdb/config.toml + owner: root + group: influxdb + mode: 0640 + tags: ['influxdb'] + notify: restart influxdb + +- name: Ensure influxdb is enabled + systemd: + name: influxdb + state: started + enabled: true + tags: ['influxdb'] + +- name: Ensure influxdb firewall port is open + firewalld: + zone: "{{ firewall_zone }}" + port: "{{influxdb_port}}/tcp" + permanent: yes + state: enabled + when: config_firewall and open_influxdb_port + notify: reload firewalld + tags: ['influxdb', 'firewalld'] + +- name: Ensure collectd firewall port is open + firewalld: + zone: "{{ firewall_zone }}" + port: "{{influxdb_collectd_port}}/udp" + permanent: yes + state: enabled + when: config_firewall and open_collectd_port + notify: reload firewalld + tags: ['influxdb', 'firewalld'] + + diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..4ade98e --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,11 @@ +--- +# tasks file for geekoops-grafana + +# Distribution specific vars are ALWAYS needed, so don't forget the tags here +- name: include distribution specific vars + include_vars: "{{ansible_distribution}}_{{ansible_distribution_version}}.yml" + tags: ['grafana'] + +- include: influxdb.yml + when: influxdb == true +- include: grafana.yml diff --git a/templates/influxdb_config.toml.j2 b/templates/influxdb_config.toml.j2 new file mode 100644 index 0000000..568e73b --- /dev/null +++ b/templates/influxdb_config.toml.j2 @@ -0,0 +1,29 @@ +### InfluxDB config file managed by the grafana-influxdb ansible role + +[meta] + # Where the metadata/raft database is stored + dir = "/var/lib/influxdb/meta" + +[data] + # The directory where the TSM storage engine stores TSM files. + dir = "/var/lib/influxdb/data" + + # The directory where the TSM storage engine stores WAL files. + wal-dir = "/var/lib/influxdb/wal" + +[http] + enabled = true + flux-enabled = false + bind-address = "{{influxdb_bind}}:{{influxdb_port}}" + +[logging] + format = "auto" + level = "error" + +{% if influxdb_collectd %} +[[collectd]] + enabled = true + bind-address = "{{influxdb_collectd_bind}}:{{influxdb_collectd_port}}" + database = "{{influxdb_collectd_database}}" + typesdb = "/usr/share/collectd/types.db" +{% endif %} diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..9ad192d --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for geekoops-grafana \ No newline at end of file diff --git a/vars/openSUSE Leap_15.2.yml b/vars/openSUSE Leap_15.2.yml new file mode 100644 index 0000000..7502f7e --- /dev/null +++ b/vars/openSUSE Leap_15.2.yml @@ -0,0 +1,3 @@ +--- +packages_grafana: ['grafana', 'grafana-piechart-panel', 'grafana-status-panel'] +packages_influxdb: ['influxdb']