104 lines
3.0 KiB
YAML
104 lines
3.0 KiB
YAML
---
|
|
# Gather facts from monitored hosts so we can use their IPs on the monitoring server
|
|
- name: Gather facts from monitored nodes
|
|
hosts: monitored
|
|
gather_facts: true
|
|
|
|
- name: Monitored nodes
|
|
hosts: monitored
|
|
|
|
vars:
|
|
username: matt
|
|
docker_add_repo: true
|
|
docker_users:
|
|
- "{{ username }}"
|
|
|
|
roles:
|
|
- role: geerlingguy.docker
|
|
become: true
|
|
|
|
tasks:
|
|
- name: Create node-exporter directory
|
|
ansible.builtin.file:
|
|
path: "{{ ansible_env.HOME }}/node-exporter"
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Copy node-exporter compose file
|
|
ansible.builtin.copy:
|
|
src: node-exporter/compose.yaml
|
|
dest: "{{ ansible_env.HOME }}/node-exporter/compose.yaml"
|
|
|
|
- name: Start node-exporter
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ ansible_env.HOME }}/node-exporter/"
|
|
state: present
|
|
|
|
- name: Monitoring server
|
|
hosts: monitoring_server
|
|
|
|
vars:
|
|
username: matt
|
|
docker_add_repo: true
|
|
docker_users:
|
|
- "{{ username }}"
|
|
|
|
roles:
|
|
- role: geerlingguy.docker
|
|
become: true
|
|
|
|
tasks:
|
|
- name: Create monitoring directory
|
|
ansible.builtin.file:
|
|
path: "{{ ansible_env.HOME }}/monitoring"
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Create grafana provisioning directories
|
|
ansible.builtin.file:
|
|
path: "{{ ansible_env.HOME }}/monitoring/grafana/provisioning/{{ item }}"
|
|
state: directory
|
|
mode: "0755"
|
|
loop:
|
|
- datasources
|
|
- dashboards
|
|
|
|
- name: Template prometheus config
|
|
ansible.builtin.template:
|
|
src: monitoring/prometheus.yml.j2
|
|
dest: "{{ ansible_env.HOME }}/monitoring/prometheus.yml"
|
|
mode: "0644"
|
|
|
|
- name: Copy compose file
|
|
ansible.builtin.copy:
|
|
src: monitoring/compose.yaml
|
|
dest: "{{ ansible_env.HOME }}/monitoring/compose.yaml"
|
|
|
|
- name: Copy grafana datasource config
|
|
ansible.builtin.copy:
|
|
src: monitoring/grafana/provisioning/datasources/prometheus.yaml
|
|
dest: "{{ ansible_env.HOME }}/monitoring/grafana/provisioning/datasources/prometheus.yaml"
|
|
|
|
- name: Copy grafana dashboard provisioning config
|
|
ansible.builtin.copy:
|
|
src: monitoring/grafana/provisioning/dashboards/dashboards.yaml
|
|
dest: "{{ ansible_env.HOME }}/monitoring/grafana/provisioning/dashboards/dashboards.yaml"
|
|
|
|
- name: Fetch Node Exporter Full dashboard from grafana.com
|
|
ansible.builtin.get_url:
|
|
url: "https://grafana.com/api/dashboards/1860/revisions/37/download"
|
|
dest: "{{ ansible_env.HOME }}/monitoring/grafana/provisioning/dashboards/node-exporter-full.json"
|
|
mode: "0644"
|
|
force: false
|
|
|
|
- name: Write .env file with secrets
|
|
ansible.builtin.copy:
|
|
content: "GRAFANA_ADMIN_PASSWORD={{ secrets.GRAFANA_ADMIN_PASSWORD }}\n"
|
|
dest: "{{ ansible_env.HOME }}/monitoring/.env"
|
|
mode: "0600"
|
|
|
|
- name: Start monitoring services
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ ansible_env.HOME }}/monitoring/"
|
|
state: present
|