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 () {
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue