From 7488c26f626bafd774e62cfae744a529c40c27e4 Mon Sep 17 00:00:00 2001 From: vincent Date: Sat, 12 Mar 2022 15:44:06 +0100 Subject: [PATCH] add backup task --- defaults/main.yml | 3 +++ files/cs-backup.sh | 39 +++++++++++++++++++++++++++++++++++++++ tasks/main.yml | 17 +++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100755 files/cs-backup.sh diff --git a/defaults/main.yml b/defaults/main.yml index f482a10..61b4cbe 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -25,3 +25,6 @@ consul_servers_list: "\ consul_join: [] consul_join_wan: [] consul_bootstrap_expect: 3 +consul_snapshot: false +consul_backup_location: "" +consul_cron_hour: 1 diff --git a/files/cs-backup.sh b/files/cs-backup.sh new file mode 100755 index 0000000..deec18e --- /dev/null +++ b/files/cs-backup.sh @@ -0,0 +1,39 @@ +export PATH_SNAPSHOT=$1 +export PATH_DIR="daily" +export PATH_BACKUP=$PATH_SNAPSHOT"/"$PATH_DIR +export TOKEN_AUTH_PROD= +export TOKEN_AUTH_STAGING= +export RETENTION=30 +export ENV="0" # (0 = staging, 1 = production) +export SNAPSHOT_FILE=$(date +%Y-%m-%d) + +select_env() { + if [ "$ENV" = "0" ] + then + export ENV_TOKEN="$TOKEN_AUTH_STAGING" + else + export ENV_TOKEN="$TOKEN_AUTH_PROD" + fi +} + +create_snapshot_folder(){ + mkdir -p $PATH_BACKUP +} + +run_snapshot() { + select_env + /usr/bin/consul snapshot save -token=$ENV_TOKEN $PATH_BACKUP/$SNAPSHOT_FILE.snap +} + +retention() { +find $PATH_BACKUP -name "*.snap" -mtime +${RETENTION} -print -exec rm {} \; +} + +main() { + create_snapshot_folder + run_snapshot + retention +} + +### START HERE ### +main $@ diff --git a/tasks/main.yml b/tasks/main.yml index fd4b4b9..dcdfeac 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -27,6 +27,23 @@ owner: consul mode: 0644 notify: reload consul configuration + +- name: configure backup + block: + - name: copy backup script + copy: + dest: "{{ consul_data_dir }}/cs-backup.sh" + mode: 0744 + owner: consul + src: cs-backup.sh + - name: consul snaphot cron.d + cron: + name: consul backup + user: consul + state: present + job: "{{ consul_data_dir }}/cs-backup.sh {{ consul_backup_location }}" + hour: "{{consul_cron_hour}}" + when: consul_snapshot - name: ensure service is started systemd: name: "{{ consul_service_name }}"