---
- name: gather os specific variables
  include_vars: "{{ lookup('first_found', possible_files) }}"
  vars:
    possible_files:
      files:
        - "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yaml"
        - "{{ ansible_distribution }}.yaml"
        - "{{ ansible_os_family }}.yaml"
        - "default.yaml"
      paths:
        - vars

- name: include os specific tasks
  include_tasks: "{{ lookup('first_found', possible_files) }}"
  vars:
    possible_files:
      files:
        - "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yaml"
        - "{{ ansible_distribution }}.yaml"
        - "{{ ansible_os_family }}.yaml"
        - "default.yaml"
      paths:
        - tasks

- name: install package
  package:
    name: "{{ grafana_package_name }}"
    state: "{{ grafana_package_state }}"

- name: "create {{ grafana_etc_path }}"
  file:
    path: "{{ grafana_etc_path }}"
    owner: root
    group: root
    mode: 0755

- name: configure
  template:
    src: grafana.ini.j2
    dest: "{{ grafana_config_path }}"
    owner: root
    group: "{{ grafana_group }}"
    mode: 0640
  notify: restart grafana

- name: provision datasources
  copy:
    dest: "{{ grafana_provisioning_path }}/datasources/datasource.yaml"
    content: "{{ grafana_datasources | to_nice_yaml }}"
    owner: root
    group: "{{ grafana_group }}"
    mode: 0640

- name: create dashboard directory
  file:
    path: /var/lib/grafana/dashboards
    state: directory
    owner: "{{ grafana_user }}"
    group: "{{ grafana_group }}"
    mode: 0755

- name: provision dashboards
  copy:
    dest: "{{ grafana_provisioning_path }}/dashboards/dashboards.yaml"
    content: "{{ grafana_dashboards | to_nice_yaml }}"
    owner: root
    group: "{{ grafana_group }}"
    mode: 0640

- name: upload user dashboards
  copy:
    src: "files/grafana/dashboards/{{ item }}"
    dest: "/var/lib/grafana/dashboards/{{ item | basename }}"
    owner: "{{ grafana_user }}"
    group: "{{ grafana_group }}"
    mode: 0644
  loop: "{{ grafana_dashboard_files | default([]) }}"

- name: manage service
  service:
    name: "{{ grafana_service_name }}"
    state: "{{ grafana_service_state }}"
    enabled: "{{ grafana_service_enabled }}"

- name: configure nginx
  include: nginx.yaml
  when: "'nginx' in ansible_play_role_names"