--- - name: Create Grafana system user ansible.builtin.user: name: "{{ grafana_user }}" system: true create_home: false shell: /usr/sbin/nologin state: present - name: Create Grafana directories ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ grafana_user }}" group: "{{ grafana_group }}" mode: '0755' loop: - "{{ grafana_data_dir }}" - "{{ grafana_logs_dir }}" - "{{ grafana_plugins_dir }}" - "{{ grafana_provisioning_dir }}" - "{{ grafana_provisioning_dir }}/datasources" - "{{ grafana_provisioning_dir }}/dashboards" - "{{ grafana_data_dir }}/dashboards" - /etc/grafana - name: Download Grafana binary ansible.builtin.get_url: url: "https://dl.grafana.com/oss/release/grafana-{{ grafana_version }}.linux-amd64.tar.gz" dest: "/tmp/grafana-{{ grafana_version }}.tar.gz" mode: '0644' register: grafana_download - name: Extract Grafana ansible.builtin.unarchive: src: "/tmp/grafana-{{ grafana_version }}.tar.gz" dest: /opt remote_src: true creates: "/opt/grafana-v{{ grafana_version }}" when: grafana_download.changed - name: Create Grafana symlink ansible.builtin.file: src: "/opt/grafana-v{{ grafana_version }}" dest: /opt/grafana state: link - name: Deploy Grafana configuration ansible.builtin.template: src: grafana.ini.j2 dest: /etc/grafana/grafana.ini owner: "{{ grafana_user }}" group: "{{ grafana_group }}" mode: '0640' notify: restart grafana - name: Deploy VictoriaMetrics datasource provisioning ansible.builtin.template: src: datasource-victoriametrics.yml.j2 dest: "{{ grafana_provisioning_dir }}/datasources/victoriametrics.yml" owner: "{{ grafana_user }}" group: "{{ grafana_group }}" mode: '0644' notify: restart grafana when: grafana_datasource_vm_enabled - name: Deploy dashboard provisioning ansible.builtin.template: src: dashboards.yml.j2 dest: "{{ grafana_provisioning_dir }}/dashboards/default.yml" owner: "{{ grafana_user }}" group: "{{ grafana_group }}" mode: '0644' notify: restart grafana - name: Deploy Grafana systemd service ansible.builtin.template: src: grafana.service.j2 dest: /etc/systemd/system/grafana.service owner: root group: root mode: '0644' notify: restart grafana - name: Enable and start Grafana service ansible.builtin.systemd: name: grafana enabled: "{{ grafana_service_enabled }}" state: "{{ grafana_service_state }}" daemon_reload: true