123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- ---
- - name: Create grafana namespace
- oc_project:
- state: present
- name: "{{ grafana_namespace }}"
- - name: Configure Grafana Permissions
- include_tasks: tasks/gf-permissions.yml
- # TODO:// Templatize the remote files
- - name: Pull grafana yaml from openshift/origin
- get_url:
- url: "{{ grafana_base_url }}/grafana.yaml"
- dest: /tmp/grafana.yaml
- - name: Create grafana template
- oc_obj:
- namespace: "{{ grafana_namespace }}"
- kind: template
- name: grafana
- state: present
- files:
- - "/tmp/grafana.yaml"
- - name: Process the grafana file
- oc_process:
- namespace: "{{ grafana_namespace }}"
- template_name: grafana
- create: True
- - name: Wait to grafana be running
- command: oc rollout status deployment/grafana
- - name: Add view role to grafana user
- oc_adm_policy_user:
- user: "{{ grafana_user }}"
- resource_kind: cluster-role
- resource_name: view
- state: present
- role_namespace: "{{ grafana_prometheus_namespace }}"
- - name: Get the prometheus SA
- shell: oc sa get-token {{ grafana_prometheus_sa }} -n {{ grafana_prometheus_namespace }}
- register: sa
- - name: Get prometheus route
- oc_route:
- state: list
- name: prometheus
- namespace: "{{ grafana_prometheus_namespace }}"
- register: prom_out
- - name: Get prometheus route
- oc_route:
- state: list
- name: grafana
- namespace: "{{ grafana_namespace }}"
- register: grafana_out
- - set_fact: ds_json={{ datasource_payload | to_json }}
- - set_fact: prometheus=prom_out.results[0].spec.host
- - set_fact: route=grafana_out.results[0].spec.host
- - set_fact: token={{ sa.stdout }}
- - set_fact:
- payload_data: "{{ ds_json | regex_replace('grafana_name', grafana_datasource_name ) | regex_replace('prometheus_url', prometheus ) | regex_replace('satoken', token ) }}"
- - name: Add new datasrouce to grafana
- uri:
- url: "https://{{ route }}/api/datasources"
- user: admin
- password: admin
- method: POST
- body: "{{ payload_data }}"
- body_format: json
- headers:
- Content-Type: "Content-Type: application/json"
- register: add_ds
- - name: Pull grafana yaml from openshift/origin
- get_url:
- url: "{{ grafana_base_url }}/openshift-cluster-monitoring.json"
- dest: /tmp/openshift-cluster-monitoring.json
- - name: Regex set data soure name for openshift dashboard
- replace:
- path: /tmp/openshift-cluster-monitoring.json
- regexp: '${DS_PR}'
- replace: '{{ grafana_datasource_name }}'
- backup: yes
- - name: Regex setup granularity
- replace:
- path: /tmp/openshift-cluster-monitoring.json
- regexp: 'Xs'
- replace: '{{ grafana_graph_granularity }}'
- backup: yes
- - name: Add openshift dashboard
- uri:
- url: "https://{{ route }}/api/dashboards/db"
- user: admin
- password: admin
- method: POST
- body: "{{ lookup('file','/tmp/openshift-cluster-monitoring.json') }}"
- body_format: json
- headers:
- Content-Type: "Content-Type: application/json"
- register: add_ds
- - name: Regex json tear down
- replace:
- path: /tmp/openshift-cluster-monitoring.json
- regexp: '{{ grafana_datasource_name }}'
- replace: '${DS_PR}'
- - name: Pull node exporter dashboard from openshift/origin
- get_url:
- url: "{{ grafana_base_url }}/node-exporter-full-dashboard.json"
- dest: /tmp/node-exporter-full-dashboard.json
- when: grafana_node_exporter | default(false) | bool == true
- - name: Regex set data soure name for node exporter
- replace:
- path: /tmp/node-exporter-full-dashboard.json
- regexp: '${DS_PR}'
- replace: '{{ grafana_datasource_name }}'
- backup: yes
- when: grafana_node_exporter | default(false) | bool == true
- - name: Regex setup granularity for node exporter
- replace:
- path: /tmp/node-exporter-full-dashboard.json
- regexp: 'Xs'
- replace: '{{ grafana_graph_granularity }}'
- backup: yes
- when: grafana_node_exporter | default(false) | bool == true
- - name: Add node exporter dashboard
- uri:
- url: "https://{{ route }}/api/dashboards/db"
- user: admin
- password: admin
- method: POST
- body: "{{ lookup('file','/tmp/node-exporter-full-dashboard.json') }}"
- body_format: json
- headers:
- Content-Type: "Content-Type: application/json"
- register: add_ds
- when: grafana_node_exporter | default(false) | bool == true
|