From a89e88a786dc1fbe3f6c49f24388da33d6703c1f Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 26 Oct 2021 12:24:44 +0200 Subject: installing grafana dashboards works now --- roles/monitoring/grafana/defaults/main.yml | 15 ++++++++++++--- roles/monitoring/grafana/tasks/main.yml | 29 +++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 9 deletions(-) (limited to 'roles/monitoring') diff --git a/roles/monitoring/grafana/defaults/main.yml b/roles/monitoring/grafana/defaults/main.yml index fad27b4a..f2149dd5 100644 --- a/roles/monitoring/grafana/defaults/main.yml +++ b/roles/monitoring/grafana/defaults/main.yml @@ -36,6 +36,15 @@ grafana_datasources: [] # tlsSkipVerify: true grafana_dashboards: [] - # - node-full - # - chronyd - # - environment-sensors +# - file: node-full +# datasource: "Prometheus" +# - file: chronyd +# datasource: "Prometheus" +# - file: environment-sensors +# datasource: "Prometheus" +# - content: '... json-data ...' +# name: bar +# datasource: "Graphite" +# - id: 19 +# revision: 3 +# datasource: "Foo" diff --git a/roles/monitoring/grafana/tasks/main.yml b/roles/monitoring/grafana/tasks/main.yml index 46130882..8b1db9c6 100644 --- a/roles/monitoring/grafana/tasks/main.yml +++ b/roles/monitoring/grafana/tasks/main.yml @@ -86,14 +86,31 @@ group: grafana mode: 0750 - ## TODO: fix datasource selection -- name: install - loop: "{{ grafana_dashboards }}" +- name: install dashboards from file + loop: "{{ grafana_dashboards | selectattr('file', 'defined') }}" + loop_control: + label: "{{ item.file }} -> {{ item.datasource }}" + copy: + content: "{{ lookup('file', 'dashboard-'+item.file+'.json') | regex_replace('\"(?:\\${)?DS_[A-Z0-9_-]+(?:})?\"', '\"'+item.datasource+'\"') }}\n" + dest: "/var/lib/grafana/dashboards/ansible/{{ item.datasource }}_{{ item.file }}.json" + +- name: install dashboards from content + loop: "{{ grafana_dashboards | selectattr('content', 'defined') }}" + loop_control: + label: "{{ item.name }} -> {{ item.datasource }}" copy: - src: "dashboard-{{ item }}.json" - dest: "/var/lib/grafana/dashboards/ansible/{{ item }}.json" + content: "{{ item.content | regex_replace('\"(?:\\${)?DS_[A-Z0-9_-]+(?:})?\"', '\"'+item.datasource+'\"') }}\n" + dest: "/var/lib/grafana/dashboards/ansible/{{ item.datasource }}_{{ item.name }}.json" + + ## TODO: implement this +- name: install dashboards from grafana.com + loop: "{{ grafana_dashboards | selectattr('id', 'defined') }}" + loop_control: + label: "https://grafana.com/api/dashboards/{{ item.id }} -> {{ item.datasource }}" + debug: + msg: 'installing dashboards from grafana.com is not yet supported!' -- name: make sure grafan-server is enabled and started +- name: make sure grafana-server is enabled and started systemd: name: grafana-server state: started -- cgit v1.2.3