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

- name: include os specific tasks
  ansible.builtin.include_tasks: "{{ lookup('first_found', params) }}"
  vars:
    params:
      files:
        - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yaml"
        - "{{ ansible_distribution }}.yaml"
        - "default.yaml"
      paths:
        - tasks

- name: include os family specific tasks
  ansible.builtin.include_tasks: "{{ lookup('first_found', params) }}"
  vars:
    params:
      files:
        - "{{ ansible_os_family }}.yaml"
        - "default.yaml"
      paths:
        - tasks

- name: install package
  ansible.builtin.package:
    name: "{{ grafana_package_name }}"
    state: "{{ grafana_package_state }}"

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

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

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

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

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

- name: upload user dashboards
  ansible.posix.synchronize:
    src: "{{ grafana_user_dashboard_path }}"
    dest: "{{ grafana_dashboard_path }}/"
    owner: false
    group: false
    delete: true
  notify: restart grafana

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

- name: configure nginx
  ansible.builtin.include_tasks: nginx.yaml
  when: "'nginx' in ansible_play_role_names"