From 19a7ea7237927c6a3d1da7029e52bd5036d7b5bf Mon Sep 17 00:00:00 2001
From: Thomas Schneider <tschneider@asta.rwth-aachen.de>
Date: Sat, 13 Jun 2020 21:31:08 +0200
Subject: [PATCH] grafana: Add postgres config

---
 grafana/tasks/main.yml           |  9 +++++++++
 grafana/tasks/postgres.yml       | 23 +++++++++++++++++++++++
 grafana/templates/grafana.ini.j2 | 10 ++++++++--
 3 files changed, 40 insertions(+), 2 deletions(-)
 create mode 100644 grafana/tasks/postgres.yml

diff --git a/grafana/tasks/main.yml b/grafana/tasks/main.yml
index 6ddae6b..4b961b9 100644
--- a/grafana/tasks/main.yml
+++ b/grafana/tasks/main.yml
@@ -81,6 +81,15 @@
     - config
     - grafana
 
+- import_tasks: postgres.yml
+  when:
+    - grafana_database is defined
+    - grafana_database.type == "postgres"
+    - grafana_database.host[0] == '/'
+  tags:
+    - grafana
+    - postgres
+
 - meta: flush_handlers
 
 - name: Enable and start Grafana
diff --git a/grafana/tasks/postgres.yml b/grafana/tasks/postgres.yml
new file mode 100644
index 0000000..f69793b
--- /dev/null
+++ b/grafana/tasks/postgres.yml
@@ -0,0 +1,23 @@
+---
+
+- become: true
+  become_user: postgres
+  block:
+    - name: Create postgres user
+      postgresql_user:
+        name: grafana
+        state: present
+
+    - name: Create database
+      postgresql_db:
+        name: grafana
+        owner: grafana
+        state: present
+
+    - name: Grant database privileges
+      postgresql_privs:
+        database: grafana
+        privs: ALL
+        state: present
+        type: database
+        roles: grafana
diff --git a/grafana/templates/grafana.ini.j2 b/grafana/templates/grafana.ini.j2
index bbb0019..ac54026 100644
--- a/grafana/templates/grafana.ini.j2
+++ b/grafana/templates/grafana.ini.j2
@@ -18,8 +18,14 @@ serve_from_sub_path = {{ grafana_serve_from_sub_path }}
 socket = /run/grafana/sock
 
 [database]
-{% if grafana_database_url is defined %}
-url = {{ grafana_database_url }}
+{% if grafana_database is defined %}
+type = {{ grafana_database.type }}
+host = {{ grafana_database.host }}
+name = {{ grafana_database.name }}
+user = {{ grafana_database.user }}
+{% if grafana_database.password is defined %}
+password = """{{ grafana_database.password }}"""
+{% endif %}
 {% endif %}
 
 [analytics]
-- 
GitLab