diff --git a/bin/connect.sh b/bin/connect.sh new file mode 100755 index 0000000..bc73e84 --- /dev/null +++ b/bin/connect.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ -z "$1" ] +then + echo "Pick an host:" + awk '/.kube/ { print " - "$2 }' /etc/hosts + exit 0 +fi + +HOST="${1}" +PROG="${2:-xterm}" + +if ! grep "$HOST" /etc/hosts >/dev/null +then + echo "$HOST doesn't exist" + exit 1 +fi + +doas ./start_kube.sh "${HOST%.kube}" +ssh-keygen -R "$HOST" >/dev/null 2>/dev/null +ssh -o StrictHostKeyChecking=no -Y user@$HOST "$PROG" diff --git a/bin/create_kube.sh b/bin/create_kube.sh index 81c299e..a2b493e 100755 --- a/bin/create_kube.sh +++ b/bin/create_kube.sh @@ -8,20 +8,29 @@ then exit 1 fi -NAME=kube +NAME=${1:-kube} DISK=/var/openkubsd/disks/${NAME}.qcow2 # create a qcow2 file for /home -test -f "${DISK}" || vmctl create -s 60G "${DISK}" +if test -f "${DISK}" +then + echo "$DISK already exist, this shouldn't happen" + exit 1 +fi # generate a MAC address MAC="$(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/:$//')" NEXT_IP=$(/var/openkubsd/bin/get_ip.sh) +# create a derived disk from the template +rm -f /var/openkubsd/derived/${NAME}.qcow2 +vmctl create -b /var/openkubsd/templates/openbsd-template.qcow2 /var/openkubsd/derived/${NAME}.qcow2 +vmctl create -s 60G "${DISK}" + # create the vm.conf file cat </var/openkubsd/vm.conf.d/vms/${NAME}.conf vm "${NAME}" { - disk /var/openkubsd/templates/openbsd-template.qcow2 + disk /var/openkubsd/derived/${NAME}.qcow2 disk $DISK interface locked lladdr $MAC switch kubes disable @@ -32,6 +41,7 @@ cat </var/openkubsd/dhcpd.d/${NAME}.conf host ${NAME} { hardware ethernet $MAC; fixed-address $NEXT_IP; + option host-name "$NAME"; } EOF diff --git a/bin/create_template.sh b/bin/create_template.sh index 9357191..18d168f 100755 --- a/bin/create_template.sh +++ b/bin/create_template.sh @@ -71,6 +71,7 @@ cat </var/openkubsd/dhcpd.d/${NAME}.conf host ${NAME} { hardware ethernet $MAC; fixed-address $NEXT_IP; + option host-name "$NAME" } EOF diff --git a/bin/recreate_conf.sh b/bin/recreate_conf.sh index 6f76e2f..582adb6 100755 --- a/bin/recreate_conf.sh +++ b/bin/recreate_conf.sh @@ -7,11 +7,9 @@ then fi cd /var/openkubsd/vm.conf.d/vms/ -ls *.conf cat *.conf > ../vms.conf cd /var/openkubsd/dhcpd.d/ -ls *.conf cat *.conf > /etc/dhcpd.conf HOSTS=$(find /var/openkubsd/dhcpd.d/ -not -name 00_base.conf -type f -exec cat {} + | grep -E "(^host|fixed-address)" | tr -d ';' | paste - - | awk '{ print $5" "$2".kube" }') diff --git a/bin/remove_kube.sh b/bin/remove_kube.sh new file mode 100755 index 0000000..372aca1 --- /dev/null +++ b/bin/remove_kube.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +if [[ "$(id -u)" -ne "0" ]] +then + echo "you must run $0 as root" + exit 1 +fi + +NAME=${1:-kube} + +if vmctl show $NAME +then + rm /var/openkubsd/dhcpd.d/${NAME}.conf + rm /var/openkubsd/vm.conf.d/vms/${NAME}.conf + rm /var/openkubsd/derived/${NAME}.qcow2 + rm /var/openkubsd/disks/${NAME}.qcow2 + /var/openkubsd/bin/recreate_conf.sh +else + echo "$NAME doesn't exist" +fi diff --git a/bin/setup.sh b/bin/setup.sh index e5a15ad..3e3b2ba 100755 --- a/bin/setup.sh +++ b/bin/setup.sh @@ -17,6 +17,7 @@ install -d -o root -g wheel -m 755 /var/openkubsd/vm.conf.d/ install -d -o root -g wheel -m 755 /var/openkubsd/vm.conf.d/vms/ install -d -o root -g wheel -m 700 /var/openkubsd/pf/ install -d -o root -g wheel -m 700 /var/openkubsd/disks/ +install -d -o root -g wheel -m 700 /var/openkubsd/derived/ install -d -o root -g wheel -m 755 /var/openkubsd/templates/ install -o root -g wheel -m 555 ./get_ip.sh /var/openkubsd/bin/ diff --git a/bin/start_kube.sh b/bin/start_kube.sh index 863f882..b7cbbc0 100755 --- a/bin/start_kube.sh +++ b/bin/start_kube.sh @@ -6,8 +6,14 @@ then exit 1 fi -# create a derived disk from the template -rm -f /tmp/kube.qcow2 -vmctl create -b /var/openkubsd/templates/openbsd.qcow2 /tmp/kube.qcow2 +NAME=${1:-kube} -vmctl start -n kube -d /tmp/kube.qcow2 -d /var/openkubsd/disks/kube.qcow2 kube +if vmctl status $NAME | grep running >/dev/null +then + exit 0 +fi + +# create a derived disk from the template +rm -f /var/openkubsd/derived/${NAME}.qcow2 +vmctl create -b /var/openkubsd/templates/openbsd-template.qcow2 /var/openkubsd/derived/${NAME}.qcow2 +vmctl start $NAME diff --git a/bin/stop_kube.sh b/bin/stop_kube.sh deleted file mode 100755 index a74014f..0000000 --- a/bin/stop_kube.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -if [[ "$(id -u)" -ne "0" ]] -then - echo "you must run $0 as root" - exit 1 -fi - -vmctl stop -w kube -rm -f /tmp/kube.qcow2