main.yml 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. - name: install duplicity
  2. apt:
  3. name: '{{duplitab_duplicity_package_name}}'
  4. state: present
  5. become: yes
  6. - name: install duplitab package
  7. copy:
  8. src: '{{duplitab_package_source_path}}'
  9. dest: '{{duplitab_package_install_path}}'
  10. become: yes
  11. register: duplitab_package
  12. - name: install duplitab
  13. apt:
  14. deb: '{{duplitab_package.dest}}'
  15. state: present
  16. - name: generate backup config
  17. set_fact:
  18. source_type: "{{item.0.source_host is defined | ternary('sshfs', 'local')}}"
  19. source_host: "{{item.0.source_host | default(None)}}"
  20. source_path: "{{item.0.source_path}}"
  21. selectors: "{{item.0.selectors|default([])}}"
  22. target_url: "{{item.1.url}}"
  23. target_via_sshfs: "{{item.1.sshfs | default(False)}}"
  24. encrypt_key: "{{item.1.encrypt_key | default(None)}}"
  25. encryption: "{{item.1.encrypt_key is defined}}"
  26. with_subelements:
  27. - '{{duplitab_backups}}'
  28. - targets
  29. register: duplitab_config
  30. - name: write /etc/duplitab
  31. copy:
  32. content: "{{duplitab_config.results | map(attribute = 'ansible_facts') | list | to_nice_yaml}}"
  33. dest: /etc/duplitab
  34. become: yes
  35. - name: setup cron jobs
  36. blockinfile:
  37. dest: '/etc/crontab'
  38. marker: '# ANSIBLE DUPLITAB BACKUPS {mark}'
  39. block: |-
  40. {% for job in duplitab_cron_jobs %}
  41. {{job.minute}} {{job.hour}} * * * {{job.local_user}} duplitab
  42. {%- if job.target_url_filter is defined %}
  43. --filter-target-url '{{job.target_url_filter}}'
  44. {%- endif %}
  45. {%- if job.quiet | default(True) %}
  46. --quiet
  47. {%- endif %}
  48. backup
  49. {% endfor %}
  50. become: yes