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