Bläddra i källkod

Overwrite grafana datasource and dashboards

Mateus Caruccio 6 år sedan
förälder
incheckning
e43bb0485a
1 ändrade filer med 36 tillägg och 4 borttagningar
  1. 36 4
      roles/openshift_grafana/tasks/install_grafana.yaml

+ 36 - 4
roles/openshift_grafana/tasks/install_grafana.yaml

@@ -182,7 +182,33 @@
       Content-Type: "Content-Type: application/json"
   register: add_ds
 
-- name: Regex set data soure name for openshift dashboard
+- block:
+  - name: Retrieve current grafana datasource
+    uri:
+      url: "{{ grafana_route }}/api/datasources/name/{{ grafana_datasource_name }}"
+      user: "{{ grafana_sa_token.stdout }}"
+      validate_certs: false
+      method: GET
+      status_code:
+      - 200
+    register: grafana_ds
+  - name: Update grafana datasource
+    uri:
+      url: "{{ grafana_route }}/api/datasources/{{ grafana_ds.json['id'] }}"
+      user: "{{ grafana_sa_token.stdout }}"
+      validate_certs: false
+      method: PUT
+      body: '{{ payload_data }}'
+      body_format: json
+      headers:
+        Content-Type: "Content-Type: application/json"
+      status_code:
+      - 200
+    register: update_ds
+  - debug: var=update_ds
+  when: add_ds.status == 409
+
+- name: Regex set data source name for openshift dashboard
   replace:
     path: "{{ mktemp.stdout }}/openshift-cluster-monitoring.json"
     regexp: '{{ item.regexp }}'
@@ -194,7 +220,7 @@
   - regexp: 'Xs'
     replace: '{{ grafana_graph_granularity }}'
 
-- name: Regex set data soure name for node exporter
+- name: Regex set data source name for node exporter
   replace:
     path: "{{ mktemp.stdout }}/node-exporter-full-dashboard.json"
     regexp: '{{ item.regexp }}'
@@ -216,13 +242,16 @@
     src: "{{ cluster_monitoring_dashboard }}"
   register: slurpfile
 
+- set_fact:
+    dashboard_data: '{{ slurpfile["content"] | b64decode | from_json | combine({ "dashboard": { "overwrite": true } }, recursive=True) }}'
+
 - name: Add openshift dashboard
   uri:
     url: "{{ grafana_route }}/api/dashboards/db"
     user: "{{ grafana_sa_token.stdout }}"
     validate_certs: false
     method: POST
-    body: '{{ slurpfile["content"] | b64decode }}'
+    body: '{{ dashboard_data | to_json }}'
     body_format: json
     status_code:
     - 200
@@ -236,13 +265,16 @@
     src: "{{ node_exporter_dashboard }}"
   register: slurpfile
 
+- set_fact:
+    dashboard_data: '{{ slurpfile["content"] | b64decode | from_json | combine({ "dashboard": { "overwrite": true } }, recursive=True) }}'
+
 - name: Add node exporter dashboard
   uri:
     url: "{{ grafana_route }}/api/dashboards/db"
     user: "{{ grafana_sa_token.stdout }}"
     validate_certs: false
     method: POST
-    body: '{{ slurpfile["content"] | b64decode }}'
+    body: '{{ dashboard_data | to_json }}'
     body_format: json
     status_code:
     - 200