services: backup_odoo: image: sources.le-filament.com:5050/lefilament/duplicity_image/duplicity:latest hostname: {{ inventory_hostname_short | lower | regex_replace('_','') }}-{{ template_odoo_instance.key }} environment: SRC: "/mnt/backup/src" DST: "swift://{{ template_odoo_instance.key }}_{{ inventory_hostname | lower }}" PGHOST: "db" PGDATABASE: "{{ template_odoo_instance.value.db }}" PGUSER: "{{ template_odoo_instance.value.db_user }}" PGPASSWORD: "{{ template_odoo_instance.value.db_pass }}" PASSPHRASE: "{{ template_odoo_instance.value.odoo_backup_pass | default(template_odoo_instance.value.master_pass) }}" SWIFT_USERNAME: "{{ template_backup_credentials.username }}" SWIFT_PASSWORD: "{{ template_backup_credentials.password }}" SWIFT_AUTHURL: "{{ template_backup_account.value.authurl }}" SWIFT_AUTHVERSION: {{ template_backup_account.value.authversion }} SWIFT_TENANTNAME: "{{ template_backup_account.value.tenantname }}" SWIFT_TENANTID: "{{ template_backup_account.value.tenantid }}" SWIFT_REGIONNAME: "{{ template_backup_account.value.regionname }}" volumes: - {{ template_odoo_instance.key }}{{ template_backup_account.key }}_backup_cache:/root/.cache/duplicity/:rw - {{ template_odoo_instance.key }}_filestore:/mnt/backup/src/odoo:ro {% if template_odoo_instance.value.metabase | default(false) %} - {{ template_odoo_instance.key }}_metabase:/mnt/backup/src/metabase:ro {% endif %} networks: - {{ template_odoo_instance.key }}_default - public command: > /bin/ash -c " echo \"info: backup started on $$(date -Iseconds)\" && echo \"info: dumping '$$PGDATABASE' into '$$SRC/$$PGDATABASE.pgdump'...\" && pg_dump --no-owner --format c --file $$SRC/$$PGDATABASE.pgdump && echo \"info: backuping '$$SRC' to '$$DST'...\" && duplicity backup --full-if-older-than 6D $$SRC $$DST && echo \"info: removing all but 5 full backups in '$$DST'\" && duplicity remove-all-but-n-full 5 --force $$DST && echo \"info: backup done\"" networks: {{ template_odoo_instance.key }}_default: external: true public: driver_opts: encrypted: 1 volumes: {{ template_odoo_instance.key }}{{ template_backup_account.key }}_backup_cache: {{ template_odoo_instance.key }}_filestore: external: true {% if template_odoo_instance.value.metabase | default(false) %} {{ template_odoo_instance.key }}_metabase: external: true {% endif %}