--- - name: Create InfluxDB and Telegraf Directories file: path: "{{ item }}" state: directory with_items: - "{{ influxdb_data_directory }}" - "{{ telegraf_data_directory }}" - name: Create Grafana Directories file: path: "{{ item }}" state: directory owner: "472" recurse: yes with_items: - "{{ grafana_data_directory }}" - "{{ grafana_data_directory }}/data" - "{{ grafana_data_directory }}/data/dashboards/ansible-nas" - "{{ grafana_data_directory }}/config/" - "{{ grafana_data_directory }}/config/provisioning" - "{{ grafana_data_directory }}/config/provisioning/datasources" - "{{ grafana_data_directory }}/config/provisioning/dashboards" - name: InfluxDB docker_container: name: influxdb image: influxdb pull: true volumes: - "{{ influxdb_data_directory }}:/var/lib/influxdb:rw" ports: - "{{ grafana_influxdb_port }}:8086" restart_policy: unless-stopped env: INFLUXDB_LOGGING_LEVEL: "error" memory: 1g - name: hddtemp docker_container: name: hddtemp image: drewster727/hddtemp-docker pull: true privileged: true restart_policy: unless-stopped env: HDDTEMP_ARGS: "-q -d -F /dev/sd*" TZ: "{{ ansible_nas_timezone }}" memory: 128m - name: Template telegraf.conf template: src: telegraf/telegraf.conf dest: "{{ telegraf_data_directory }}/telegraf.conf" - name: Telegraf docker_container: name: telegraf image: telegraf pull: true links: - hddtemp:hddtemp privileged: true ipc_mode: host volumes: - "{{ telegraf_data_directory }}/telegraf.conf:/etc/telegraf/telegraf.conf:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro" - "/:/hostfs:ro" - "/etc:/hostfs/etc:ro" - "/proc:/hostfs/proc:ro" - "/sys:/hostfs/sys:ro" - "/var:/hostfs/var:ro" - "/run:/hostfs/run:ro" env: HOST_ETC: "/hostfs/etc" HOST_PROC: "/hostfs/proc" HOST_SYS: "/hostfs/sys" HOST_VAR: "/hostfs/var" HOST_RUN: "/hostfs/run" HOST_MOUNT_PREFIX: "/hostfs" restart_policy: unless-stopped memory: 1g - name: Template Grafana data source template: src: grafana/provisioning/datasources/ansible-nas.yml dest: "{{ grafana_data_directory }}/config/provisioning/datasources/ansible-nas.yml" - name: Copy Ansible-NAS Dashboard Provisioner copy: src: grafana/provisioning/dashboards/ansible-nas.yml dest: "{{ grafana_data_directory }}/config/provisioning/dashboards/ansible-nas.yml" - name: Copy Ansible-NAS Dashboard copy: src: grafana/dashboards/ansible-nas/ansible-nas-overview.json dest: "{{ grafana_data_directory }}/data/dashboards/ansible-nas/ansible-nas-overview.json" - name: Grafana docker_container: name: grafana image: grafana/grafana pull: true volumes: - "{{ grafana_data_directory }}/data:/var/lib/grafana:rw" - "{{ grafana_data_directory }}/config/provisioning:/etc/grafana/provisioning:ro" ports: - "{{ grafana_port }}:3000" restart_policy: unless-stopped memory: 1g labels: traefik.enable: "{{ grafana_available_externally }}" traefik.http.routers.grafana.rule: "Host(`grafana.{{ ansible_nas_domain }}`) " traefik.http.routers.grafana.tls.certresolver: "letsencrypt" traefik.http.routers.grafana.tls.domains[0].main: "{{ ansible_nas_domain }}" traefik.http.routers.grafana.tls.domains[0].sans: "*.{{ ansible_nas_domain }}" traefik.http.services.grafana.loadbalancer.server.port: "3000"