--- - name: Create folder structure file: path: "{{ item }}" state: directory with_items: - "{{ data_dir }}/monitoring" - "{{ data_dir }}/monitoring/prometheus" - "{{ data_dir }}/monitoring/grafana" - name: Create Monitoring Docker Network docker_network: name: monitoring - name: Create Grafana Docker Container docker_container: name: grafana user: "{{ PUID }}" image: grafana/grafana:latest restart_policy: unless-stopped recreate: true networks: - name: homelab - name: monitoring volumes: - "{{ data_dir }}/monitoring/grafana:/var/lib/grafana" env: GF_AUTH_ANONYMOUS_ENABLED: "{{ GRAFANA_AUTH_ANONYMOUS_ENABLED }}" labels: traefik.enable: "true" traefik.http.routers.graf.rule: Host(`graf.fntz.net`) traefik.http.routers.graf.entrypoints: webSecure traefik.http.routers.graf.tls.certresolver: letsencrypt traefik.http.services.graf.loadbalancer.server.port: "3000" - name: Copy Prometheus Config template: src: "prometheus.yml.j2" dest: "{{ data_dir }}/monitoring/prometheus/config.yml" mode: "0744" - name: Create Prometheus Docker Container docker_container: name: prometheus image: prom/prometheus:latest restart_policy: unless-stopped recreate: true networks: - name: homelab - name: monitoring volumes: - "{{ data_dir }}/monitoring/prometheus:/prometheus" - "{{ data_dir }}/monitoring/prometheus/config.yml:/etc/prometheus/prometheus.yml" - name: Create CAdvisor Docker Container docker_container: name: cadvisor image: gcr.io/cadvisor/cadvisor:latest restart_policy: unless-stopped recreate: true privileged: true networks: - name: monitoring devices: - /dev/kmsg volumes: - "/:/rootfs:ro" - "/var/run:/var/run:ro" - "/sys:/sys:ro" - "/var/lib/docker:/var/lib/docker:ro" - "/dev/disk/:/dev/disk:ro" - name: Create Node-Exporter Docker Container docker_container: name: node-exporter image: prom/node-exporter:latest restart_policy: unless-stopped recreate: true networks: - name: monitoring