olimp/roles/grafana/tasks/main.yml
2025-11-25 12:04:07 +00:00

97 lines
2.5 KiB
YAML

---
- 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
register: grafana_status
changed_when: false
- name: Show Grafana status
ansible.builtin.debug:
var: grafana_status.stdout
- name: Verify all services are running
ansible.builtin.shell: |
cd "{{ grafana_base_dir }}" && docker compose ps
register: services_status
changed_when: false
- name: Show services status
ansible.builtin.debug:
var: services_status.stdout