|  | @@ -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
 |