|
@@ -0,0 +1,28 @@
|
|
|
|
+- name: install duplicity
|
|
|
|
+ apt:
|
|
|
|
+ name: duplicity
|
|
|
|
+ state: present
|
|
|
|
+ become: yes
|
|
|
|
+- name: generate commands
|
|
|
|
+ set_fact:
|
|
|
|
+ backup_command: |-
|
|
|
|
+ duplicity --no-encryption --no-print-statistics --verbosity warning
|
|
|
|
+ {%- for selector in item.selectors|default([]) %}
|
|
|
|
+ {% if selector['option'] in ['exclude', 'include'] %}
|
|
|
|
+ --{{selector['option']}} "{{selector['shell_pattern']}}"
|
|
|
|
+ {%- endif %}
|
|
|
|
+ {% endfor %}
|
|
|
|
+ "{{item.source_path}}" "{{item.target_url}}"
|
|
|
|
+ with_items: '{{duplicity_backups}}'
|
|
|
|
+ register: duplicity_backup_commands
|
|
|
|
+- name: setup cron jobs
|
|
|
|
+ blockinfile:
|
|
|
|
+ dest: '/etc/crontab'
|
|
|
|
+ marker: '# ANSIBLE DUPLICITY BACKUPS {mark}'
|
|
|
|
+ block: |-
|
|
|
|
+ {% for backup in duplicity_backup_commands.results %}
|
|
|
|
+ {% for backup_job in backup.item.backup_cron_jobs %}
|
|
|
|
+ {{backup_job.minute}} {{backup_job.hour}} * * * {{backup.item.local_user}} {{backup.ansible_facts.backup_command}}
|
|
|
|
+ {% endfor %}
|
|
|
|
+ {% endfor %}
|
|
|
|
+ become: yes
|