Add proper Cleanup script.

Chore following such addition.
This commit is contained in:
Guillaume 2023-06-08 19:38:17 +02:00
parent 2945d21c93
commit aa18ef3224
4 changed files with 85 additions and 23 deletions

52
scripts/.cleanup.sh Executable file
View File

@ -0,0 +1,52 @@
#!/bin/bash
stopdls() {
if docker ps &>/dev/null | grep -q " $DLS_CTR_NAME$"; then
pinfo "Stopping Direktil Local Server..."
docker stop $DLS_CTR_NAME
fi
}
destroyvms() {
for host in ${!hosts[*]}; do
if test -f $ctxdir/data/$host/pid ; then
pid=$(cat $ctxdir/data/$host/pid)
pinfo "Cleaning VM $host with PID $pid..."
kill $pid && sleep 1
fi
done
}
cleanuppaths() {
PATHS="data secrets kubeconfig cache dist"
cd $ctxdir
for path in $PATHS; do
if test -e $path; then
pinfo "Removing path $path ..."
rm -rf $path
fi
done
}
cleanupnetwork() {
if iptables -L |grep -q $QEMU_BR_NAME; then
pinfo "Cleaning iptables rules..."
iptables -t nat -D POSTROUTING -j MASQUERADE -s $QEMU_BR_IP/$QEMU_BR_MASK \! -o $QEMU_BR_NAME
iptables -D FORWARD -o $QEMU_BR_NAME -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -D FORWARD -j ACCEPT -i $QEMU_BR_NAME
fi
if ip li show $QEMU_BR_NAME ; then
pinfo "Cleaning existing interfaces..."
ip li set $QEMU_BR_NAME down
ip li del $QEMU_BR_NAME
fi
}
source $(dirname $0)/.common
check_root
prereqs
stopdls
declare -A hosts
get_hosts
destroyvms
cleanuppaths

View File

