Seventh Commit

This commit is contained in:
Andrew Hurley 2023-03-02 15:50:41 +08:00
parent a810454dcf
commit c886a07362
1 changed files with 81 additions and 11 deletions

View File

@ -19,7 +19,7 @@ usage () {
}
# --------------------------------------------------------- command
COMMANDS="create|run|stop|start|restart|clean|backup|restore"
COMMANDS="ps|create|run|stop|start|restart|clean|backup|restore"
if [[ $# -lt 1 ]]; then
printf "Arguments missing\n"
usage
@ -37,6 +37,7 @@ fi
# ADD PULL OPTION
ARGS_ENV=""
PULL=""
DOWN="false"
while getopts ':pe:' OPT; do
case $OPT in
e)
@ -55,6 +56,15 @@ while getopts ':pe:' OPT; do
exit 1
fi
;;
d)
if [[ "${COMMAND}" =~ ^(backup)$ ]]; then
DOWN="true"
else
printf "option 'd' does not apply to command '${COMMAND}'\n"
exit 1
fi
;;
\?)
usage
exit 1
@ -137,6 +147,68 @@ clean-pod () {
remove-services
}
# sub ----------------------------------------------------- backup volumes
backup-volumes () {
VOLUMES="$(podman volume ls --filter="name=${PROJECT}-" -q |grep -v ".backup")"
if [[ -z $VOLUMES ]]; then
printf ":: ${COMMAND} ${PROJECT} - no volumes found to backup\n"
return
fi
for VOL in $VOLUMES; do
SOURCE="${VOL}"
TARGET="${VOL}.backup"
TARGET_VOLUME="$(docker volume ls -q --filter name="^${TARGET}$")"
if [[ -z $TARGET_VOLUME ]]; then
if docker volume create "${TARGET}"; then
printf ":: ${COMMAND} ${PROJECT} - target volume '${TARGET}' created.\n"
else
printf ":: ${COMMAND} ${PROJECT} - target volume ${TARGET} could not be created.\n"
return 1
fi
fi
printf ":: ${COMMAND} ${PROJECT} - backup of source: ${SOURCE} to target ${TARGET} commencing\n"
if "${RUNTIME}" run --rm \
--env "SOURCE_DIR=/source" \
--env "TARGET_DIR=/target" \
--volume "${SOURCE}:/source:ro" \
--volume "${TARGET}:/target" \
cor.cherished.me/system/helper-rsync; then
printf ":: ${COMMAND} ${PROJECT} - backup successful.\n"
else
printf ":: ${COMMAND} ${PROJECT} - backup error.\n"; return 2
fi
done
}
# --------------------------------------------------------- save backup volumes
save-backups () {
echo "doit"
}
# --------------------------------------------------------- save images
save-images () {
echo "doit"
}
# --------------------------------------------------------- main
# --------------------------------------------------------- starts
# --------------------------------------------------------- here
RUNTIME="podman"
ROOTDIR="$(realpath /root)"
REGADDR="cor.cherished.me/cherished.me"
SYSTEMD="/etc/systemd/system"
# --------------------------------------------------------- rsync build
podman build \
-t cor.cherished.me/system/helper-rsync \
- <<EOT
FROM docker.io/weikinhuang/rsync-backup:amd64-b022c6c5bd9a553451e8c9114c7aa591ee9a7dc4-145886
EOT
# --------------------------------------------------------- project loop
for PROJECT in $*; do
@ -146,13 +218,9 @@ for PROJECT in $*; do
fi
# --------------------------------------------------------- project vars
RUNTIME="podman"
ROOTDIR="$(realpath /root)"
NETWORK="${PROJECT}-net"
ENVFILE="${ROOTDIR}/${PROJECT}-env.conf"
PODNAME="${PROJECT}-pod"
REGADDR="cor.cherished.me/cherished.me"
SYSTEMD="/etc/systemd/system"
# project check
if [[ ! -r $ENVFILE ]] then
@ -185,6 +253,10 @@ for PROJECT in $*; do
#printf "${PROXY_SUBNET_PREFIX}" > "proxy-subnet"
case $COMMAND in
(ps)
# --------------------------------------------------------- ps
${RUNTIME} ps -a --watch=1 --filter "pod=${PODNAME}" --format '{{.Names}}\t\t{{.Image}}\t\t{{.ExitCode}}\t\t{{.Status}}'
(create|run)
@ -274,10 +346,10 @@ for PROJECT in $*; do
(backup)
if stop-pod; then
# start backup here ,,,
if stop-pod && backup-volumes; then
if [[ $DOWN == "false" ]]; then
start-pod
fi
printf ":: ${COMMAND} ${PROJECT} - success\n"
else
printf ":: ${COMMAND} ${PROJECT} - failure\n"
@ -291,6 +363,4 @@ for PROJECT in $*; do
esac
${RUNTIME} ps -a --filter "pod=${PODNAME}" --format '{{.Names}}\t\t{{.Image}}\t\t{{.ExitCode}}\t\t{{.Status}}'
done