--- - name: Create Grafana directory structure ansible.builtin.file: path: "{{ item }}" state: directory owner: 472 group: 472 mode: '0755' loop: - "{{ grafana_base_dir }}" - "{{ grafana_data_dir }}" - "{{ grafana_config_dir }}/provisioning/datasources" - "{{ grafana_config_dir }}/provisioning/dashboards" - "{{ grafana_vm_data_dir }}" - "{{ grafana_vmagent_tmp_dir | dirname }}" - name: Set proper permissions for Grafana data directory ansible.builtin.file: path: "{{ grafana_data_dir }}" owner: 472 group: 472 recurse: yes mode: '0755' - name: Deploy vmagent configuration template: src: vmagent.yaml.j2 dest: "{{ grafana_vmagent_config }}" owner: root group: root mode: '0644' become: yes notify: restart vmagent - name: Deploy Grafana docker-compose.yml ansible.builtin.template: src: docker-compose.yml.j2 dest: "{{ grafana_base_dir }}/docker-compose.yml" owner: root group: root mode: '0644' - name: Deploy VictoriaMetrics datasource configuration template: src: victoriametrics-datasource.yml.j2 dest: "{{ grafana_config_dir }}/provisioning/datasources/victoriametrics.yml" owner: root group: root mode: '0644' become: yes - name: Deploy Loki datasource configuration template: src: loki-datasource.yml.j2 dest: "{{ grafana_config_dir }}/provisioning/datasources/loki.yml" owner: root group: root mode: '0644' become: yes - name: Start Grafana services ansible.builtin.shell: | cd "{{ grafana_base_dir }}" docker compose down docker compose up -d args: executable: /bin/bash register: grafana_up changed_when: "'Started' in grafana_up.stdout or 'Recreated' in grafana_up.stdout" - name: Wait for Grafana to start ansible.builtin.wait_for: host: "{{ server_ips.manage }}" port: "{{ grafana_port }}" timeout: 60 state: started become: no - name: Check Grafana container status ansible.builtin.shell: | docker ps --filter name=grafana --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" register: grafana_status changed_when: false - name: Show Grafana status ansible.builtin.debug: var: grafana_status.stdout - name: Check VictoriaMetrics connectivity from Grafana ansible.builtin.shell: | docker exec grafana curl -s http://victoriametrics:8428/health register: vm_health_check changed_when: false ignore_errors: yes - name: Show VictoriaMetrics health check ansible.builtin.debug: var: vm_health_check.stdout