@ -1,11 +1,26 @@
#!/bin/bash #!/bin/bash
## Vars ## Vars
# Docker container name for dir2config
D2C_CTR_NAME=dir2config
# Docker container name for direktil local server
DLS_CTR_NAME=dls
# QEMU local bridge name. If you specificy a custom name, you may have to configure qemu bridge helper to allow it
QEMU_BR_NAME=virbr0
# QEMU VM default disk size
QEMU_DISK_SIZE=30G
# Allocated CPUs to QEMU VMs
QEMU_VM_CPU=4
# Allocated Memory to QEMU VMs
QEMU_VM_MEM=8096
################
# Token file for dls
tknfile=".dls_adm_token" tknfile=".dls_adm_token"
## Helper funcs
## Helper funcs
pinfo() { pinfo() {
echo -e "\e[32m$@\e[39m" echo -e "\e[32m$@\e[39m"
@ -42,7 +57,7 @@ check_root() {
} }
prereqs() { prereqs() {
set -ex # set -ex
cd "$(dirname $0)/.." cd "$(dirname $0)/.."
ctxdir="$PWD" ctxdir="$PWD"
} }
@ -86,7 +101,7 @@ get_hosts() {
ip=$(grep ip: $ctxdir/hosts/${h}.yaml|awk '{print $2}') ip=$(grep ip: $ctxdir/hosts/${h}.yaml|awk '{print $2}')
hosts[$h]="$ip" hosts[$h]="$ip"
done done
cd - cd - &>/dev/null
} }
get_parts() { get_parts() {
@ -102,6 +117,15 @@ get_parts() {
done done
} }
destroyvms() {
for host in ${!hosts[*]}; do
host=$1
if test -f $ctxdir/data/$host/pid ; then
pinfo "Detected a pid file, killing process in case VM was already started"
kill $(cat $ctxdir/data/$host/pid) && sleep 1
fi
done
}
create_kubeconfig() { create_kubeconfig() {
if test -f $ctxdir/kubeconfig; then if test -f $ctxdir/kubeconfig; then

View File

@ -1,7 +1,5 @@
#!/bin/bash #!/bin/bash
# #
D2C_CTR_NAME=dir2config
DLS_CTR_NAME=dls
# Admin token to unlock the DLS store # Admin token to unlock the DLS store
DLS_UNLOCK_TOKEN=changeme DLS_UNLOCK_TOKEN=changeme
# #
@ -24,7 +22,7 @@ dir2config() {
} }
start_store() { start_store() {
if docker ps|grep " $DLS_CTR_NAME$" ; then if docker ps|grep " $DLS_CTR_NAME$" &>/dev/null; then
pinfo "Container $DLS_CTR_NAME seems already running" pinfo "Container $DLS_CTR_NAME seems already running"
return return
fi fi

View File

@ -3,16 +3,7 @@
# This collection of scripts aims to install a NOVIT cluster easily, with help of QEMU # This collection of scripts aims to install a NOVIT cluster easily, with help of QEMU
# #
# #
# QEMU local bridge name. If you specificy a custom name, you may have to configure qemu bridge helper to allow it
QEMU_BR_NAME=virbr0
# #
# QEMU VM default disk size
QEMU_DISK_SIZE=30G
# Allocated CPUs to QEMU VMs
QEMU_VM_CPU=4
# Allocated Memory to QEMU VMs
QEMU_VM_MEM=8096
################
## QEMU functions ## QEMU functions
@ -35,15 +26,15 @@ setup_network_qemu() {
pinfo "Using detected gateway IP $QEMU_BR_IP for bridge $QEMU_BR_NAME" pinfo "Using detected gateway IP $QEMU_BR_IP for bridge $QEMU_BR_NAME"
if ! ip a show dev $QEMU_BR_NAME | grep $QEMU_BR_IP ; then if ! ip a show dev $QEMU_BR_NAME | grep $QEMU_BR_IP ; then
ip a add $QEMU_BR_IP/$QEMU_BR_MASK dev $QEMU_BR_NAME ip a add $QEMU_BR_IP/$QEMU_BR_MASK dev $QEMU_BR_NAME
sudo iptables -t nat -I POSTROUTING -j MASQUERADE -s $QEMU_BR_IP/$QEMU_BR_MASK \! -o $QEMU_BR_NAME iptables -t nat -I POSTROUTING -j MASQUERADE -s $QEMU_BR_IP/$QEMU_BR_MASK \! -o $QEMU_BR_NAME
sudo iptables -I FORWARD -o $QEMU_BR_NAME -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD -o $QEMU_BR_NAME -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD -j ACCEPT -i $QEMU_BR_NAME iptables -I FORWARD -j ACCEPT -i $QEMU_BR_NAME
fi fi
if ! test -d /etc/qemu; then if ! test -d /etc/qemu; then
mkdir -p /etc/qemu mkdir -p /etc/qemu
fi fi
if ! grep -q "allow $QEMU_BR_NAME" /etc/qemu/bridge.conf; then if ! grep -q "allow $QEMU_BR_NAME" /etc/qemu/bridge.conf; then
echo "allow $QEMU_BR_NAME" > /etc/qemu/bridge.conf echo "allow $QEMU_BR_NAME" >> /etc/qemu/bridge.conf
fi fi
} }
run_qemu() { run_qemu() {
@ -51,10 +42,6 @@ run_qemu() {
for host in ${!hosts[*]}; do for host in ${!hosts[*]}; do
ip route show |grep "${hosts[$host]} dev $QEMU_BR_NAME" ||\ ip route show |grep "${hosts[$host]} dev $QEMU_BR_NAME" ||\
ip route add ${hosts[$host]} dev $QEMU_BR_NAME ip route add ${hosts[$host]} dev $QEMU_BR_NAME
if test -f $ctxdir/data/$host/pid ; then
pinfo "Detected a pid file, killing process in case VM was already started"
kill $(cat $ctxdir/data/$host/pid) && sleep 1
fi
pinfo "Starting host $host with ip ${hosts[$host]}" pinfo "Starting host $host with ip ${hosts[$host]}"
qemu-system-x86_64 -enable-kvm -smp $QEMU_VM_CPU -m $QEMU_VM_MEM \ qemu-system-x86_64 -enable-kvm -smp $QEMU_VM_CPU -m $QEMU_VM_MEM \
-nic bridge,br=$QEMU_BR_NAME,mac=42:42:42:42:42:0${id} \ -nic bridge,br=$QEMU_BR_NAME,mac=42:42:42:42:42:0${id} \
@ -77,6 +64,7 @@ declare -A hosts
setup_network_qemu setup_network_qemu
get_hosts get_hosts
get_parts get_parts
destroyvms
run_qemu run_qemu
#clean #clean