summaryrefslogtreecommitdiffstats
path: root/roles/grafana
diff options
context:
space:
mode:
Diffstat (limited to 'roles/grafana')
-rw-r--r--roles/grafana/defaults/main.yml1
-rw-r--r--roles/grafana/handlers/main.yml6
-rw-r--r--roles/grafana/meta/argument_specs.yml4
-rw-r--r--roles/grafana/tasks/main.yml15
-rw-r--r--roles/grafana/templates/grafana.ini.j24
-rw-r--r--roles/grafana/templates/grafana.nginx.conf.j210
6 files changed, 39 insertions, 1 deletions
diff --git a/roles/grafana/defaults/main.yml b/roles/grafana/defaults/main.yml
index e61aeded..0cbbb71b 100644
--- a/roles/grafana/defaults/main.yml
+++ b/roles/grafana/defaults/main.yml
@@ -11,3 +11,4 @@ grafana_datasources:
default: true
grafana_dashboards: []
+grafana_hostname: "monitor.home.arpa"
diff --git a/roles/grafana/handlers/main.yml b/roles/grafana/handlers/main.yml
index 408c8c3d..b212487b 100644
--- a/roles/grafana/handlers/main.yml
+++ b/roles/grafana/handlers/main.yml
@@ -4,3 +4,9 @@
ansible.builtin.systemd_service:
name: "{{ grafana_service }}"
state: "restarted"
+
+- name: "Restart nginx"
+ become: true
+ ansible.builtin.systemd_service:
+ name: "nginx"
+ state: "restarted"
diff --git a/roles/grafana/meta/argument_specs.yml b/roles/grafana/meta/argument_specs.yml
index fee43a8c..5a38b97d 100644
--- a/roles/grafana/meta/argument_specs.yml
+++ b/roles/grafana/meta/argument_specs.yml
@@ -48,6 +48,10 @@ argument_specs:
description: "Whether this is the default datasource"
type: "bool"
default: false
+ grafana_hostname:
+ type: "str"
+ description: "FQDN for the grafana nginx vhost (e.g. 'monitor.home.arpa')."
+ default: "monitor.home.arpa"
grafana_dashboards:
description: "List of community dashboards to download and provision"
type: "list"
diff --git a/roles/grafana/tasks/main.yml b/roles/grafana/tasks/main.yml
index 3e29489b..f1fa479e 100644
--- a/roles/grafana/tasks/main.yml
+++ b/roles/grafana/tasks/main.yml
@@ -86,3 +86,18 @@
name: "{{ grafana_service }}"
state: "started"
enabled: true
+
+- name: "Create grafana nginx vhost configuration"
+ become: true
+ when: grafana_hostname | length > 0
+ ansible.builtin.template:
+ src: "grafana.nginx.conf.j2"
+ dest: "/etc/nginx/vhosts.d/grafana.conf"
+ owner: "root"
+ group: "root"
+ mode: "0644"
+ backup: true
+ validate: >
+ bash -c 'echo "events { worker_connections 64; } http { include %s; }" > /tmp/nginx-vhost.conf;
+ sudo nginx -T -c /tmp/nginx-vhost.conf; ec=$?; rm -f /tmp/nginx-vhost.conf; exit $ec'
+ notify: "Restart nginx"
diff --git a/roles/grafana/templates/grafana.ini.j2 b/roles/grafana/templates/grafana.ini.j2
index 7685bed2..05166994 100644
--- a/roles/grafana/templates/grafana.ini.j2
+++ b/roles/grafana/templates/grafana.ini.j2
@@ -1,6 +1,8 @@
[server]
http_port = {{ grafana_port }}
-root_url = http://localhost:{{ grafana_port }}/
+{% if grafana_hostname | length > 0 %}
+root_url = http://{{ grafana_hostname }}/
+{% endif %}
[database]
type = {{ grafana_database_type }}
diff --git a/roles/grafana/templates/grafana.nginx.conf.j2 b/roles/grafana/templates/grafana.nginx.conf.j2
new file mode 100644
index 00000000..e6e1052c
--- /dev/null
+++ b/roles/grafana/templates/grafana.nginx.conf.j2
@@ -0,0 +1,10 @@
+server {
+ listen 80;
+ listen [::]:80;
+
+ server_name {{ grafana_hostname }};
+
+ location / {
+ proxy_pass http://127.0.0.1:{{ grafana_port }}/;
+ }
+}