--- # Needs variables: # - item: dict describing the site install (cf group_vars/all/vars.yml) # - site_data_path: path of the site's data - name: "Data backups" block: - name: "Setup weekly backup of site's data" cron: name: "backup {{ item.slug }} data" # hour: "{{ 24 | random }}" # minute: "{{ 60 | random }}" special_time: weekly user: "root" job: "tar czf {{ backups_path }}/{{ item.slug }}.tar.gz {{ site_data_path }}" become: yes - name: "Setup data backup rotation with logrotate" blockinfile: path: "/etc/logrotate.d/{{ item.slug }}" marker: "# {mark} DATA BACKUP" create: yes block: | {{ backups_path }}/{{ item.slug }}.tar.gz { weekly rotate 4 nocompress dateext dateformat _%Y-%m-%d extension .tar.gz missingok } become: yes when: site_data_path is defined - name: "Database backups" block: # You need your root MySQL password stored in /root/.my.cnf to avoid # putting the password in the crontab - name: "Setup weekly backup of database" cron: name: "backup {{ item.slug }} database" special_time: weekly user: "root" # need root for passwordless mysqldump job: "mysqldump {{ item.mysql_database }} | gzip -c > {{ backups_path }}/{{ item.slug }}.sql.gz" become: yes - name: "Setup database backup rotation with logrotate" blockinfile: path: "/etc/logrotate.d/{{ item.slug }}" marker: "# {mark} DATABASE BACKUP" create: yes block: | {{ backups_path }}/{{ item.slug }}.sql.gz { weekly rotate 4 nocompress dateext dateformat _%Y-%m-%d extension .sql.gz missingok } become: yes when: item.mysql_database is defined