|
@@ -6,30 +6,34 @@
|
|
|
- name: generate commands
|
|
|
set_fact:
|
|
|
backup_command: |-
|
|
|
- {% if item.source_host is defined %}
|
|
|
- mount_path="$(mktemp --tmpdir --directory ansible-duplicity-sshfs-XXXXXXXX)"; sshfs "{{item.source_host}}:{{item.source_path}}" $mount_path;
|
|
|
+ {% set source = item.0 %}
|
|
|
+ {% set target = item.1 %}
|
|
|
+ {% if source.source_host is defined %}
|
|
|
+ mount_path="$(mktemp --tmpdir --directory ansible-duplicity-sshfs-XXXXXXXX)"; sshfs "{{source.source_host}}:{{source.source_path}}" $mount_path;
|
|
|
{%- endif %}
|
|
|
duplicity --no-encryption --no-print-statistics --verbosity warning
|
|
|
- {%- for selector in item.selectors|default([]) %}
|
|
|
+ {%- for selector in source.selectors|default([]) %}
|
|
|
{% if selector['option'] in ['exclude', 'include'] %}
|
|
|
--{{selector['option']}}
|
|
|
- {%- if item.source_host is defined %}
|
|
|
- "{{ selector['shell_pattern'] | replace(item.source_path, '$mount_path') }}"
|
|
|
+ {%- if source.source_host is defined %}
|
|
|
+ "{{ selector['shell_pattern'] | replace(source.source_path, '$mount_path') }}"
|
|
|
{%- else %}
|
|
|
"{{selector['shell_pattern']}}"
|
|
|
{%- endif %}
|
|
|
{%- endif %}
|
|
|
{% endfor %}
|
|
|
- {%- if item.source_host is defined %}
|
|
|
+ {%- if source.source_host is defined %}
|
|
|
--allow-source-mismatch "$mount_path"
|
|
|
{%- else %}
|
|
|
- "{{item.source_path}}"
|
|
|
+ "{{source.source_path}}"
|
|
|
{%- endif %}
|
|
|
- "{{item.target_url}}";
|
|
|
- {%- if item.source_host is defined %}
|
|
|
+ "{{target.url}}";
|
|
|
+ {%- if source.source_host is defined %}
|
|
|
fusermount -u "$mount_path" && rm -r "$mount_path";
|
|
|
{%- endif %}
|
|
|
- with_items: '{{duplicity_backups}}'
|
|
|
+ with_subelements:
|
|
|
+ - '{{duplicity_backups}}'
|
|
|
+ - targets
|
|
|
register: duplicity_backup_commands
|
|
|
- name: setup cron jobs
|
|
|
blockinfile:
|
|
@@ -37,8 +41,10 @@
|
|
|
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}}
|
|
|
+ {% set source = backup.item.0 %}
|
|
|
+ {% set target = backup.item.1 %}
|
|
|
+ {% for backup_job in target.backup_cron_jobs %}
|
|
|
+ {{backup_job.minute}} {{backup_job.hour}} * * * {{source.local_user}} {{backup.ansible_facts.backup_command}}
|
|
|
{% endfor %}
|
|
|
{% endfor %}
|
|
|
become: yes
|