From 72cf21db20df6a92251f6bcd9e48c0561347bddd Mon Sep 17 00:00:00 2001 From: Andrew Hurley Date: Sat, 4 Mar 2023 09:45:11 +0800 Subject: [PATCH] Eighth Commit - create containers and let systemd run --- podmanctl | 61 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/podmanctl b/podmanctl index b9677c7..75d53b4 100755 --- a/podmanctl +++ b/podmanctl @@ -9,7 +9,7 @@ set -e usage () { printf "Usage:\n" printf " podmanctl [] [...]\n" - printf " - command is assumed to be 'run'\n" + printf " - command is assumed to be 'create'\n" printf " podmanctl [${COMMANDS}] [] [...]\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