Eighth Commit - create containers and let systemd run
This commit is contained in:
parent
c886a07362
commit
72cf21db20
61
podmanctl
61
podmanctl
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue