Eighth Commit - create containers and let systemd run

This commit is contained in:
Andrew Hurley 2023-03-04 09:45:11 +08:00
parent c886a07362
commit 72cf21db20
1 changed files with 35 additions and 26 deletions

View File

@ -9,7 +9,7 @@ set -e
usage () {
printf "Usage:\n"
printf " podmanctl [<options>] <project> [<project>...]\n"
printf " - command is assumed to be 'run'\n"
printf " - command is assumed to be 'create'\n"
printf " podmanctl [${COMMANDS}] [<options>] <project> [<project>...]\n"
printf " Options:\n"
printf " For run|create:\n"
@ -30,7 +30,7 @@ if [[ "$1" =~ ^(${COMMANDS})$ ]]; then
COMMAND="${1}"
shift
else
COMMAND="run"
COMMAND="create"
fi
# --------------------------------------------------------- args
@ -180,27 +180,31 @@ backup-volumes () {
done
}
# sub ----------------------------------------------------- save images
save-images () {
IMAGES="$(podman image ls --filter="reference=\$${PROJECT}-*" --format="{{.Repository}}" |grep -v "docker.io")"
for IMAGE in $IMAGES; do
podman image save --compress --format docker-dir --output "${BACKDIR}"/"$(basename $IMAGE)" $IMAGE
done
}
# --------------------------------------------------------- save backup volumes
save-backups () {
echo "doit"
}
# --------------------------------------------------------- save images
save-images () {
echo "doit"
}
# --------------------------------------------------------- main
# --------------------------------------------------------- starts
# --------------------------------------------------------- here
RUNTIME="podman"
ROOTDIR="$(realpath /root)"
CONFDIR="$(realpath ../config)"
PODMDIR="$(realpath ../podman)"
BACKDIR="$(realpath ../.store)"
CERTDIR="$(realpath ../.certs)"
REGADDR="cor.cherished.me/cherished.me"
SYSTEMD="/etc/systemd/system"
SYSTEMT="/srv"
# --------------------------------------------------------- rsync build
podman build \
@ -219,7 +223,7 @@ for PROJECT in $*; do
# --------------------------------------------------------- project vars
NETWORK="${PROJECT}-net"
ENVFILE="${ROOTDIR}/${PROJECT}-env.conf"
ENVFILE="${CONFDIR}/${PROJECT}-env.conf"
PODNAME="${PROJECT}-pod"
# project check
@ -228,8 +232,8 @@ for PROJECT in $*; do
usage
exit 2;
fi
if [[ ! "$(stat -L -c "%A" "${ROOTDIR}" |cut -c8-10 )" = "---" ]] then
printf "Error: ${ROOTDIR} is world readable\n"
if [[ ! "$(stat -L -c "%A" "${CONFDIR}" |cut -c8-10 )" = "---" ]] then
printf "Error: ${CONFDIR} is world readable\n"
usage
exit 3;
fi
@ -257,10 +261,12 @@ for PROJECT in $*; do
(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_CREATE="${RUNTIME} create"
SPEC_IP="--ip ${SUBNET_PREFIX}"
SPEC_POD="--pod ${PODNAME}"
SPEC_PULL="${PULL}"
@ -271,7 +277,7 @@ for PROJECT in $*; do
SPEC_NAME="--name ${PROJECT}"
SPEC_INFRA_NAME="--infra-name ${PROJECT}-infra"
SPEC_IMAGE="${REGADDR}/${PROJECT}"
SPEC_CONFIG="--volume ${ROOTDIR}"
SPEC_CONFIG="--volume ${CONFDIR}"
SPEC_SUBNET="--subnet ${SUBNET}"
SPEC_LABELS="--label io.containers.autoupdate=registry"
SPEC_VOLUME="--volume ${PROJECT}"
@ -283,26 +289,24 @@ for PROJECT in $*; do
SPEC_PUBLISH=""
SPEC_ALIAS="--network-alias "
# --------------------------------------------------------- spec var runtime
if [[ $COMMAND = "run" ]]; then
SPEC_RUN="${RUNTIME} run -d"
else
SPEC_RUN="${RUNTIME} create"
fi
# --------------------------------------------------------- pod
# --------------------------------------------------------- recreate pod
stop-pod
"${RUNTIME}" pod create \
${SPEC_NAME}-pod \
${SPEC_INFRA_NAME} \
--replace
# --------------------------------------------------------- create|run containers
# --------------------------------------------------------- create containers
source ${PROJECT}
# --------------------------------------------------------- install services
install-services
# --------------------------------------------------------- run services
if [[ $COMMAND = "run" ]]; then
systemctl start podman-${PODNAME}
fi
printf ":: ${COMMAND} ${PROJECT} - success\n"
;;
@ -346,6 +350,7 @@ for PROJECT in $*; do
(backup)
save-images
if stop-pod && backup-volumes; then
if [[ $DOWN == "false" ]]; then
start-pod
@ -358,9 +363,13 @@ for PROJECT in $*; do
(restore)
echo ":: ${COMMAND} ${PROJECT} - not implemented\n"; continue
printf ":: ${COMMAND} ${PROJECT} - not implemented\n"; continue
;;
(?)
printf "Uknown command: $COMMAND\n"
esac
done