Tenth
This commit is contained in:
parent
006bfa740d
commit
4ba5ef8ec5
130
podmanctl
130
podmanctl
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# --------------------------------------------------------- bash settings
|
||||
#set -o xtrace
|
||||
set -u
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
# sub ----------------------------------------------------- usage
|
||||
usage () {
|
||||
|
|
@ -95,50 +95,83 @@ if [[ $# -lt 1 ]]; then
|
|||
exit 2
|
||||
fi
|
||||
|
||||
# sub ----------------------------------------------------- stop
|
||||
# sub ----------------------------------------------------- error
|
||||
error () {
|
||||
printf "${1}\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- error - usage
|
||||
erroru () {
|
||||
printf "${1}\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- systemd - find
|
||||
systemd-find () {
|
||||
local SERVICE="$(${SYSTEMDCM} list-unit-files --all |grep -F "${1}")"
|
||||
if [[ "x$SERVICE" =~ "x$1" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
systemd-active () {
|
||||
local ACTIVE="$(${SYSTEMDCM} is-active "${1}")"
|
||||
if [[ $ACTIVE == "active" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
sub ----------------------------------------------------- stop
|
||||
stop-pod () {
|
||||
if [[ "$(systemctl is-active podman-${PODNAME}.service)" == "active" ]]; then
|
||||
if systemctl list-units --full -all \
|
||||
|grep -Fq "podman-${PODNAME}.service"; then
|
||||
systemctl stop podman-${PODNAME}.service || return 1
|
||||
local SERVICE="podman-${PODNAME}.service"
|
||||
if systemd-active ${SERVICE}; then
|
||||
if systemd-find ${SERVICE}; then
|
||||
${SYSTEMDCM} stop ${SERVICE} || error " :: Stop Service"
|
||||
fi
|
||||
else
|
||||
if podman pod exists "${PODNAME}"; then
|
||||
podman pod stop -t 70 "${PODNAME}" || return 2
|
||||
podman pod stop -t 70 "${PODNAME}" || error " :: Stop Pod"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- start
|
||||
start-pod () {
|
||||
if systemctl list-units --full -all \
|
||||
|grep -Fq "podman-${PODNAME}.service"; then
|
||||
systemctl start podman-${PODNAME}.service || return 1
|
||||
local SERVICE="podman-${PODNAME}.service"
|
||||
if systemd-find ${SERVICE}; then
|
||||
${SYSTEMDCM} start ${SERVICE} || error " :: Start Service"
|
||||
else
|
||||
printf ":: ${COMMAND} ${SERVER} - service not found!\n"; return 2
|
||||
error ":: ${COMMAND} ${SERVER} - service not found!"
|
||||
fi
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- restart
|
||||
restart-pod () {
|
||||
if systemctl list-units --full -all \
|
||||
|grep -Fq "podman-${PODNAME}.service"; then
|
||||
systemctl restart podman-${PODNAME}.service || return 1
|
||||
local SERVICE="podman-${PODNAME}.service"
|
||||
if systemd-find ${SERVICE}; then
|
||||
${SYSTEMDCM} restart ${SERVICE} || error " :: Restart Service"
|
||||
else
|
||||
printf ":: ${COMMAND} ${SERVER} - service not found!\n"; return 2
|
||||
error ":: ${COMMAND} ${SERVER} - service not found!"
|
||||
fi
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- remove services
|
||||
remove-services () {
|
||||
if [[ -f "${SYSTEMD}"/podman-${PODNAME}.service ]]; then
|
||||
systemctl disable podman-${PODNAME}.service
|
||||
local SERVICE="podman-${PODNAME}.service"
|
||||
if [[ -f "${SYSTEMDIR}/${SERVICE}" ]]; then
|
||||
${SYSTEMDCM} disable ${SERVICE} || error " :: Disable Service"
|
||||
fi
|
||||
find "${SYSTEMD}" \
|
||||
find "${SYSTEMDIR}" \
|
||||
-maxdepth 1 \
|
||||
-name "podman-${SERVER}-*.service" \
|
||||
-exec rm {} +
|
||||
systemctl daemon-reload
|
||||
${SYSTEMDCM} daemon-reload
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- install services
|
||||
|
|
@ -146,15 +179,15 @@ remove-services () {
|
|||
# --stop-timeout=70 \
|
||||
# --restart-sec=10 \
|
||||
install-services () {
|
||||
(cd "${SYSTEMD}" && \
|
||||
(pushd "${SYSTEMDIR}" && \
|
||||
podman generate systemd \
|
||||
--name \
|
||||
--new \
|
||||
--pod-prefix=podman \
|
||||
--container-prefix=podman \
|
||||
--files ${PODNAME} \
|
||||
) && systemctl daemon-reload \
|
||||
&& systemctl enable podman-${PODNAME}
|
||||
--files ${PODNAME} && \
|
||||
popd) && ${SYSTEMDCM} daemon-reload \
|
||||
&& ${SYSTEMDCM} enable podman-${PODNAME}
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- clean
|
||||
|
|
@ -165,7 +198,8 @@ clean-pod () {
|
|||
|
||||
# sub ----------------------------------------------------- backup volumes
|
||||
backup-volumes () {
|
||||
VOLUMES="$(podman volume ls --format='{{.Name}}' |grep -v ".backup" |grep "${SERVER}")"
|
||||
VOLUMES="$(podman volume ls --format='{{.Name}}' \
|
||||
|grep -v ".backup" |grep "${SERVER}")"
|
||||
if [[ -z $VOLUMES ]]; then
|
||||
printf ":: ${COMMAND} ${SERVER} - no volumes found to backup.\n"
|
||||
return
|
||||
|
|
@ -176,9 +210,11 @@ backup-volumes () {
|
|||
TARGET_VOLUME="$(docker volume ls -q --filter name="^${TARGET}$")"
|
||||
if [[ -z $TARGET_VOLUME ]]; then
|
||||
if docker volume create "${TARGET}"; then
|
||||
printf ":: ${COMMAND} ${SERVER} - target volume '${TARGET}' created\n"
|
||||
printf \
|
||||
":: ${COMMAND} ${SERVER} - target volume '${TARGET}' created\n"
|
||||
else
|
||||
printf ":: ${COMMAND} ${SERVER} - target volume ${TARGET} could not be created\n"
|
||||
printf \
|
||||
":: ${COMMAND} ${SERVER} - target volume ${TARGET} could not be created\n"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
|
@ -191,16 +227,19 @@ backup-volumes () {
|
|||
--volume "${TARGET}:/target" \
|
||||
cor.cherished.me/system/helper-rsync \
|
||||
> /dev/null; then
|
||||
printf ":: ${COMMAND} ${SERVER} - backup of ${VOLUME} successful\n"
|
||||
printf \
|
||||
":: ${COMMAND} ${SERVER} - backup of ${VOLUME} successful\n"
|
||||
else
|
||||
printf ":: ${COMMAND} ${SERVER} - error in backup of ${VOLUME}\n"; return 2
|
||||
printf \
|
||||
":: ${COMMAND} ${SERVER} - error in backup of ${VOLUME}\n"; return 2
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# sub ----------------------------------------------------- save images
|
||||
save-images () {
|
||||
IMAGES="$(podman image ls --format="{{.Repository}}" |grep -v "docker.io" |grep "${SERVER}")"
|
||||
IMAGES="$(podman image ls --format="{{.Repository}}" \
|
||||
|grep -v "docker.io" |grep "${SERVER}")"
|
||||
if [[ -z $IMAGES ]]; then
|
||||
printf ":: ${COMMAND} ${SERVER} - no images found\n"
|
||||
return
|
||||
|
|
@ -224,7 +263,8 @@ save-images () {
|
|||
|
||||
# --------------------------------------------------------- save backup volumes
|
||||
save-backups () {
|
||||
VOLUMES="$(podman volume ls --format='{{.Name}}' |grep ".backup" |grep "${SERVER}")"
|
||||
VOLUMES="$(podman volume ls --format='{{.Name}}' \
|
||||
|grep ".backup" |grep "${SERVER}")"
|
||||
if [[ -z $VOLUMES ]]; then
|
||||
printf ":: ${COMMAND} ${SERVER} - no volumes found.\n"
|
||||
return
|
||||
|
|
@ -253,15 +293,23 @@ save-backups () {
|
|||
|
||||
|
||||
|
||||
|
||||
# --------------------------------------------------------- system user
|
||||
if [ "x$(id -u)x" = "x0x" ]; then
|
||||
ROOT="true"
|
||||
SYSTEMDIR="/etc/systemd/system"
|
||||
SYSTEMDCM="systemctl"
|
||||
[ -d $SYSTEMDIR ] || error "Missing /etc/systemd/system."
|
||||
else
|
||||
ROOT="false"
|
||||
SYSTEMDIR="$HOME/.config/systemd/user"
|
||||
SYSTEMDCM="systemctl --user"
|
||||
mkdir -p "${SYSTEMDIR}" || error "Cannot create user systemd."
|
||||
fi
|
||||
|
||||
|
||||
# --------------------------------------------------------- system top
|
||||
SYSTEMT="$(realpath ~/Server)"
|
||||
if [[ ! -d "${SYSTEMT}" ]]; then
|
||||
printf "Error: ~/Server directory missing\n"
|
||||
exit 1
|
||||
fi
|
||||
SYSTEMT="$(realpath $HOME/Server)"
|
||||
[ -d $SYSTEMT ] || error "$HOME/Server directory missing\n"
|
||||
|
||||
# --------------------------------------------------------- system runtime
|
||||
RUNTDIR="${SYSTEMT}/podman"
|
||||
|
|
@ -277,7 +325,6 @@ CERTDIR="${SYSTEMT}/.certs"
|
|||
BUILDIR="${SYSTEMT}/builds"
|
||||
|
||||
# --------------------------------------------------------- other dirs
|
||||
SYSTEMD="/etc/systemd/system"
|
||||
REPADDR="cor.cherished.me/cherished.me"
|
||||
|
||||
# --------------------------------------------------------- dir checks
|
||||
|
|
@ -330,7 +377,8 @@ for SERVER in $*; do
|
|||
|
||||
(ps)
|
||||
# --------------------------------------------------------- ps
|
||||
podman ps -a --filter "pod=${PODNAME}" --format '{{.Names}}\t\t{{.Image}}\t\t{{.ExitCode}}\t\t{{.Status}}'
|
||||
podman ps -a --filter "pod=${PODNAME}" \
|
||||
--format '{{.Names}}\t\t{{.Image}}\t\t{{.ExitCode}}\t\t{{.Status}}'
|
||||
;;
|
||||
|
||||
(create|run)
|
||||
|
|
@ -377,9 +425,7 @@ for SERVER in $*; do
|
|||
install-services
|
||||
|
||||
# --------------------------------------------------------- run services
|
||||
if [[ $COMMAND = "run" ]]; then
|
||||
systemctl start podman-${PODNAME}
|
||||
fi
|
||||
[[ $COMMAND = "run" ]] && $SYSTEMDCM start podman-${PODNAME}
|
||||
|
||||
printf ":: ${COMMAND} ${SERVER} - success\n"
|
||||
;;
|
||||
|
|
|
|||
Loading…
Reference in New Issue