# vim: ft=yaml.ansible
---
- name: Deploy Restic with Docker Compose
  community.docker.docker_compose:
    project_name: restic
    state: "{{ 'absent' if stop is defined and stop else 'present' }}"
    restarted: "{{ stop is undefined or not stop }}"
    pull: true
    definition:
      version: '3.8'

      services:
        backup:
          image: mazzolino/restic:{{ services.restic.version }}
          restart: always
          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: "{{ backup_volumes }}"

        prune:
          image: mazzolino/restic:{{ services.restic.version }}
          restart: always
          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: always
          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 }}"