Seventh Commit
This commit is contained in:
parent
a810454dcf
commit
c886a07362
92
podmanctl
92
podmanctl
|
|
@ -19,7 +19,7 @@ usage () {
|
||||||
}
|
}
|
||||||
|
|
||||||
# --------------------------------------------------------- command
|
# --------------------------------------------------------- command
|
||||||
COMMANDS="create|run|stop|start|restart|clean|backup|restore"
|
COMMANDS="ps|create|run|stop|start|restart|clean|backup|restore"
|
||||||
if [[ $# -lt 1 ]]; then
|
if [[ $# -lt 1 ]]; then
|
||||||
printf "Arguments missing\n"
|
printf "Arguments missing\n"
|
||||||
usage
|
usage
|
||||||
|
|
@ -37,6 +37,7 @@ fi
|
||||||
# ADD PULL OPTION
|
# ADD PULL OPTION
|
||||||
ARGS_ENV=""
|
ARGS_ENV=""
|
||||||
PULL=""
|
PULL=""
|
||||||
|
DOWN="false"
|
||||||
while getopts ':pe:' OPT; do
|
while getopts ':pe:' OPT; do
|
||||||
case $OPT in
|
case $OPT in
|
||||||
e)
|
e)
|
||||||
|
|
@ -55,6 +56,15 @@ while getopts ':pe:' OPT; do
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
d)
|
||||||
|
if [[ "${COMMAND}" =~ ^(backup)$ ]]; then
|
||||||
|
DOWN="true"
|
||||||
|
else
|
||||||
|
printf "option 'd' does not apply to command '${COMMAND}'\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
\?)
|
\?)
|
||||||
usage
|
usage
|
||||||
exit 1
|
exit 1
|
||||||
|
|
@ -137,6 +147,68 @@ clean-pod () {
|
||||||
remove-services
|
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
|
# --------------------------------------------------------- project loop
|
||||||
for PROJECT in $*; do
|
for PROJECT in $*; do
|
||||||
|
|
||||||
|
|
@ -146,13 +218,9 @@ for PROJECT in $*; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --------------------------------------------------------- project vars
|
# --------------------------------------------------------- project vars
|
||||||
RUNTIME="podman"
|
|
||||||
ROOTDIR="$(realpath /root)"
|
|
||||||
NETWORK="${PROJECT}-net"
|
NETWORK="${PROJECT}-net"
|
||||||
ENVFILE="${ROOTDIR}/${PROJECT}-env.conf"
|
ENVFILE="${ROOTDIR}/${PROJECT}-env.conf"
|
||||||
PODNAME="${PROJECT}-pod"
|
PODNAME="${PROJECT}-pod"
|
||||||
REGADDR="cor.cherished.me/cherished.me"
|
|
||||||
SYSTEMD="/etc/systemd/system"
|
|
||||||
|
|
||||||
# project check
|
# project check
|
||||||
if [[ ! -r $ENVFILE ]] then
|
if [[ ! -r $ENVFILE ]] then
|
||||||
|
|
@ -186,6 +254,10 @@ for PROJECT in $*; do
|
||||||
|
|
||||||
case $COMMAND in
|
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)
|
(create|run)
|
||||||
|
|
||||||
# --------------------------------------------------------- spec vars
|
# --------------------------------------------------------- spec vars
|
||||||
|
|
@ -274,10 +346,10 @@ for PROJECT in $*; do
|
||||||
|
|
||||||
(backup)
|
(backup)
|
||||||
|
|
||||||
if stop-pod; then
|
if stop-pod && backup-volumes; then
|
||||||
|
if [[ $DOWN == "false" ]]; then
|
||||||
# start backup here ,,,
|
start-pod
|
||||||
|
fi
|
||||||
printf ":: ${COMMAND} ${PROJECT} - success\n"
|
printf ":: ${COMMAND} ${PROJECT} - success\n"
|
||||||
else
|
else
|
||||||
printf ":: ${COMMAND} ${PROJECT} - failure\n"
|
printf ":: ${COMMAND} ${PROJECT} - failure\n"
|
||||||
|
|
@ -291,6 +363,4 @@ for PROJECT in $*; do
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
${RUNTIME} ps -a --filter "pod=${PODNAME}" --format '{{.Names}}\t\t{{.Image}}\t\t{{.ExitCode}}\t\t{{.Status}}'
|
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue