Files
beepi/playbooks/dashboards/dashboards.yml
T
2026-08-16 14:48:04 +02:00

85 lines
2.8 KiB
YAML

- name: Dashboards
hosts: beepi
become: true
vars:
dashboard_dir: /opt/beeserver/monitoring/grafana/dashboards
dashboard_general_dir: /opt/beeserver/monitoring/grafana/dashboards-general
provisioning_dir: /opt/beeserver/monitoring/grafana/provisioning/dashboards
tasks:
- name: Determine whether uptimerobot is configured
ansible.builtin.set_fact:
uptimerobot_enabled: "{{ uptimerobot_api_key is defined and 'REPLACE_ME' not in uptimerobot_api_key }}"
- name: Check that grafana is running
ansible.builtin.command:
cmd: podman container inspect -f '{{ '{{' }}.State.Running{{ '}}' }}' grafana
register: grafana_running
changed_when: false
failed_when: false
- name: Require a running grafana
ansible.builtin.assert:
that:
- grafana_running.stdout | trim == 'true'
fail_msg: >-
grafana is not running, so provisioned changes cannot be picked up.
Run make deploy-monitoring first.
- name: Create dashboard directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ dashboard_dir }}"
- "{{ dashboard_general_dir }}"
- "{{ provisioning_dir }}"
- name: Copy dashboard provider
ansible.builtin.template:
src: ../monitoring/grafana/provisioning/dashboards/dashboards.yml.j2
dest: "{{ provisioning_dir }}/dashboards.yml"
mode: '0644'
notify: Restart grafana
- name: Copy generated dashboards
ansible.builtin.template:
src: "../monitoring/grafana/dashboards/{{ item }}.json.j2"
dest: "{{ dashboard_dir }}/{{ item }}.json"
mode: '0644'
validate: "python3 -c \"import json; json.load(open('%s'))\""
loop:
- infrastructure-map
- backups
- services
- ingress
- name: Copy uptimerobot dashboard
ansible.builtin.template:
src: ../monitoring/grafana/dashboards/uptimerobot.json.j2
dest: "{{ dashboard_dir }}/uptimerobot.json"
mode: '0644'
validate: "python3 -c \"import json; json.load(open('%s'))\""
when: uptimerobot_enabled
- name: Copy hand made dashboards
ansible.builtin.copy:
src: ../monitoring/grafana/dashboards-general/
dest: "{{ dashboard_general_dir }}/"
mode: '0644'
- name: Debug
ansible.builtin.debug:
msg:
- "Dashboards are polled by grafana every 30s, no restart needed."
- "Grafana: https://grafana.secretbee.buzz/"
- "Errors: sudo podman logs --tail 40 grafana | grep -i provision"
tags:
- always
handlers:
- name: Restart grafana
changed_when: true
ansible.builtin.command:
cmd: podman restart grafana