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