Fix redundant extra config files in grafana role

Task `Check if extra configuration file exists` picks up all files in
`{{ node_custom_config }}/grafana` including those that get handled
specially later on.
While `prometheus.yml` and `provisioning.yml` are best excluded from
extra config , because their treatment requires more than just copying,
`grafana_home_dashboard.json` may simply be treated as extra config,
which saves the execution of two additional tasks.

Closes-Bug: 2067999

Change-Id: I7bce1fe3d0a96816f1782107b202d6dac7d1291d
Signed-off-by: Jan Horstmann <horstmann@osism.tech>
This commit is contained in:
Jan Horstmann 2024-05-15 12:00:32 +02:00
parent 43636d7f34
commit 4178f02e2b
No known key found for this signature in database
4 changed files with 21 additions and 29 deletions

View File

@ -15,6 +15,9 @@
- name: Check if extra configuration file exists - name: Check if extra configuration file exists
find: find:
path: "{{ node_custom_config }}/grafana/" path: "{{ node_custom_config }}/grafana/"
excludes:
- "prometheus.yaml"
- "provisioning.yaml"
delegate_to: localhost delegate_to: localhost
changed_when: False changed_when: False
run_once: True run_once: True
@ -68,23 +71,6 @@
notify: notify:
- Restart grafana container - Restart grafana container
- name: Check if custom grafana home dashboard exists
stat:
path: "{{ node_custom_config }}/grafana/grafana_home_dashboard.json"
delegate_to: localhost
register: grafana_custom_dashboard_file
run_once: True
- name: Copying over grafana home dashboard if exists
become: true
template:
src: "{{ node_custom_config }}/grafana/grafana_home_dashboard.json"
dest: "{{ node_config_directory }}/grafana/grafana_home_dashboard.json"
mode: "0660"
when: grafana_custom_dashboard_file.stat.exists
notify:
- Restart grafana container
- name: Configuring Prometheus as data source for Grafana - name: Configuring Prometheus as data source for Grafana
vars: vars:
service: "{{ grafana_services['grafana'] }}" service: "{{ grafana_services['grafana'] }}"

View File

@ -57,4 +57,4 @@
register: grafana_response register: grafana_response
changed_when: grafana_response.status == 200 changed_when: grafana_response.status == 200
run_once: true run_once: true
when: grafana_custom_dashboard_file.stat.exists when: "'grafana_home_dashboard.json' in check_extra_conf_grafana.files | map(attribute='path') | map('basename')"

View File

@ -7,21 +7,22 @@
"owner": "grafana", "owner": "grafana",
"perm": "0600" "perm": "0600"
}, },
{% if check_extra_conf_grafana is defined %}{% if check_extra_conf_grafana.matched > 0 %}{% for plugin in check_extra_conf_grafana.files %} {% if check_extra_conf_grafana is defined %}
{% for extra_conf in check_extra_conf_grafana.files | map(attribute='path') | map('basename') %}
{ {
"source": "{{ container_config_directory }}/{{ plugin.path | basename }}", "source": "{{ container_config_directory }}/{{ extra_conf }}",
"dest": "/etc/grafana/{{ plugin.path | basename }}", {% if extra_conf == 'grafana_home_dashboard.json' %}
"owner": "grafana",
"perm": "0600"
},
{% endfor %}{% endif %}{% endif %}
{
"source": "{{ container_config_directory }}/grafana_home_dashboard.json",
"dest": "/usr/share/grafana/public/dashboards/home.json", "dest": "/usr/share/grafana/public/dashboards/home.json",
"owner": "root", "owner": "root",
"perm": "0644", "perm": "0644"
"optional": true {% else %}
"dest": "/etc/grafana/{{ extra_conf }}",
"owner": "grafana",
"perm": "0600"
{% endif %}
}, },
{% endfor %}
{% endif %}
{ {
"source": "{{ container_config_directory }}/prometheus.yaml", "source": "{{ container_config_directory }}/prometheus.yaml",
"dest": "/etc/grafana/provisioning/datasources/prometheus.yaml", "dest": "/etc/grafana/provisioning/datasources/prometheus.yaml",

View File

@ -0,0 +1,5 @@
---
fixes:
- |
Fixes redundant copying of grafana custom config files.
`LP#2067999 <https://launchpad.net/bugs/2067999>`__