diff options
Diffstat (limited to 'roles/grafana/tasks/main.yml')
| -rw-r--r-- | roles/grafana/tasks/main.yml | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/roles/grafana/tasks/main.yml b/roles/grafana/tasks/main.yml new file mode 100644 index 00000000..1d8dceaf --- /dev/null +++ b/roles/grafana/tasks/main.yml @@ -0,0 +1,84 @@ +--- +- name: "Include OS-specific variables" + ansible.builtin.include_vars: "{{ ansible_distribution | lower }}.yml" + +- name: "Include OS-specific installation tasks" + ansible.builtin.include_tasks: "install-{{ ansible_distribution | lower }}.yml" + +- name: "Create grafana group" + become: true + ansible.builtin.group: + name: "grafana" + system: true + +- name: "Create grafana user" + become: true + ansible.builtin.user: + name: "grafana" + group: "grafana" + system: true + shell: "/usr/sbin/nologin" + create_home: false + +- name: "Create grafana directories" + become: true + ansible.builtin.file: + path: "{{ item }}" + state: "directory" + owner: "grafana" + group: "grafana" + mode: "0755" + loop: + - "/etc/grafana" + - "/etc/grafana/provisioning" + - "/etc/grafana/provisioning/datasources" + - "/etc/grafana/provisioning/plugins" + - "/etc/grafana/provisioning/dashboards" + - "/var/lib/grafana" + - "/var/log/grafana" + +- name: "Template grafana configurations" + become: true + ansible.builtin.template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: "root" + group: "grafana" + mode: "0640" + loop: + - src: "grafana.ini.j2" + dest: "/etc/grafana.ini" + - src: "datasources/prometheus.yml.j2" + dest: "/etc/grafana/provisioning/datasources/prometheus.yml" + - src: "dashboards/dashboards.yml.j2" + dest: "/etc/grafana/provisioning/dashboards/dashboards.yml" + notify: "Restart grafana" + +- name: "Provision Grafana community dashboards" + notify: "Restart grafana" + block: + - name: "Download Grafana community dashboards" + become: true + ansible.builtin.get_url: + url: "https://grafana.com/api/dashboards/{{ item.id }}/revisions/{{ item.revision }}/download" + dest: "/etc/grafana/provisioning/dashboards/{{ item.name }}.json" + owner: "grafana" + group: "grafana" + mode: "0644" + force: false + loop: "{{ grafana_dashboards }}" + + - name: "Fix datasource references in downloaded dashboards" + become: true + ansible.builtin.replace: + path: "/etc/grafana/provisioning/dashboards/{{ item.0.name }}.json" + regexp: "{{ item.1.key | regex_escape }}" + replace: "{{ item.1.value }}" + loop: "{{ grafana_dashboards | subelements('datasource_mappings', skip_missing=True) }}" + +- name: "Start and enable grafana" + become: true + ansible.builtin.systemd_service: + name: "{{ grafana_service_name }}" + state: "started" + enabled: true |
