Added backup docker image
This commit is contained in:
parent
f76a254b04
commit
25e4bdda14
22 changed files with 183 additions and 0 deletions
51
infrastrucure/docker-backup/build.py
Normal file
51
infrastrucure/docker-backup/build.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
from os import environ
|
||||||
|
from pybuilder.core import task, init
|
||||||
|
from ddadevops import *
|
||||||
|
import logging
|
||||||
|
|
||||||
|
name = 'c4k-jira-backup'
|
||||||
|
MODULE = 'docker'
|
||||||
|
PROJECT_ROOT_PATH = '../..'
|
||||||
|
|
||||||
|
class MyBuild(DevopsDockerBuild):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@init
|
||||||
|
def initialize(project):
|
||||||
|
project.build_depends_on('ddadevops>=0.12.4')
|
||||||
|
stage = 'prod'
|
||||||
|
dockerhub_user = environ.get('DOCKERHUB_USER')
|
||||||
|
if not dockerhub_user:
|
||||||
|
dockerhub_user = gopass_field_from_path('meissa/web/docker.com', 'login')
|
||||||
|
dockerhub_password = environ.get('DOCKERHUB_PASSWORD')
|
||||||
|
if not dockerhub_password:
|
||||||
|
dockerhub_password = gopass_password_from_path('meissa/web/docker.com')
|
||||||
|
tag = environ.get('CI_COMMIT_TAG')
|
||||||
|
if not tag:
|
||||||
|
tag = get_tag_from_latest_commit()
|
||||||
|
config = create_devops_docker_build_config(
|
||||||
|
stage, PROJECT_ROOT_PATH, MODULE, dockerhub_user, dockerhub_password, docker_publish_tag=tag)
|
||||||
|
build = MyBuild(project, config)
|
||||||
|
build.initialize_build_dir()
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def image(project):
|
||||||
|
build = get_devops_build(project)
|
||||||
|
build.image()
|
||||||
|
|
||||||
|
@task
|
||||||
|
def drun(project):
|
||||||
|
build = get_devops_build(project)
|
||||||
|
build.drun()
|
||||||
|
|
||||||
|
@task
|
||||||
|
def publish(project):
|
||||||
|
build = get_devops_build(project)
|
||||||
|
build.dockerhub_login()
|
||||||
|
build.dockerhub_publish()
|
||||||
|
|
||||||
|
@task
|
||||||
|
def test(project):
|
||||||
|
build = get_devops_build(project)
|
||||||
|
build.test()
|
5
infrastrucure/docker-backup/image/Dockerfile
Normal file
5
infrastrucure/docker-backup/image/Dockerfile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
FROM domaindrivenarchitecture/dda-backup
|
||||||
|
|
||||||
|
# Prepare Entrypoint Script
|
||||||
|
ADD resources /tmp
|
||||||
|
RUN /tmp/install.sh
|
21
infrastrucure/docker-backup/image/resources/backup.sh
Executable file
21
infrastrucure/docker-backup/image/resources/backup.sh
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
file_env AWS_ACCESS_KEY_ID
|
||||||
|
file_env AWS_SECRET_ACCESS_KEY
|
||||||
|
file_env POSTGRES_DB
|
||||||
|
file_env POSTGRES_PASSWORD
|
||||||
|
file_env POSTGRES_USER
|
||||||
|
file_env RESTIC_DAYS_TO_KEEP 14
|
||||||
|
|
||||||
|
#backup-roles 'oc_' TODO: lookup for jira roles (Also in init.sh & restore.sh)
|
||||||
|
backup-db-dump
|
||||||
|
backup-fs-from-directory '/var/backups/' 'data/'
|
||||||
|
}
|
||||||
|
|
||||||
|
source /usr/local/lib/functions.sh
|
||||||
|
source /usr/local/lib/file-functions.sh
|
||||||
|
|
||||||
|
main
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
sleep 1m
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
source /usr/local/lib/functions.sh
|
||||||
|
source /usr/local/lib/pg-functions.sh
|
||||||
|
main
|
8
infrastrucure/docker-backup/image/resources/entrypoint.sh
Executable file
8
infrastrucure/docker-backup/image/resources/entrypoint.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
/usr/local/bin/backup.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
source /usr/local/lib/functions.sh
|
||||||
|
main
|
14
infrastrucure/docker-backup/image/resources/init.sh
Executable file
14
infrastrucure/docker-backup/image/resources/init.sh
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
file_env AWS_ACCESS_KEY_ID
|
||||||
|
file_env AWS_SECRET_ACCESS_KEY
|
||||||
|
|
||||||
|
#init-role-repo
|
||||||
|
init-database-repo
|
||||||
|
init-file-repo
|
||||||
|
}
|
||||||
|
|
||||||
|
source /usr/local/lib/functions.sh
|
||||||
|
source /usr/local/lib/file-functions.sh
|
||||||
|
main
|
11
infrastrucure/docker-backup/image/resources/install.sh
Executable file
11
infrastrucure/docker-backup/image/resources/install.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
apt-get update > /dev/null;
|
||||||
|
|
||||||
|
install -m 0700 /tmp/entrypoint.sh /
|
||||||
|
install -m 0700 /tmp/entrypoint-start-and-wait.sh /
|
||||||
|
|
||||||
|
install -m 0700 /tmp/init.sh /usr/local/bin/
|
||||||
|
install -m 0700 /tmp/backup.sh /usr/local/bin/
|
||||||
|
install -m 0700 /tmp/restore.sh /usr/local/bin/
|
||||||
|
install -m 0700 /tmp/restic-snapshots.sh /usr/local/bin/
|
15
infrastrucure/docker-backup/image/resources/restic-snapshots.sh
Executable file
15
infrastrucure/docker-backup/image/resources/restic-snapshots.sh
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
file_env AWS_ACCESS_KEY_ID
|
||||||
|
file_env AWS_SECRET_ACCESS_KEY
|
||||||
|
|
||||||
|
restic -r ${RESTIC_REPOSITORY}/files snapshots
|
||||||
|
}
|
||||||
|
|
||||||
|
source /usr/local/lib/functions.sh
|
||||||
|
source /usr/local/lib/file-functions.sh
|
||||||
|
|
||||||
|
main
|
31
infrastrucure/docker-backup/image/resources/restore.sh
Executable file
31
infrastrucure/docker-backup/image/resources/restore.sh
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -Eeo pipefail
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
|
||||||
|
file_env AWS_ACCESS_KEY_ID
|
||||||
|
file_env AWS_SECRET_ACCESS_KEY
|
||||||
|
|
||||||
|
file_env POSTGRES_DB
|
||||||
|
file_env POSTGRES_PASSWORD
|
||||||
|
file_env POSTGRES_USER
|
||||||
|
|
||||||
|
# Restore latest snapshot into /var/backups/restic-restore
|
||||||
|
rm -rf /var/backups/restic-restore
|
||||||
|
restore-directory '/var/backups/restic-restore'
|
||||||
|
|
||||||
|
# Restore data dir backup
|
||||||
|
rm -rf /var/backups/data/*
|
||||||
|
cp -a /var/backups/restic-restore/data/* /var/backups/data
|
||||||
|
|
||||||
|
# Restore db
|
||||||
|
drop-create-db
|
||||||
|
#restore-roles
|
||||||
|
restore-db
|
||||||
|
}
|
||||||
|
|
||||||
|
source /usr/local/lib/functions.sh
|
||||||
|
source /usr/local/lib/file-functions.sh
|
||||||
|
main
|
||||||
|
|
8
infrastrucure/docker-backup/test/Dockerfile
Normal file
8
infrastrucure/docker-backup/test/Dockerfile
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
FROM c4k-jira-backup
|
||||||
|
|
||||||
|
RUN curl -L -o /tmp/serverspec.jar \
|
||||||
|
https://github.com/DomainDrivenArchitecture/dda-serverspec-crate/releases/download/2.0.0/dda-serverspec-standalone.jar
|
||||||
|
|
||||||
|
COPY serverspec.edn /tmp/serverspec.edn
|
||||||
|
|
||||||
|
RUN java -jar /tmp/serverspec.jar /tmp/serverspec.edn -v
|
7
infrastrucure/docker-backup/test/serverspec.edn
Normal file
7
infrastrucure/docker-backup/test/serverspec.edn
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{:file [{:path "/usr/local/bin/init.sh" :mod "700"}
|
||||||
|
{:path "/usr/local/bin/backup.sh" :mod "700"}
|
||||||
|
{:path "/usr/local/bin/restore.sh" :mod "700"}
|
||||||
|
{:path "/usr/local/bin/export-db.sh" :mod "700"}
|
||||||
|
{:path "/usr/local/bin/restic-snapshots.sh" :mod "700"}
|
||||||
|
{:path "/entrypoint.sh" :mod "700"}
|
||||||
|
{:path "/entrypoint-start-and-wait.sh" :mod "700"}]}
|
Reference in a new issue