Files
ansible-playbooks/monitor.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