# vim: ft=yaml.ansible
---
- name: Deploy Restic with Docker Compose
  docker_compose:
    project_name: restic
    pull: true
    definition:
      version: '3.8'

      services:
        backup:
          image: "mazzolino/restic:{{ services.restic.version }}"
          restart: unless-stopped
          environment:
            RUN_ON_STARTUP: 'false'
            BACKUP_CRON: '0 0 3 * * *'
            RESTIC_REPOSITORY: "b2:{{ secrets.restic.b2.bucket }}:{{ services.restic.repo }}"
            RESTIC_PASSWORD: "{{ secrets.restic.repo_pw }}"
            RESTIC_BACKUP_SOURCES: /mnt/volumes
            RESTIC_BACKUP_ARGS: >-
              --tag docker-volumes
              --exclude '*.tmp'
              --verbose
            RESTIC_FORGET_ARGS: >-
              --keep-last 10
              --keep-daily 7
              --keep-weekly 5
              --keep-monthly 12
            B2_ACCOUNT_ID: "{{ secrets.restic.b2.id }}"
            B2_ACCOUNT_KEY: "{{ secrets.restic.b2.key }}"
            TZ: "{{ timezone }}"
          volumes:
            - "{{ services.caddy.volume }}:/mnt/volumes/caddy:ro"
            - "{{ services.nextcloud.volume }}:/mnt/volumes/nextcloud:ro"
            - "{{ services.emby.volume }}/programdata:/mnt/volumes/emby/programdata:ro"

        prune:
          image: "mazzolino/restic:{{ services.restic.version }}"
          restart: unless-stopped
          environment:
            RUN_ON_STARTUP: 'false'
            PRUNE_CRON: '0 0 4 * * *'
            RESTIC_REPOSITORY: "b2:{{ secrets.restic.b2.bucket }}:{{ services.restic.repo }}"
            RESTIC_PASSWORD: "{{ secrets.restic.repo_pw }}"
            RESTIC_PRUNE_ARGS: >-
              --verbose
            B2_ACCOUNT_ID: "{{ secrets.restic.b2.id }}"
            B2_ACCOUNT_KEY: "{{ secrets.restic.b2.key }}"
            TZ: "{{ timezone }}"

        check:
          image: "mazzolino/restic:{{ services.restic.version }}"
          restart: unless-stopped
          environment:
            RUN_ON_STARTUP: 'false'
            CHECK_CRON: '0 0 5 * * *'
            RESTIC_REPOSITORY: "b2:{{ secrets.restic.b2.bucket }}:{{ services.restic.repo }}"
            RESTIC_PASSWORD: "{{ secrets.restic.repo_pw }}"
            RESTIC_CHECK_ARGS: >-
              --verbose
            B2_ACCOUNT_ID: "{{ secrets.restic.b2.id }}"
            B2_ACCOUNT_KEY: "{{ secrets.restic.b2.key }}"
            TZ: "{{ timezone }}"