From 45c3b508e697b0489d5bc0cfa454b6914aabcf9c Mon Sep 17 00:00:00 2001 From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de> Date: Mon, 9 Mar 2020 23:18:59 +0100 Subject: [PATCH] Move rsnapshot functionality to supplemental/rsnapshot Both postgres and mysql require the rsnapshot role to run first! --- mysql/files/crontab | 4 - mysql/files/rsnapshot.conf | 17 -- mysql/tasks/main.yml | 25 +-- postgres/defaults/main.yml | 3 - postgres/files/rsnapshot.conf | 1 + postgres/tasks/main.yml | 38 +--- postgres/templates/crontab.j2 | 7 - postgres/templates/rsnapshot.conf.j2 | 256 --------------------------- 8 files changed, 12 insertions(+), 339 deletions(-) delete mode 100644 mysql/files/crontab delete mode 100644 postgres/defaults/main.yml create mode 100644 postgres/files/rsnapshot.conf delete mode 100644 postgres/templates/crontab.j2 delete mode 100644 postgres/templates/rsnapshot.conf.j2 diff --git a/mysql/files/crontab b/mysql/files/crontab deleted file mode 100644 index 901e206..0000000 --- a/mysql/files/crontab +++ /dev/null @@ -1,4 +0,0 @@ -3 * * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/mysql.conf hourly -55 23 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/mysql.conf daily -45 23 * * 6 root /usr/bin/rsnapshot -c /etc/rsnapshot.d/mysql.conf weekly -35 23 3 * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/mysql.conf monthly diff --git a/mysql/files/rsnapshot.conf b/mysql/files/rsnapshot.conf index bba263a..ea75fa5 100644 --- a/mysql/files/rsnapshot.conf +++ b/mysql/files/rsnapshot.conf @@ -1,18 +1 @@ -config_version 1.2 -snapshot_root /var/backups/ -cmd_cp /bin/cp -cmd_rm /bin/rm -cmd_rsync /usr/bin/rsync -cmd_logger /usr/bin/logger -cmd_du /usr/bin/du - -retain hourly 6 -retain daily 7 -retain weekly 4 -retain monthly 6 - -verbose 2 -loglevel 3 -lockfile /var/run/rsnapshot-mysql.pid - backup_script /usr/local/bin/mysqlbackup.sh mysql/ diff --git a/mysql/tasks/main.yml b/mysql/tasks/main.yml index 820e52e..56311c8 100644 --- a/mysql/tasks/main.yml +++ b/mysql/tasks/main.yml @@ -58,19 +58,6 @@ group: root mode: '0755' -- name: ensure we have rsnapshot - apt: - name: rsnapshot - state: present - -- name: ensure we have a directory for rsnapshot configuration - file: - path: /etc/rsnapshot.d - state: directory - owner: root - group: root - mode: '0755' - - name: ensure we backup all the mysql databases with rsnapshot copy: src: rsnapshot.conf @@ -79,10 +66,8 @@ group: root mode: '0644' -- name: make rsnapshot run regularly - copy: - src: crontab - dest: /etc/cron.d/mysql-snapshot - owner: root - group: root - mode: '0644' +- name: remove obsolete crontab + file: + path: /etc/cron.d/mysql-snapshot + state: absent + diff --git a/postgres/defaults/main.yml b/postgres/defaults/main.yml deleted file mode 100644 index 2e7fe54..0000000 --- a/postgres/defaults/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- - -postgres_enable_frequently: true diff --git a/postgres/files/rsnapshot.conf b/postgres/files/rsnapshot.conf new file mode 100644 index 0000000..3a62e9c --- /dev/null +++ b/postgres/files/rsnapshot.conf @@ -0,0 +1 @@ +backup_script /usr/local/bin/pgbackup.sh pgsql/ diff --git a/postgres/tasks/main.yml b/postgres/tasks/main.yml index 4eb5ce3..5e7a73d 100644 --- a/postgres/tasks/main.yml +++ b/postgres/tasks/main.yml @@ -15,13 +15,6 @@ state: started enabled: true -- name: ensure we have rsnapshot - apt: - name: rsnapshot - state: present - tags: - - rsnapshot - - name: ensure we have our postgres backup script copy: src: pgbackup.sh @@ -29,35 +22,16 @@ owner: root group: root mode: '0755' - tags: - - rsnapshot - -- name: ensure we have a directory for rsnapshot configuration - file: - path: /etc/rsnapshot.d - state: directory - owner: root - group: root - mode: '0755' - tags: - - rsnapshot - name: ensure we have our rsnapshot config - template: - src: rsnapshot.conf.j2 + copy: + src: rsnapshot.conf dest: /etc/rsnapshot.d/postgres.conf owner: root group: root mode: '0644' - tags: - - rsnapshot -- name: ensure rsnapshot is running regularly - template: - src: crontab.j2 - dest: /etc/cron.d/postgres-snapshot - owner: root - group: root - mode: '0644' - tags: - - rsnapshot +- name: remove obsolete crontab + file: + path: /etc/cron.d/postgres-snapshot + state: absent diff --git a/postgres/templates/crontab.j2 b/postgres/templates/crontab.j2 deleted file mode 100644 index ca64c39..0000000 --- a/postgres/templates/crontab.j2 +++ /dev/null @@ -1,7 +0,0 @@ -{% if postgres_enable_frequently %} -5,20,35,50 * * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/postgres.conf frequently -{% endif %} -3 * * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/postgres.conf hourly -51 23 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/postgres.conf daily -41 23 * * 6 root /usr/bin/rsnapshot -c /etc/rsnapshot.d/postgres.conf weekly -31 23 2 * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/postgres.conf monthly diff --git a/postgres/templates/rsnapshot.conf.j2 b/postgres/templates/rsnapshot.conf.j2 deleted file mode 100644 index 97657c5..0000000 --- a/postgres/templates/rsnapshot.conf.j2 +++ /dev/null @@ -1,256 +0,0 @@ -################################################# -# rsnapshot.conf - rsnapshot configuration file # -################################################# -# # -# PLEASE BE AWARE OF THE FOLLOWING RULE: # -# # -# This file requires tabs between elements # -# # -################################################# - -####################### -# CONFIG FILE VERSION # -####################### - -config_version 1.2 - -########################### -# SNAPSHOT ROOT DIRECTORY # -########################### - -# All snapshots will be stored under this root directory. -# -snapshot_root /var/backups/ - -# If no_create_root is enabled, rsnapshot will not automatically create the -# snapshot_root directory. This is particularly useful if you are backing -# up to removable media, such as a FireWire or USB drive. -# -#no_create_root 1 - -################################# -# EXTERNAL PROGRAM DEPENDENCIES # -################################# - -# LINUX USERS: Be sure to uncomment "cmd_cp". This gives you extra features. -# EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility. -# -# See the README file or the man page for more details. -# -cmd_cp /bin/cp - -# uncomment this to use the rm program instead of the built-in perl routine. -# -cmd_rm /bin/rm - -# rsync must be enabled for anything to work. This is the only command that -# must be enabled. -# -cmd_rsync /usr/bin/rsync - -# Uncomment this to enable remote ssh backups over rsync. -# -#cmd_ssh /usr/bin/ssh - -# Comment this out to disable syslog support. -# -cmd_logger /usr/bin/logger - -# Uncomment this to specify the path to "du" for disk usage checks. -# If you have an older version of "du", you may also want to check the -# "du_args" parameter below. -# -#cmd_du /usr/bin/du - -# Uncomment this to specify the path to rsnapshot-diff. -# -#cmd_rsnapshot_diff /usr/bin/rsnapshot-diff - -# Specify the path to a script (and any optional arguments) to run right -# before rsnapshot syncs files -# -#cmd_preexec /path/to/preexec/script - -# Specify the path to a script (and any optional arguments) to run right -# after rsnapshot syncs files -# -#cmd_postexec /path/to/postexec/script - -# Paths to lvcreate, lvremove, mount and umount commands, for use with -# Linux LVMs. -# -#linux_lvm_cmd_lvcreate /sbin/lvcreate -#linux_lvm_cmd_lvremove /sbin/lvremove -#linux_lvm_cmd_mount /bin/mount -#linux_lvm_cmd_umount /bin/umount - -######################################### -# BACKUP LEVELS / INTERVALS # -# Must be unique and in ascending order # -# e.g. alpha, beta, gamma, etc. # -######################################### - -{% if postgres_enable_frequently %} -retain frequently 4 -{% endif %} -retain hourly 6 -retain daily 7 -retain weekly 4 -retain monthly 6 - -############################################ -# GLOBAL OPTIONS # -# All are optional, with sensible defaults # -############################################ - -# Verbose level, 1 through 5. -# 1 Quiet Print fatal errors only -# 2 Default Print errors and warnings only -# 3 Verbose Show equivalent shell commands being executed -# 4 Extra Verbose Show extra verbose information -# 5 Debug mode Everything -# -verbose 2 - -# Same as "verbose" above, but controls the amount of data sent to the -# logfile, if one is being used. The default is 3. -# If you want the rsync output, you have to set it to 4 -# -loglevel 3 - -# If you enable this, data will be written to the file you specify. The -# amount of data written is controlled by the "loglevel" parameter. -# -#logfile /var/log/rsnapshot.log - -# If enabled, rsnapshot will write a lockfile to prevent two instances -# from running simultaneously (and messing up the snapshot_root). -# If you enable this, make sure the lockfile directory is not world -# writable. Otherwise anyone can prevent the program from running. -# -lockfile /var/run/rsnapshot.pid - -# By default, rsnapshot check lockfile, check if PID is running -# and if not, consider lockfile as stale, then start -# Enabling this stop rsnapshot if PID in lockfile is not running -# -#stop_on_stale_lockfile 0 - -# Default rsync args. All rsync commands have at least these options set. -# -#rsync_short_args -a -#rsync_long_args --delete --numeric-ids --relative --delete-excluded - -# ssh has no args passed by default, but you can specify some here. -# -#ssh_args -p 22 - -# Default arguments for the "du" program (for disk space reporting). -# The GNU version of "du" is preferred. See the man page for more details. -# If your version of "du" doesn't support the -h flag, try -k flag instead. -# -#du_args -csh - -# If this is enabled, rsync won't span filesystem partitions within a -# backup point. This essentially passes the -x option to rsync. -# The default is 0 (off). -# -#one_fs 0 - -# The include and exclude parameters, if enabled, simply get passed directly -# to rsync. If you have multiple include/exclude patterns, put each one on a -# separate line. Please look up the --include and --exclude options in the -# rsync man page for more details on how to specify file name patterns. -# -#include ??? -#include ??? -#exclude ??? -#exclude ??? - -# The include_file and exclude_file parameters, if enabled, simply get -# passed directly to rsync. Please look up the --include-from and -# --exclude-from options in the rsync man page for more details. -# -#include_file /path/to/include/file -#exclude_file /path/to/exclude/file - -# If your version of rsync supports --link-dest, consider enabling this. -# This is the best way to support special files (FIFOs, etc) cross-platform. -# The default is 0 (off). -# -#link_dest 0 - -# When sync_first is enabled, it changes the default behaviour of rsnapshot. -# Normally, when rsnapshot is called with its lowest interval -# (i.e.: "rsnapshot alpha"), it will sync files AND rotate the lowest -# intervals. With sync_first enabled, "rsnapshot sync" handles the file sync, -# and all interval calls simply rotate files. See the man page for more -# details. The default is 0 (off). -# -#sync_first 0 - -# If enabled, rsnapshot will move the oldest directory for each interval -# to [interval_name].delete, then it will remove the lockfile and delete -# that directory just before it exits. The default is 0 (off). -# -#use_lazy_deletes 0 - -# Number of rsync re-tries. If you experience any network problems or -# network card issues that tend to cause ssh to fail with errors like -# "Corrupted MAC on input", for example, set this to a non-zero value -# to have the rsync operation re-tried. -# -#rsync_numtries 0 - -# LVM parameters. Used to backup with creating lvm snapshot before backup -# and removing it after. This should ensure consistency of data in some special -# cases -# -# LVM snapshot(s) size (lvcreate --size option). -# -#linux_lvm_snapshotsize 100M - -# Name to be used when creating the LVM logical volume snapshot(s). -# -#linux_lvm_snapshotname rsnapshot - -# Path to the LVM Volume Groups. -# -#linux_lvm_vgpath /dev - -# Mount point to use to temporarily mount the snapshot(s). -# -#linux_lvm_mountpath /path/to/mount/lvm/snapshot/during/backup - -############################### -### BACKUP POINTS / SCRIPTS ### -############################### - -backup_script /usr/local/bin/pgbackup.sh pgsql/ - -# LOCALHOST -#backup /home/ localhost/ -#backup /etc/ localhost/ -#backup /usr/local/ localhost/ -#backup /var/log/rsnapshot localhost/ -#backup /etc/passwd localhost/ -#backup /home/foo/My Documents/ localhost/ -#backup /foo/bar/ localhost/ one_fs=1, rsync_short_args=-urltvpog -#backup_script /usr/local/bin/backup_pgsql.sh localhost/postgres/ -# You must set linux_lvm_* parameters below before using lvm snapshots -#backup lvm://vg0/xen-home/ lvm-vg0/xen-home/ - -# EXAMPLE.COM -#backup_exec /bin/date "+ backup of example.com started at %c" -#backup root@example.com:/home/ example.com/ +rsync_long_args=--bwlimit=16,exclude=core -#backup root@example.com:/etc/ example.com/ exclude=mtab,exclude=core -#backup_exec ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql" -#backup root@example.com:/var/db/dump/ example.com/ -#backup_exec /bin/date "+ backup of example.com ended at %c" - -# CVS.SOURCEFORGE.NET -#backup_script /usr/local/bin/backup_rsnapshot_cvsroot.sh rsnapshot.cvs.sourceforge.net/ - -# RSYNC.SAMBA.ORG -#backup rsync://rsync.samba.org/rsyncftp/ rsync.samba.org/rsyncftp/ - -- GitLab