{"id":18379951,"url":"https://github.com/samdbmg/ansible-schedule-duplicity","last_synced_at":"2026-03-19T04:06:41.640Z","repository":{"id":44231668,"uuid":"250111927","full_name":"samdbmg/ansible-schedule-duplicity","owner":"samdbmg","description":"Ansible Role to schedule automated backups to various storage services, with Duplicity","archived":false,"fork":false,"pushed_at":"2025-04-14T08:35:47.000Z","size":44,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T23:11:22.588Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samdbmg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-03-25T23:08:59.000Z","updated_at":"2025-04-14T08:26:58.000Z","dependencies_parsed_at":"2024-09-14T12:14:30.155Z","dependency_job_id":"892b9589-34b9-4b57-9d7e-1b234ec18e0b","html_url":"https://github.com/samdbmg/ansible-schedule-duplicity","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/samdbmg/ansible-schedule-duplicity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdbmg%2Fansible-schedule-duplicity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdbmg%2Fansible-schedule-duplicity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdbmg%2Fansible-schedule-duplicity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdbmg%2Fansible-schedule-duplicity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samdbmg","download_url":"https://codeload.github.com/samdbmg/ansible-schedule-duplicity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdbmg%2Fansible-schedule-duplicity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29499615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T02:07:14.481Z","status":"online","status_checked_at":"2026-02-16T02:03:22.852Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T00:41:31.488Z","updated_at":"2026-02-16T03:33:31.063Z","avatar_url":"https://github.com/samdbmg.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"ansible-schedule-duplicity\n=========\n\nSet up scheduled (cronjob) backups using the [Duplicity](http://duplicity.nongnu.org/) backup tool, which supports\nincremental encrypted backups to local filesystem mounts and various cloud storage locations, e.g. Dropbox.\n\nNote that Duplicity and various Python3 modules for backend support will be installed from PyPI into a virtualenv at\n`/opt/duplicity_venv`: see the `install_duplicity` option for ways to change that.\n\nRequirements\n------------\nNone.\n\nRole Variables\n--------------\n\n**Required Variables**\n\n```yaml\nduplicity_target_paths:\n  - path: /opt/my-awesome-config\n    name: awesome-config\n  - path: /etc/nginx\n  - path: /opt/other-data\n    backup_url_stem: file:///some-other-location-for-just-this-path\n```\nA list of paths to back up, and optional names for the backups. If no name is given, the full path is used. A\n`backup_url_stem` may also be specified, to override the default set below.\n\n```yaml\nbackup_url_stem: dpbx:///my_folder\n```\nDefault start of the backup path, to which the `name` or `path` above will be appended. See the\n[Duplicity manpage](http://duplicity.nongnu.org/vers7/duplicity.1.html) for how to use various backends.\n\nCan be overidden per-path with the `backup_url_stem` var.\n\n**Optional Variables**\n```yaml\ngpg_key: duplicity\n```\nPassphrase to use for backup encryption: you probably want to set this in a vault file!\n\n```yaml\nbackup_env_vars:\n  DPBX_ACCESS_TOKEN=ABC123ImNotARealDropboxToken\n```\nList of environment variables to set for the backup tool. Empty by default, but the example above is for Dropbox.\n\n```yaml\nbackup_schedule: 0 3 * * *\nfull_backup_after: 1W\ndelete_backups_after: 1Y\n```\nBackup schedule controls. `backup_schedule` is a cron line defining how often to run Duplicity, which will run an\nincremental backup if it can, unless the period in `full_backup_after` has passed, in which case it will run a full\nbackup. Finally, old backups are deleted after `delete_backups_after` if they aren't referenced by newer incremental\nbackups. See [the manpage](http://duplicity.nongnu.org/vers7/duplicity.1.html#sect8_) for valid time range values.\n\n```yaml\nrun_backup_now: true\n```\nShould we run a full backup immediately as well as the cronjob?\n\n```yaml\ninstall_duplicity: true\nduplicity_install_package: duplicity\nduplicity_venv_path: /opt/duplicity_venv\nduplicity_binary: \"/usr/local/bin/duplicity\"\n```\nShould we install Duplicity, and if so, where (a Python3 virtualenv will be created for it). We'll also write a wrapper\nscript to `duplicity_binary` to execute it.\n\n```yaml\nduplicity_install_name: duplicity\n```\nCustomise the name of this backup installation in cronjobs and files, to allow the role to be used multiple times on\na host.\n\nDependencies\n------------\n\nNone\n\nExample Playbook\n----------------\n\nIncluding an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:\n\n```yaml\n- hosts: backup_targets\n  roles:\n      - role: ansible-schedule-duplicity\n        duplicity_target_paths:\n          - name: user-data\n            path: /opt/user-data\n        backup_url_stem: dpbx:///duplicity-backups\n```\n\nLicense\n-------\n\nMIT\n\nAuthor Information\n------------------\n\nSam Mesterton-Gibbons \u003csam@samn.co.uk\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamdbmg%2Fansible-schedule-duplicity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamdbmg%2Fansible-schedule-duplicity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamdbmg%2Fansible-schedule-duplicity/lists"}