homelab-server/ansible/deploy_monitoring.yml

92 lines
2.4 KiB
YAML

---
- name: Deploy exporters to all nodes
hosts: ipa, control, web, media
become: true
tasks:
- name: Start node exporter container
containers.podman.podman_container:
name: node-exporter
image: docker.io/prom/node-exporter:latest
state: started
restart_policy: always
network: host
pid: host
volumes:
- /:/host:ro,rslave
- name: Allow node exporters in firewalld
ansible.posix.firewalld:
port: 9100/tcp
permanent: true
immediate: true
state: enabled
- name: Deploy central prometheus & grafana
hosts: control
become: true
tasks:
- name: Create Prometheus storage directory
ansible.builtin.file:
path: /var/lib/prometheus
state: directory
owner: "65534"
group: "65534"
mode: "0755"
- name: Create Grafana storage directory
ansible.builtin.file:
path: /var/lib/grafana
state: directory
owner: "472"
group: "472"
mode: "0755"
- name: Copy prometheus config
ansible.builtin.copy:
src: prometheus.yml
dest: /var/lib/prometheus/prometheus.yml
owner: root
group: root
mode: "0644"
- name: Allow monitoring ports in firewalld
ansible.posix.firewalld:
port: "{{ item }}"
permanent: true
immediate: true
state: enabled
loop:
- 9091/tcp
- 3001/tcp
- name: Run prometheus container
containers.podman.podman_container:
name: prometheus
image: docker.io/prom/prometheus:latest
state: started
restart_policy: always
ports:
- "9091:9090"
volumes:
- /var/lib/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:z
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- name: Run grafana container
containers.podman.podman_container:
name: grafana
image: docker.io/grafana/grafana:latest
state: started
restart_policy: always
ports:
- "3001:3000"
volumes:
- /var/lib/grafana:/var/lib/grafana:z
env:
GF_SECURITY_ALLOW_EMBEDDING: "true"
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: "Viewer"