# vim: ft=yaml.ansible --- - name: Deploy Restic with Docker Compose community.docker.docker_compose: project_name: restic state: "{{ 'absent' if down is defined and down else 'present' }}" restarted: "{{ restart is defined and restart }}" recreate: "{{ 'always' if recreate is defined and recreate else 'smart' }}" 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 PRE_COMMANDS: |- docker exec -u www-data nextcloud_app_1 php occ maintenance:mode --on POST_COMMANDS_EXIT: |- docker exec -u www-data nextcloud_app_1 php occ maintenance:mode --off B2_ACCOUNT_ID: "{{ secrets.restic.b2.id }}" B2_ACCOUNT_KEY: "{{ secrets.restic.b2.key }}" TZ: "{{ timezone }}" volumes: "{{ restic_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 }}"