Tidy
This commit is contained in:
parent
e727fc518f
commit
63490d9ce3
@ -4,9 +4,7 @@ _check_required_env_vars
|
|||||||
|
|
||||||
_stop_container "$CONTAINER_NAME"
|
_stop_container "$CONTAINER_NAME"
|
||||||
|
|
||||||
if ! autobackup volume=$DATA_VOLUME volume=$CONFIG_VOLUME $1 $2; then
|
autobackup "$1" "$2" "volume=$DATA_VOLUME" "volume=$CONFIG_VOLUME" || _die "Failed to create backup"
|
||||||
_die "Failed to create backup"
|
|
||||||
fi
|
|
||||||
|
|
||||||
_start_container "$CONTAINER_NAME"
|
_start_container "$CONTAINER_NAME"
|
||||||
|
|
||||||
|
@ -2,9 +2,7 @@
|
|||||||
source "${AGENT_PATH}/_common.sh"
|
source "${AGENT_PATH}/_common.sh"
|
||||||
_check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG" "DATA_VOLUME" "CONFIG_VOLUME" "CONFIG_PATH"
|
_check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG" "DATA_VOLUME" "CONFIG_VOLUME" "CONFIG_PATH"
|
||||||
|
|
||||||
if ! autocreate volume=$DATA_VOLUME volume=$CONFIG_VOLUME; then
|
autocreate "volume=$DATA_VOLUME" "volume=$CONFIG_VOLUME" || _die "Failed to autocreate volumes $DATA_VOLUME and $CONFIG_VOLUME"
|
||||||
_die "Failed to autocreate volumes and paths"
|
|
||||||
fi
|
|
||||||
|
|
||||||
_check_docker_installed || _die "Docker test failed, aborting installation..."
|
_check_docker_installed || _die "Docker test failed, aborting installation..."
|
||||||
|
|
||||||
|
@ -8,8 +8,6 @@ _check_required_env_vars
|
|||||||
# any docker volumes and any custom local data folders.
|
# any docker volumes and any custom local data folders.
|
||||||
|
|
||||||
|
|
||||||
if ! autonuke volume=$DATA_VOLUME volume=$CONFIG_VOLUME; then
|
autonuke "volume=$DATA_VOLUME" "volume=$CONFIG_VOLUME" || _die "Failed to nuke"
|
||||||
_die "Failed to nuke"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Nuking of ${CONTAINER_NAME} complete."
|
echo "Nuking of ${CONTAINER_NAME} complete."
|
||||||
|
@ -9,9 +9,7 @@ _check_required_env_vars
|
|||||||
bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
||||||
|
|
||||||
# restore data from backup file
|
# restore data from backup file
|
||||||
if ! autorestore volume=$DATA_VOLUME volume=$CONFIG_VOLUME "$1" "$2"; then
|
autorestore "$1" "$2" "volume=$DATA_VOLUME" "volume=$CONFIG_VOLUME" || _die "Failed to restore data from backup file"
|
||||||
_die "Failed to restore data from backup file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# reinstall service
|
# reinstall service
|
||||||
bash ./install.sh || _die "Failed to reinstall service after restore"
|
bash ./install.sh || _die "Failed to reinstall service after restore"
|
||||||
|
@ -3,49 +3,77 @@
|
|||||||
|
|
||||||
_autocommandrun_volume() {
|
_autocommandrun_volume() {
|
||||||
command="$1"
|
command="$1"
|
||||||
value="$2"
|
volume_name="$2"
|
||||||
backup_file="$3"
|
|
||||||
temp_path="$4"
|
case "$command" in
|
||||||
|
create)
|
||||||
|
echo "Creating volume ${volume_name}"
|
||||||
|
docker volume create ${volume_name}
|
||||||
|
;;
|
||||||
|
nuke)
|
||||||
|
echo "Nuking volume ${volume_name}"
|
||||||
|
docker volume rm ${volume_name}
|
||||||
|
;;
|
||||||
|
backup)
|
||||||
|
local backup_file="$3"
|
||||||
|
echo "Backing up volume ${volume_name}"
|
||||||
|
docker run --rm -v ${volume_name}:/volume -v ${temp_path}:/backup alpine tar -czvf /backup/volume.tar.gz -C /volume .
|
||||||
|
;;
|
||||||
|
restore)
|
||||||
|
local backup_file="$3"
|
||||||
|
echo "Restoring volume ${volume_name}"
|
||||||
|
docker volume rm ${volume_name}
|
||||||
|
docker volume create ${volume_name}
|
||||||
|
docker run --rm -v ${volume_name}:/volume -v ${temp_path}:/backup alpine tar -xzvf /backup/volume.tar.gz -C /volume --strip-components=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_autocommandrun_path() {
|
_autocommandrun_path() {
|
||||||
command="$1"
|
command="$1"
|
||||||
value="$2"
|
path="$2"
|
||||||
backup_file="$3"
|
|
||||||
temp_path="$4"
|
case "$command" in
|
||||||
|
create)
|
||||||
|
echo "Creating path ${path}"
|
||||||
|
mkdir -p ${path}
|
||||||
|
;;
|
||||||
|
nuke)
|
||||||
|
echo "Nuking path ${path}"
|
||||||
|
rm -rf ${path}
|
||||||
|
;;
|
||||||
|
backup)
|
||||||
|
local backup_file="$3"
|
||||||
|
echo "Backing up path ${path}"
|
||||||
|
tar -czvf ${backup_file} -C ${path} .
|
||||||
|
;;
|
||||||
|
restore)
|
||||||
|
local backup_file="$3"
|
||||||
|
echo "Restoring path ${path}"
|
||||||
|
tar -xzvf ${backup_file} -C ${path} --strip-components=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_autocommandrun_file() {
|
_autocommandrun_file() {
|
||||||
command="$1"
|
command="$1"
|
||||||
value="$2"
|
value="$2"
|
||||||
backup_file="$3"
|
|
||||||
temp_path="$4"
|
|
||||||
}
|
|
||||||
|
|
||||||
_autocommandrun() {
|
case "$command" in
|
||||||
command="$1"
|
create)
|
||||||
key="$2"
|
|
||||||
value="$3"
|
|
||||||
|
|
||||||
# only passed through if command is backup or restore.
|
|
||||||
backup_file="$4"
|
|
||||||
temp_path="$5"
|
|
||||||
|
|
||||||
case "$key" in
|
|
||||||
volume)
|
|
||||||
echo "Volume: $value"
|
|
||||||
_autocommandrun_volume "$command" "$value" "$backup_file" "$temp_path"
|
|
||||||
;;
|
;;
|
||||||
path)
|
nuke)
|
||||||
echo "Path: $value"
|
rm -f ${value}
|
||||||
_autocommandrun_path "$command" "$value" "$backup_file" "$temp_path"
|
|
||||||
;;
|
;;
|
||||||
file)
|
backup)
|
||||||
echo "File: $value"
|
local backup_file="$3"
|
||||||
_autocommandrun_file "$command" "$value" "$backup_file" "$temp_path"
|
echo "Backing up file ${value}"
|
||||||
|
cp ${value} ${backup_file}
|
||||||
;;
|
;;
|
||||||
*)
|
restore)
|
||||||
_die "Unknown key $key passed to auto${command}. We only support volume, path and file."
|
local backup_file="$3"
|
||||||
|
echo "Restoring file ${value}"
|
||||||
|
cp ${backup_file} ${value}
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@ -59,19 +87,20 @@ _autocommandparse() {
|
|||||||
# value is the path or volume name.
|
# value is the path or volume name.
|
||||||
|
|
||||||
# we iterate over the key=value arguments, and for each we call:
|
# we iterate over the key=value arguments, and for each we call:
|
||||||
# autorun <command> <key> <value> <backup_file> <temp_path>
|
# autorun <command> <backupfile> <key> <value>
|
||||||
|
|
||||||
local command="$1"
|
local command="$1"
|
||||||
shift
|
shift
|
||||||
|
|
||||||
|
local temp_path="$2"
|
||||||
|
shift
|
||||||
|
|
||||||
# Extract the backup file and temp path (last two arguments)
|
# Extract the backup file and temp path (last two arguments)
|
||||||
local args=("$@")
|
local args=("$@")
|
||||||
local arg_count=${#args[@]}
|
local arg_count=${#args[@]}
|
||||||
local backup_file="${args[$arg_count-2]}"
|
|
||||||
local temp_path="${args[$arg_count-1]}"
|
|
||||||
|
|
||||||
# Process all key=value pairs
|
# Process all key=value pairs
|
||||||
for ((i=0; i<$arg_count-2; i++)); do
|
for ((i=0; i<$arg_count; i++)); do
|
||||||
local pair="${args[$i]}"
|
local pair="${args[$i]}"
|
||||||
|
|
||||||
# Skip if not in key=value format
|
# Skip if not in key=value format
|
||||||
@ -81,30 +110,71 @@ _autocommandparse() {
|
|||||||
|
|
||||||
local key="${pair%%=*}"
|
local key="${pair%%=*}"
|
||||||
local value="${pair#*=}"
|
local value="${pair#*=}"
|
||||||
|
|
||||||
|
local bfile="${temp_path}/${key}_${value}.tgz"
|
||||||
|
|
||||||
# Key must be one of volume, path or file
|
# Key must be one of volume, path or file
|
||||||
_autocommandrun "$command" "$key" "$value" "$backup_file" "$temp_path"
|
case "$key" in
|
||||||
|
volume)
|
||||||
|
_autocommandrun_volume "$command" "$value" "$bfile"
|
||||||
|
;;
|
||||||
|
path)
|
||||||
|
_autocommandrun_path "$command" "$value" "$bfile"
|
||||||
|
;;
|
||||||
|
file)
|
||||||
|
_autocommandrun_file "$command" "$value" "$bfile"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_die "Unknown key $key passed to auto${command}. We only support volume, path and file."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
autocreate() {
|
autocreate() {
|
||||||
_autocommandparse create "$@" "-" "-"
|
_autocommandparse create "-" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
autonuke() {
|
autonuke() {
|
||||||
_autocommandparse nuke "$@" "-" "-"
|
_autocommandparse nuke "-" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
autobackup() {
|
autobackup() {
|
||||||
_autocommandparse backup "$@"
|
local backup_file="$1"
|
||||||
|
shift
|
||||||
|
local temp_path="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
[ -f "$backup_file" ] || _die "Backup file $backup_file does not exist"
|
||||||
|
[ -d "$temp_path" ] || _die "Temp path $temp_path does not exist"
|
||||||
|
|
||||||
|
local backup_temp_path="$temp_path/backup"
|
||||||
|
|
||||||
|
mkdir -p "$backup_temp_path"
|
||||||
|
_autocommandparse backup "$backup_temp_path" "$@"
|
||||||
|
|
||||||
|
tar zcvf "$backup_file" -C "$backup_temp_path" .
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
autorestore() {
|
autorestore() {
|
||||||
_autocommandparse restore "$@"
|
local backup_file="$1"
|
||||||
|
shift
|
||||||
|
local temp_path="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
[ -f "$backup_file" ] || _die "Backup file $backup_file does not exist"
|
||||||
|
[ -d "$temp_path" ] || _die "Temp path $temp_path does not exist"
|
||||||
|
|
||||||
|
local restore_temp_path="$temp_path/restore"
|
||||||
|
|
||||||
|
mkdir -p "$restore_temp_path"
|
||||||
|
tar zxvf "$backup_file" -C "$restore_temp_path" --strip-components=1
|
||||||
|
|
||||||
|
_autocommandparse restore "$restore_temp_path" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,6 @@ _check_required_env_vars "LOCAL_DATA_FOLDER"
|
|||||||
# Nginx Example Backup Script
|
# Nginx Example Backup Script
|
||||||
# hot backup is fine for nginx website content.
|
# hot backup is fine for nginx website content.
|
||||||
|
|
||||||
autobackup "path=${LOCAL_DATA_FOLDER}" $1 $2 || _die "Failed to create backup"
|
autobackup "$1" "$2" "path=${LOCAL_DATA_FOLDER}" || _die "Failed to create backup"
|
||||||
|
|
||||||
echo "Backup complete"
|
echo "Backup complete"
|
||||||
|
@ -5,11 +5,7 @@ _check_required_env_vars "LOCAL_DATA_FOLDER" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAG
|
|||||||
# Nginx Example Install Script
|
# Nginx Example Install Script
|
||||||
|
|
||||||
# Ensure local data folder exists
|
# Ensure local data folder exists
|
||||||
if [ ! -d "${LOCAL_DATA_FOLDER}" ]; then
|
autocreate "path=${LOCAL_DATA_FOLDER}"
|
||||||
echo "Creating local data folder ${LOCAL_DATA_FOLDER}..."
|
|
||||||
mkdir -p "${LOCAL_DATA_FOLDER}"
|
|
||||||
chmod 777 "${LOCAL_DATA_FOLDER}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Checking Docker installation..."
|
echo "Checking Docker installation..."
|
||||||
_check_docker_installed || _die "Docker test failed, aborting installation..."
|
_check_docker_installed || _die "Docker test failed, aborting installation..."
|
||||||
|
@ -8,7 +8,6 @@ _check_required_env_vars "LOCAL_DATA_FOLDER" "CONTAINER_NAME"
|
|||||||
# Call uninstall script first
|
# Call uninstall script first
|
||||||
./uninstall.sh
|
./uninstall.sh
|
||||||
|
|
||||||
echo "Removing local data folder ${LOCAL_DATA_FOLDER}..."
|
autonuke "path=${LOCAL_DATA_FOLDER}" || _die "Failed to nuke ${LOCAL_DATA_FOLDER}"
|
||||||
rm -rf $LOCAL_DATA_FOLDER || _die "Failed to remove local data folder ${LOCAL_DATA_FOLDER}"
|
|
||||||
|
|
||||||
echo "Nuke complete for service ${CONTAINER_NAME}."
|
echo "Nuke complete for service ${CONTAINER_NAME}."
|
||||||
|
@ -9,7 +9,7 @@ BACKUP_FILE="$1"
|
|||||||
echo "Uninstalling service before restore..."
|
echo "Uninstalling service before restore..."
|
||||||
bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
||||||
|
|
||||||
autorestore "path=${LOCAL_DATA_FOLDER}" $1 $2 || _die "Failed to restore data folder from backup"
|
autorestore "$1" "$2" "path=${LOCAL_DATA_FOLDER}" || _die "Failed to restore data folder from backup"
|
||||||
|
|
||||||
echo "Restore complete. Reinstalling service..."
|
echo "Restore complete. Reinstalling service..."
|
||||||
bash ./install.sh || _die "Failed to reinstall service after restore"
|
bash ./install.sh || _die "Failed to reinstall service after restore"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
source "${AGENT_PATH}/_common.sh"
|
source "${AGENT_PATH}/_common.sh"
|
||||||
_check_required_env_vars
|
_check_required_env_vars "VOLUME_NAME"
|
||||||
|
|
||||||
# Simple Object Storage Backup Script
|
# Simple Object Storage Backup Script
|
||||||
# Creates a backup tarball of the volume contents.
|
# Creates a backup tarball of the volume contents.
|
||||||
@ -8,6 +8,6 @@ _check_required_env_vars
|
|||||||
|
|
||||||
|
|
||||||
# HOT backup is fine for simple-object-storage
|
# HOT backup is fine for simple-object-storage
|
||||||
autobackup "volume=${VOLUME_NAME}" $1 $2 || _die "Failed to create backup"
|
autobackup "$1" "$2" "volume=${VOLUME_NAME}" || _die "Failed to create backup"
|
||||||
|
|
||||||
echo "Backup complete: ${BACKUP_FILE}"
|
echo "Backup complete: ${BACKUP_FILE}"
|
||||||
|
@ -5,8 +5,6 @@ _check_required_env_vars
|
|||||||
# Simple Object Storage Install Script
|
# Simple Object Storage Install Script
|
||||||
# Pulls image, creates volume/config, starts container.
|
# Pulls image, creates volume/config, starts container.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
autocreate "volume=${VOLUME_NAME}"
|
autocreate "volume=${VOLUME_NAME}"
|
||||||
|
|
||||||
# check can pull image on remote host and exit if fails
|
# check can pull image on remote host and exit if fails
|
||||||
|
@ -6,4 +6,6 @@ _check_required_env_vars
|
|||||||
# Removes container AND volume.
|
# Removes container AND volume.
|
||||||
|
|
||||||
|
|
||||||
autonuke "volume=${VOLUME_NAME}"
|
autonuke "volume=${VOLUME_NAME}" || _die "Failed to nuke volume ${VOLUME_NAME}"
|
||||||
|
|
||||||
|
echo "Nuke complete for service ${CONTAINER_NAME}."
|
||||||
|
@ -12,9 +12,7 @@ bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
|||||||
|
|
||||||
echo "Restoring data for ${CONTAINER_NAME} from ${BACKUP_FILE}..."
|
echo "Restoring data for ${CONTAINER_NAME} from ${BACKUP_FILE}..."
|
||||||
|
|
||||||
if ! autorestore "volume=${VOLUME_NAME}" "$1" "$2"; then
|
autorestore "$1" "$2" "volume=${VOLUME_NAME}" || _die "Failed to restore data from backup file"
|
||||||
_die "Failed to restore data from backup file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Restore complete. Reinstalling service..."
|
echo "Restore complete. Reinstalling service..."
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ _check_required_env_vars "CONTAINER_NAME" "LOCAL_DATA_FOLDER"
|
|||||||
# Stop container before backup
|
# Stop container before backup
|
||||||
_stop_container "$CONTAINER_NAME"
|
_stop_container "$CONTAINER_NAME"
|
||||||
|
|
||||||
autobackup "path=${LOCAL_DATA_FOLDER}" $1 $2 || _die "Failed to create backup"
|
autobackup "$1" "$2" "path=${LOCAL_DATA_FOLDER}" || _die "Failed to create backup"
|
||||||
|
|
||||||
# Start container after backup
|
# Start container after backup
|
||||||
_start_container "$CONTAINER_NAME"
|
_start_container "$CONTAINER_NAME"
|
||||||
|
@ -2,10 +2,7 @@
|
|||||||
source "${AGENT_PATH}/_common.sh"
|
source "${AGENT_PATH}/_common.sh"
|
||||||
_check_required_env_vars "LOCAL_DATA_FOLDER"
|
_check_required_env_vars "LOCAL_DATA_FOLDER"
|
||||||
|
|
||||||
# remove the local data folder
|
autonuke "path=${LOCAL_DATA_FOLDER}" || _die "Failed to nuke ${LOCAL_DATA_FOLDER}"
|
||||||
if [ -d "${LOCAL_DATA_FOLDER}" ]; then
|
|
||||||
rm -rf ${LOCAL_DATA_FOLDER}
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Nuke of ${CONTAINER_NAME} complete"
|
echo "Nuke of ${CONTAINER_NAME} complete"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ _check_required_env_vars "CONTAINER_NAME" "LOCAL_DATA_FOLDER"
|
|||||||
# # Stop container before backup
|
# # Stop container before backup
|
||||||
bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
bash ./uninstall.sh || _die "Failed to uninstall service before restore"
|
||||||
|
|
||||||
autorestore "path=${LOCAL_DATA_FOLDER}" $1 $2 || _die "Failed to restore data folder from backup"
|
autorestore "$1" "$2" "path=${LOCAL_DATA_FOLDER}" || _die "Failed to restore data folder from backup"
|
||||||
|
|
||||||
# reinstall service
|
# reinstall service
|
||||||
bash ./install.sh || _die "Failed to reinstall service after restore"
|
bash ./install.sh || _die "Failed to reinstall service after restore"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user