From 35cbcdb8390faddc64ce151d722f59fbcfd1d2ff Mon Sep 17 00:00:00 2001 From: Jim Grady Date: Mon, 23 Nov 2020 21:53:33 -0500 Subject: [PATCH 1/2] Create backup/restore scripts for docker containers (#826) * Update package versions * Implement backup script * Implement restore script --- deploy/roles/aws_access/defaults/main.yml | 2 +- .../templates/combine-backup.j2 | 2 +- docker_deploy/group_vars/qa/main.yml | 10 +- docker_deploy/group_vars/server/main.yml | 11 +- docker_deploy/playbook_target_setup.yml | 4 + .../roles/combine_backup/defaults/main.yml | 8 + .../roles/combine_backup/tasks/main.yml | 39 ++++ .../templates/combine-backup.j2 | 117 ++++++++++++ .../templates/combine-restore.j2 | 174 ++++++++++++++++++ .../roles/combine_config/tasks/main.yml | 2 +- .../templates/docker-compose.yml.j2 | 2 +- .../roles/combine_user/tasks/main.yml | 9 - docker_deploy/vars/config_common.yml | 2 + docker_deploy/vars/packages.yml | 5 +- 14 files changed, 367 insertions(+), 20 deletions(-) create mode 100644 docker_deploy/roles/combine_backup/defaults/main.yml create mode 100644 docker_deploy/roles/combine_backup/tasks/main.yml create mode 100644 docker_deploy/roles/combine_backup/templates/combine-backup.j2 create mode 100644 docker_deploy/roles/combine_backup/templates/combine-restore.j2 diff --git a/deploy/roles/aws_access/defaults/main.yml b/deploy/roles/aws_access/defaults/main.yml index 306ae0c3b6..361b117720 100644 --- a/deploy/roles/aws_access/defaults/main.yml +++ b/deploy/roles/aws_access/defaults/main.yml @@ -1,4 +1,4 @@ --- aws_config_dir: "/home/{{ combine_user }}/.aws" -aws_upload_profile: upload +aws_backup_profile: upload aws_download_profile: download diff --git a/deploy/roles/combine_backup/templates/combine-backup.j2 b/deploy/roles/combine_backup/templates/combine-backup.j2 index b5a3acd8b3..ea78a40daa 100755 --- a/deploy/roles/combine_backup/templates/combine-backup.j2 +++ b/deploy/roles/combine_backup/templates/combine-backup.j2 @@ -38,5 +38,5 @@ done # need to specify full path because $PATH does not contain # /usr/local/bin when run as a cron job if [ -e /usr/local/bin/aws ] ; then - /usr/local/bin/aws s3 cp ${BACKUP_FILE} ${AWS_FILE} --profile {{ aws_upload_profile }} + /usr/local/bin/aws s3 cp ${BACKUP_FILE} ${AWS_FILE} --profile {{ aws_backup_profile }} fi diff --git a/docker_deploy/group_vars/qa/main.yml b/docker_deploy/group_vars/qa/main.yml index 6aea62eac4..d857f8daff 100644 --- a/docker_deploy/group_vars/qa/main.yml +++ b/docker_deploy/group_vars/qa/main.yml @@ -22,7 +22,9 @@ cert_email: "" aws_user: "{{ combine_user }}" aws_group: "{{ combine_group }}" -# my_default_aws_profile: ecr_read_only -# my_aws_profiles: -# - ecr_read_write -# - s3_read_write +aws_backup_profile: s3_read_write +aws_ecr_profile: ecr_read_write + +my_aws_profiles: + - "{{ aws_backup_profile }}" + - "{{ aws_ecr_profile }}" diff --git a/docker_deploy/group_vars/server/main.yml b/docker_deploy/group_vars/server/main.yml index c09336af40..1632373135 100644 --- a/docker_deploy/group_vars/server/main.yml +++ b/docker_deploy/group_vars/server/main.yml @@ -28,6 +28,13 @@ aws_group: "{{ combine_group }}" # - store backups # ECR: # - install container images +aws_backup_profile: s3_read_write +aws_ecr_profile: ecr_read_only + my_aws_profiles: - - s3_read_write - - ecr_read_only + - "{{ aws_backup_profile }}" + - "{{ aws_ecr_profile }}" + +# Define backup times (UTC) +backup_hour: "3" +backup_minute: "15" diff --git a/docker_deploy/playbook_target_setup.yml b/docker_deploy/playbook_target_setup.yml index 8efc05a7ba..97bd818f67 100644 --- a/docker_deploy/playbook_target_setup.yml +++ b/docker_deploy/playbook_target_setup.yml @@ -46,3 +46,7 @@ name: aws_access tags: - aws + + - name: setup container backups + import_role: + name: combine_backup diff --git a/docker_deploy/roles/combine_backup/defaults/main.yml b/docker_deploy/roles/combine_backup/defaults/main.yml new file mode 100644 index 0000000000..9aa3b8311a --- /dev/null +++ b/docker_deploy/roles/combine_backup/defaults/main.yml @@ -0,0 +1,8 @@ +--- +# backup_hour: 7 +# backup_minute: 15 + +aws_s3_backup_loc: thecombine.app/backups + +backend_files_subdir: ".CombineFiles" +mongo_files_subdir: "dump" diff --git a/docker_deploy/roles/combine_backup/tasks/main.yml b/docker_deploy/roles/combine_backup/tasks/main.yml new file mode 100644 index 0000000000..80b5937655 --- /dev/null +++ b/docker_deploy/roles/combine_backup/tasks/main.yml @@ -0,0 +1,39 @@ +--- + +####################################################### +# +# Install and configure the backup script for the docker +# containers + +- name: create folders for backups + file: + name: "{{ item }}" + owner: "{{ combine_user }}" + group: "{{ combine_group }}" + mode: 0755 + state: directory + with_items: + - "{{ combine_backup_dir }}" + - "{{ combine_app_dir }}/bin" + +- name: install backup/restore scripts + template: + src: "{{ item }}.j2" + dest: "{{ combine_app_dir }}/bin/{{ item }}" + owner: "{{ combine_user }}" + group: "{{ combine_group }}" + mode: 0755 + with_items: + - combine-backup + - combine-restore + +- name: schedule regular backups + cron: + name: combine daily backup + job: "{{ combine_app_dir }}/bin/combine-backup" + user: "{{ combine_user }}" + hour: "{{ backup_hour }}" + minute: "{{ backup_minute }}" + when: + - backup_hour is defined + - backup_minute is defined diff --git a/docker_deploy/roles/combine_backup/templates/combine-backup.j2 b/docker_deploy/roles/combine_backup/templates/combine-backup.j2 new file mode 100644 index 0000000000..9643a0c921 --- /dev/null +++ b/docker_deploy/roles/combine_backup/templates/combine-backup.j2 @@ -0,0 +1,117 @@ +#!/bin/bash + +###################################################### +# Backup job for docker containers running TheCombine +###################################################### + +set -e + +VERBOSE="0" + +echo_verbose() { + if [ "${VERBOSE}" == "1" ] ; then + echo $@ + fi +} + +usage() { + cat < Date: Tue, 24 Nov 2020 11:03:07 -0500 Subject: [PATCH 2/2] Bump version to 0.6.0-alpha.0 (#827) Late update to version for development. --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0503751217..e556b5e07c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "thecombine", - "version": "0.6.0", + "version": "0.6.0-alpha.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9e8eb9b7d6..764114c02d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "thecombine", - "version": "0.6.0", + "version": "0.6.0-alpha.0", "license": "MIT", "private": true, "scripts": {