99 lines
2.7 KiB
YAML
99 lines
2.7 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: Check VictoriaMetrics connectivity from Grafana container using IP
|
|
ansible.builtin.shell: |
|
|
VM_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' victoriametrics)
|
|
docker exec grafana curl -s http://$$VM_IP:8428/health
|
|
register: vm_health_ip
|
|
changed_when: false
|
|
ignore_errors: yes
|
|
|
|
- name: Show VictoriaMetrics health check via IP
|
|
ansible.builtin.debug:
|
|
var: vm_health_ip.stdout |