ansible-role-grafana/tasks/main.yml

94 lines
2.3 KiB
YAML

- name: install grafana
apt:
pkg: grafana
- name: add www-data to grafana group
user:
name: www-data
groups: grafana
append: yes
- name: ensure log file is owned by grafana and not root
file:
path: /var/log/grafana/grafana.log
owner: grafana
group: grafana
- name: ensure data directory is owned by grafana and not root
file:
path: /var/lib/grafana
owner: grafana
group: grafana
state: directory
recurse: True
- name: set admin password
command:
argv:
- grafana-cli
- admin
- reset-admin-password
- "{{ grafana.adminpw }}"
- name: install grafana plugins
grafana_plugin:
name: "{{ item }}"
loop: "{{ grafana.plugins.keys()|list }}"
notify: restart grafana
- name: update all grafana plugins
tags: update
command: grafana-cli plugins update-all
notify: restart grafana
- name: copy grafana config
notify: restart grafana
template:
src: grafana.ini.j2
dest: /etc/grafana/grafana.ini
owner: root
group: grafana
mode: 0640
- name: "ensure grafana is started"
service:
name: grafana-server
enabled: true
state: started
- name: flush handlers so grafana is ready
meta: flush_handlers
- name: "Check if grafana is accessible."
uri:
url: http://127.0.0.1
method: GET
status_code: 200
- name: convert tls paths to data (datasources)
include_tasks: tls-path-to-data.yml
vars:
grafanakey: datasources
loop: "{{ grafana.datasources|dict2items }}"
- name: create data sources
loop: "{{ grafana.datasources|dict2items }}"
grafana_datasource:
name: "{{ item.key }}"
grafana_url: "http://127.0.0.1"
grafana_user: "admin"
grafana_password: "{{ grafana.adminpw }}"
ds_type: "{{ item.value.ds_type }}"
database: "{{ item.value.database|d(omit) }}"
url: "{{ item.value.url }}"
is_default: "{{ item.value.is_default }}"
tls_ca_cert: "{{ item.value.tls_ca_cert|d(omit) }}"
tls_client_cert: "{{ item.value.tls_client_cert|d(omit) }}"
tls_client_key: "{{ item.value.tls_client_key|d(omit) }}"
- name: import dashboards
loop: "{{ grafana.dashboards|dict2items }}"
grafana_dashboard:
grafana_url: "http://127.0.0.1"
grafana_user: "admin"
grafana_password: "{{ grafana.adminpw }}"
path: "{{ item.value.path }}"