mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 19:17:07 -05:00 
			
		
		
		
	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
 | 
						- make pylint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test.sh:
 | 
					test.sh:
 | 
				
			||||||
 | 
						shellcheck -x utils/lxc.sh
 | 
				
			||||||
	shellcheck -x utils/lib.sh
 | 
						shellcheck -x utils/lib.sh
 | 
				
			||||||
	shellcheck -x utils/filtron.sh
 | 
						shellcheck -x utils/filtron.sh
 | 
				
			||||||
	shellcheck -x utils/searx.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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user