85 lines
2.8 KiB
YAML
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
|