89 lines
2.6 KiB
YAML
89 lines
2.6 KiB
YAML
---
|
|
- name: Create directories
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
mode: '0755'
|
|
loop:
|
|
- "{{ monitoring_base_dir }}"
|
|
- "{{ monitoring_base_dir }}/prometheus"
|
|
- "{{ monitoring_base_dir }}/alertmanager"
|
|
- "{{ monitoring_base_dir }}/loki"
|
|
- "{{ monitoring_base_dir }}/grafana/provisioning/datasources"
|
|
- "{{ monitoring_base_dir }}/rules"
|
|
|
|
- name: Copy example alert/recording rules
|
|
ansible.builtin.copy:
|
|
src: "roles/monitoring_stack/files/rules/"
|
|
dest: "{{ monitoring_base_dir }}/rules/"
|
|
mode: '0644'
|
|
|
|
- name: Render Prometheus config
|
|
ansible.builtin.template:
|
|
src: templates/prometheus.yml.j2
|
|
dest: "{{ monitoring_base_dir }}/prometheus/prometheus.yml"
|
|
mode: '0644'
|
|
notify: Restart monitoring stack
|
|
|
|
- name: Render Alertmanager config
|
|
ansible.builtin.template:
|
|
src: templates/alertmanager.yml.j2
|
|
dest: "{{ monitoring_base_dir }}/alertmanager/alertmanager.yml"
|
|
mode: '0640'
|
|
notify: Restart monitoring stack
|
|
|
|
- name: Render Loki config
|
|
ansible.builtin.template:
|
|
src: templates/loki-config.yml.j2
|
|
dest: "{{ monitoring_base_dir }}/loki/config.yml"
|
|
mode: '0644'
|
|
notify: Restart monitoring stack
|
|
|
|
- name: Render Grafana provisioning (datasources)
|
|
ansible.builtin.template:
|
|
src: templates/grafana-provisioning-datasources.yml.j2
|
|
dest: "{{ monitoring_base_dir }}/grafana/provisioning/datasources/datasources.yml"
|
|
mode: '0644'
|
|
notify: Restart monitoring stack
|
|
|
|
- name: Render docker-compose.yml
|
|
ansible.builtin.template:
|
|
src: templates/docker-compose.yml.j2
|
|
dest: "{{ monitoring_base_dir }}/docker-compose.yml"
|
|
mode: '0644'
|
|
notify: Restart monitoring stack
|
|
|
|
- name: Ensure Docker network exists
|
|
community.docker.docker_network:
|
|
name: "{{ monitoring_docker_network }}"
|
|
state: present
|
|
|
|
- name: Launch/Update monitoring stack via Compose v2
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ monitoring_base_dir }}"
|
|
state: present
|
|
|
|
- name: Wait for Grafana to be reachable
|
|
ansible.builtin.uri:
|
|
url: http://localhost:3000/api/health
|
|
status_code: 200
|
|
validate_certs: false
|
|
timeout: 30
|
|
retries: 10
|
|
delay: 3
|
|
method: GET
|
|
return_content: false
|
|
register: gf_health
|
|
until: gf_health is succeeded
|
|
|
|
- name: Show Grafana URL
|
|
ansible.builtin.debug:
|
|
msg: "Grafana is up: http://{{ ansible_host | default(inventory_hostname) }}:3000"
|
|
|
|
# Handlers
|
|
- name: Restart monitoring stack
|
|
listen: Restart monitoring stack
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ monitoring_base_dir }}"
|
|
state: present
|
|
pull: always |