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
|
# --------------------------------------------------------- bash settings
|
||||||
#set -o xtrace
|
#set -o xtrace
|
||||||
set -u
|
set -u
|
||||||
set -e
|
set -o pipefail
|
||||||
|
|
||||||
# sub ----------------------------------------------------- usage
|
# sub ----------------------------------------------------- usage
|
||||||
usage () {
|
usage () {
|
||||||
|
|
@ -95,50 +95,83 @@ if [[ $# -lt 1 ]]; then
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
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 () {
|
stop-pod () {
|
||||||
if [[ "$(systemctl is-active podman-${PODNAME}.service)" == "active" ]]; then
|
local SERVICE="podman-${PODNAME}.service"
|
||||||
if systemctl list-units --full -all \
|
if systemd-active ${SERVICE}; then
|
||||||
|grep -Fq "podman-${PODNAME}.service"; then
|
if systemd-find ${SERVICE}; then
|
||||||
systemctl stop podman-${PODNAME}.service || return 1
|
${SYSTEMDCM} stop ${SERVICE} || error " :: Stop Service"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if podman pod exists "${PODNAME}"; then
|
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
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# sub ----------------------------------------------------- start
|
# sub ----------------------------------------------------- start
|
||||||
start-pod () {
|
start-pod () {
|
||||||
if systemctl list-units --full -all \
|
local SERVICE="podman-${PODNAME}.service"
|
||||||
|grep -Fq "podman-${PODNAME}.service"; then
|
if systemd-find ${SERVICE}; then
|
||||||
systemctl start podman-${PODNAME}.service || return 1
|
${SYSTEMDCM} start ${SERVICE} || error " :: Start Service"
|
||||||
else
|
else
|
||||||
printf ":: ${COMMAND} ${SERVER} - service not found!\n"; return 2
|
error ":: ${COMMAND} ${SERVER} - service not found!"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# sub ----------------------------------------------------- restart
|
# sub ----------------------------------------------------- restart
|
||||||
restart-pod () {
|
restart-pod () {
|
||||||
if systemctl list-units --full -all \
|
local SERVICE="podman-${PODNAME}.service"
|
||||||
|grep -Fq "podman-${PODNAME}.service"; then
|
if systemd-find ${SERVICE}; then
|
||||||
systemctl restart podman-${PODNAME}.service || return 1
|
${SYSTEMDCM} restart ${SERVICE} || error " :: Restart Service"
|
||||||
else
|
else
|
||||||
printf ":: ${COMMAND} ${SERVER} - service not found!\n"; return 2
|
error ":: ${COMMAND} ${SERVER} - service not found!"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# sub ----------------------------------------------------- remove services
|
# sub ----------------------------------------------------- remove services
|
||||||
remove-services () {
|
remove-services () {
|
||||||
if [[ -f "${SYSTEMD}"/podman-${PODNAME}.service ]]; then
|
local SERVICE="podman-${PODNAME}.service"
|
||||||
systemctl disable podman-${PODNAME}.service
|
if [[ -f "${SYSTEMDIR}/${SERVICE}" ]]; then
|
||||||
|
${SYSTEMDCM} disable ${SERVICE} || error " :: Disable Service"
|
||||||
fi
|
fi
|
||||||
find "${SYSTEMD}" \
|
find "${SYSTEMDIR}" \
|
||||||
-maxdepth 1 \
|
-maxdepth 1 \
|
||||||
-name "podman-${SERVER}-*.service" \
|
-name "podman-${SERVER}-*.service" \
|
||||||
-exec rm {} +
|
-exec rm {} +
|
||||||
systemctl daemon-reload
|
${SYSTEMDCM} daemon-reload
|
||||||
}
|
}
|
||||||
|
|
||||||
# sub ----------------------------------------------------- install services
|
# sub ----------------------------------------------------- install services
|
||||||
|
|
@ -146,15 +179,15 @@ remove-services () {
|
||||||
# --stop-timeout=70 \
|
# --stop-timeout=70 \
|
||||||
# --restart-sec=10 \
|
# --restart-sec=10 \
|
||||||
install-services () {
|
install-services () {
|
||||||
(cd "${SYSTEMD}" && \
|
(pushd "${SYSTEMDIR}" && \
|
||||||
podman generate systemd \
|
podman generate systemd \
|
||||||
--name \
|
--name \
|
||||||
--new \
|
--new \
|
||||||
--pod-prefix=podman \
|
--pod-prefix=podman \
|
||||||
--container-prefix=podman \
|
--container-prefix=podman \
|
||||||
--files ${PODNAME} \
|
--files ${PODNAME} && \
|
||||||
) && systemctl daemon-reload \
|
popd) && ${SYSTEMDCM} daemon-reload \
|
||||||
&& systemctl enable podman-${PODNAME}
|
&& ${SYSTEMDCM} enable podman-${PODNAME}
|
||||||
}
|
}
|
||||||
|
|
||||||
# sub ----------------------------------------------------- clean
|
# sub ----------------------------------------------------- clean
|
||||||
|
|
@ -165,7 +198,8 @@ clean-pod () {
|
||||||
|
|
||||||
# sub ----------------------------------------------------- backup volumes
|
# sub ----------------------------------------------------- backup volumes
|
||||||
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
|
if [[ -z $VOLUMES ]]; then
|
||||||
printf ":: ${COMMAND} ${SERVER} - no volumes found to backup.\n"
|
printf ":: ${COMMAND} ${SERVER} - no volumes found to backup.\n"
|
||||||
return
|
return
|
||||||
|
|
@ -176,9 +210,11 @@ backup-volumes () {
|
||||||
TARGET_VOLUME="$(docker volume ls -q --filter name="^${TARGET}$")"
|
TARGET_VOLUME="$(docker volume ls -q --filter name="^${TARGET}$")"
|
||||||
if [[ -z $TARGET_VOLUME ]]; then
|
if [[ -z $TARGET_VOLUME ]]; then
|
||||||
if docker volume create "${TARGET}"; then
|
if docker volume create "${TARGET}"; then
|
||||||
printf ":: ${COMMAND} ${SERVER} - target volume '${TARGET}' created\n"
|
printf \
|
||||||
|
":: ${COMMAND} ${SERVER} - target volume '${TARGET}' created\n"
|
||||||
else
|
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
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -191,16 +227,19 @@ backup-volumes () {
|
||||||
--volume "${TARGET}:/target" \
|
--volume "${TARGET}:/target" \
|
||||||
cor.cherished.me/system/helper-rsync \
|
cor.cherished.me/system/helper-rsync \
|
||||||
> /dev/null; then
|
> /dev/null; then
|
||||||
printf ":: ${COMMAND} ${SERVER} - backup of ${VOLUME} successful\n"
|
printf \
|
||||||
|
":: ${COMMAND} ${SERVER} - backup of ${VOLUME} successful\n"
|
||||||
else
|
else
|
||||||
printf ":: ${COMMAND} ${SERVER} - error in backup of ${VOLUME}\n"; return 2
|
printf \
|
||||||
|
":: ${COMMAND} ${SERVER} - error in backup of ${VOLUME}\n"; return 2
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# sub ----------------------------------------------------- save images
|
# sub ----------------------------------------------------- save images
|
||||||
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
|
if [[ -z $IMAGES ]]; then
|
||||||
printf ":: ${COMMAND} ${SERVER} - no images found\n"
|
printf ":: ${COMMAND} ${SERVER} - no images found\n"
|
||||||
return
|
return
|
||||||
|
|
@ -224,7 +263,8 @@ save-images () {
|
||||||
|
|
||||||
# --------------------------------------------------------- save backup volumes
|
# --------------------------------------------------------- save backup volumes
|
||||||
save-backups () {
|
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
|
if [[ -z $VOLUMES ]]; then
|
||||||
printf ":: ${COMMAND} ${SERVER} - no volumes found.\n"
|
printf ":: ${COMMAND} ${SERVER} - no volumes found.\n"
|
||||||
return
|
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
|
# --------------------------------------------------------- system top
|
||||||
SYSTEMT="$(realpath ~/Server)"
|
SYSTEMT="$(realpath $HOME/Server)"
|
||||||
if [[ ! -d "${SYSTEMT}" ]]; then
|
[ -d $SYSTEMT ] || error "$HOME/Server directory missing\n"
|
||||||
printf "Error: ~/Server directory missing\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --------------------------------------------------------- system runtime
|
# --------------------------------------------------------- system runtime
|
||||||
RUNTDIR="${SYSTEMT}/podman"
|
RUNTDIR="${SYSTEMT}/podman"
|
||||||
|
|
@ -277,7 +325,6 @@ CERTDIR="${SYSTEMT}/.certs"
|
||||||
BUILDIR="${SYSTEMT}/builds"
|
BUILDIR="${SYSTEMT}/builds"
|
||||||
|
|
||||||
# --------------------------------------------------------- other dirs
|
# --------------------------------------------------------- other dirs
|
||||||
SYSTEMD="/etc/systemd/system"
|
|
||||||
REPADDR="cor.cherished.me/cherished.me"
|
REPADDR="cor.cherished.me/cherished.me"
|
||||||
|
|
||||||
# --------------------------------------------------------- dir checks
|
# --------------------------------------------------------- dir checks
|
||||||
|
|
@ -330,7 +377,8 @@ for SERVER in $*; do
|
||||||
|
|
||||||
(ps)
|
(ps)
|
||||||
# --------------------------------------------------------- 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)
|
(create|run)
|
||||||
|
|
@ -377,9 +425,7 @@ for SERVER in $*; do
|
||||||
install-services
|
install-services
|
||||||
|
|
||||||
# --------------------------------------------------------- run services
|
# --------------------------------------------------------- run services
|
||||||
if [[ $COMMAND = "run" ]]; then
|
[[ $COMMAND = "run" ]] && $SYSTEMDCM start podman-${PODNAME}
|
||||||
systemctl start podman-${PODNAME}
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf ":: ${COMMAND} ${SERVER} - success\n"
|
printf ":: ${COMMAND} ${SERVER} - success\n"
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue