forked from zaclys/searxng
LXC: add LXC tooling box (initial, WIP)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
5c0f9c8c79
commit
7751b29559
1
Makefile
1
Makefile
@ -75,6 +75,7 @@ test: test.pep8 test.unit test.sh test.robot
|
||||
- make pylint
|
||||
|
||||
test.sh:
|
||||
shellcheck -x utils/lxc.sh
|
||||
shellcheck -x utils/lib.sh
|
||||
shellcheck -x utils/filtron.sh
|
||||
shellcheck -x utils/searx.sh
|
||||
|
152
utils/lxc.sh
Executable file
152
utils/lxc.sh
Executable file
@ -0,0 +1,152 @@
|
||||
#!/usr/bin/env bash
|
||||
# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# shellcheck source=utils/lib.sh
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
|
||||
source_dot_config
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# config
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# name of https://images.linuxcontainers.org
|
||||
LINUXCONTAINERS_ORG_NAME="${LINUXCONTAINERS_ORG_NAME:-images}"
|
||||
HOST_PREFIX="${HOST_PREFIX:-searx}"
|
||||
|
||||
TEST_IMAGES=(
|
||||
"$LINUXCONTAINERS_ORG_NAME:ubuntu/18.04" "ubu1804"
|
||||
"$LINUXCONTAINERS_ORG_NAME:ubuntu/19.04" "ubu1904"
|
||||
"$LINUXCONTAINERS_ORG_NAME:archlinux" "archlinux"
|
||||
#"$LINUXCONTAINERS_ORG_NAME:fedora/31" "fedora31"
|
||||
#"ubuntu-minimal:18.04" "ubu1804"
|
||||
#"ubuntu-minimal:19.10" "ubu1910"
|
||||
)
|
||||
|
||||
REMOTE_IMAGES=()
|
||||
LOCAL_IMAGES=()
|
||||
|
||||
for ((i=0; i<${#TEST_IMAGES[@]}; i+=2)); do
|
||||
REMOTE_IMAGES=("${REMOTE_IMAGES[@]}" "${TEST_IMAGES[i]}")
|
||||
LOCAL_IMAGES=("${LOCAL_IMAGES[@]}" "${TEST_IMAGES[i+1]}")
|
||||
done
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
usage() {
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
cat <<EOF
|
||||
|
||||
usage::
|
||||
|
||||
$(basename "$0") build [hosts]
|
||||
$(basename "$0") delete [hosts]
|
||||
|
||||
build / delete
|
||||
build and/or delete all LXC hosts
|
||||
|
||||
all LXC hosts:
|
||||
${LOCAL_IMAGES[@]}
|
||||
|
||||
EOF
|
||||
[ ! -z "${1+x}" ] && err_msg "$1"
|
||||
}
|
||||
|
||||
main() {
|
||||
rst_title "LXC tooling box" part
|
||||
|
||||
required_commands lxc || exit
|
||||
|
||||
local _usage="unknown or missing $1 command $2"
|
||||
|
||||
case $1 in
|
||||
--source-only) ;;
|
||||
-h|--help) usage; exit 0;;
|
||||
|
||||
build)
|
||||
sudo_or_exit
|
||||
case $2 in
|
||||
hosts) build_instances ;;
|
||||
*) usage "$_usage"; exit 42;;
|
||||
esac ;;
|
||||
delete)
|
||||
sudo_or_exit
|
||||
case $2 in
|
||||
hosts) delete_instances ;;
|
||||
*) usage "$_usage"; exit 42;;
|
||||
esac ;;
|
||||
*)
|
||||
usage "unknown or missing command $1"; exit 42;;
|
||||
esac
|
||||
}
|
||||
|
||||
build_instances() {
|
||||
rst_title "Build LXC instances"
|
||||
lxc_copy_images_localy
|
||||
lxc_init_containers
|
||||
|
||||
err_msg "WIP / sorry, not implemented yet :o"
|
||||
}
|
||||
|
||||
delete_instances() {
|
||||
rst_title "Delete LXC instances"
|
||||
echo -en "\\nLXC hosts(s)::\\n\\n ${LOCAL_IMAGES[*]}\\n" | $FMT
|
||||
if ask_yn "Do you really want to delete all images"; then
|
||||
lxc_delete_containers
|
||||
fi
|
||||
}
|
||||
|
||||
lxc_copy_images_localy() {
|
||||
echo
|
||||
for ((i=0; i<${#TEST_IMAGES[@]}; i+=2)); do
|
||||
if lxc image info "local:${TEST_IMAGES[i+1]}" &>/dev/null; then
|
||||
info_msg "image ${TEST_IMAGES[i]} already copied --> ${TEST_IMAGES[i+1]}"
|
||||
else
|
||||
info_msg "copy image locally ${TEST_IMAGES[i]} --> ${TEST_IMAGES[i+1]}"
|
||||
lxc image copy "${TEST_IMAGES[i]}" local: \
|
||||
--alias "${TEST_IMAGES[i+1]}" prefix_stdout
|
||||
fi
|
||||
done
|
||||
#lxc image list local:
|
||||
}
|
||||
|
||||
lxc_delete_images_localy() {
|
||||
echo
|
||||
for i in "${LOCAL_IMAGES[@]}"; do
|
||||
info_msg "delete image 'local:$i'"
|
||||
lxc image delete "local:$i"
|
||||
done
|
||||
#lxc image list local:
|
||||
}
|
||||
|
||||
lxc_init_containers() {
|
||||
echo
|
||||
for i in "${LOCAL_IMAGES[@]}"; do
|
||||
if lxc info "$HOST_PREFIX-$i" &>/dev/null; then
|
||||
info_msg "conatiner '$HOST_PREFIX-$i' already exists"
|
||||
else
|
||||
info_msg "create conatiner instance: $HOST_PREFIX-$i"
|
||||
lxc init "local:$i" "$HOST_PREFIX-$i"
|
||||
fi
|
||||
done
|
||||
#lxc list "$HOST_PREFIX"
|
||||
}
|
||||
|
||||
lxc_delete_containers() {
|
||||
echo
|
||||
for i in "${LOCAL_IMAGES[@]}"; do
|
||||
if lxc info "$HOST_PREFIX-$i" &>/dev/null; then
|
||||
info_msg "stop & delete instance '$HOST_PREFIX-$i'"
|
||||
lxc stop "$HOST_PREFIX-$i" &>/dev/null
|
||||
lxc delete "$HOST_PREFIX-$i" | prefix_stdout
|
||||
else
|
||||
warn_msg "instance '$HOST_PREFIX-$i' does not exist / can't delete :o"
|
||||
fi
|
||||
done
|
||||
#lxc list "$HOST_PREFIX"
|
||||
}
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
main "$@"
|
||||
# ----------------------------------------------------------------------------
|
Loading…
Reference in New Issue
Block a user