diff --git a/launch.sh b/launch.sh index fbafdd0..0314a6f 100755 --- a/launch.sh +++ b/launch.sh @@ -26,10 +26,28 @@ if [[ -z ${1} ]]; then exit 1 fi if [[ ! -f "${VMS}/${1}.txt" ]]; then - echo "unable to find ${VMS}/${1}" - exit 1 + echo "unable to find ${VMS}/${1}.txt" + if [[ -f "${VMS}/${1}.txt.free" ]]; then + echo "found ${VMS}/${1}.txt.free" + mv ${VMS}/${1}.txt.free ${VMS}/${1}.txt + else + exit 1 + fi +else + chown mischa ${VMS}/${1}.txt + chmod 600 ${VMS}/${1}.txt fi +if [[ "${SERVER}" == server* ]]; then + HOST="s${SERVER#server}" +elif [[ "${SERVER}" == mega* ]]; then + HOST="m${SERVER#mega}" +fi + +openrsync -va --del /home/mischa/vms/ mischa@wm1.obsda.ms:vms/${HOST}/ +ssh wm1.obsda.ms "doas ./create-user.pl ${HOST}${1}" +openrsync -va --del /home/mischa/vms/ mischa@rx.high5.nl:vms/${HOST}/ + deploy.pl rcctl restart dhcpd vmctl reload @@ -50,7 +68,7 @@ vmctl start -c ${1} < /tmp/pipe_${1} | while read line; do #Response file location\?*) #vmctl stop -f ${1} #rm -rf /var/vmm/${1}.qcow2 - #pushover.pl -m "${SERVER} ${1} failed deploy" -p 1 + #pushover.pl -m "${SERVER} ${1} failed deploy" -t "OpenBSD Amsterdam" -p 1 #exit 1 #;; esac @@ -79,4 +97,4 @@ rm -rf /tmp/pipe_${1} echo echo "SUCCES! - deployed ${1}" notify.pl deployed ${1} -pushover.pl -m "${SERVER} ${1} deployed" +pushover.pl -m "${SERVER} ${1} deployed" -t "OpenBSD Amsterdam" diff --git a/relaunch.sh b/relaunch.sh index 7a5b0c0..8aa6924 100755 --- a/relaunch.sh +++ b/relaunch.sh @@ -26,23 +26,16 @@ if [[ -z ${1} ]]; then exit 1 fi if [[ ! -f "${VMS}/${1}.txt" ]]; then - echo "unable to find ${VMS}/${1}" - exit 1 -fi - -deploy.pl -rcctl restart dhcpd -vmctl reload -sleep 10 - -auto-deploy.exp ${1} -if [ $? != 0 ]; then - vmctl stop -f ${1} - rm -rf /var/vmm/${1}.qcow2 - pushover.pl -m "$(hostname -s) ${1} failed deploy" -p 1 - exit 1 + echo "unable to find ${VMS}/${1}.txt" + if [[ -f "${VMS}/${1}.txt.free" ]]; then + echo "found ${VMS}/${1}.txt.free" + mv ${VMS}/${1}.txt.free ${VMS}/${1}.txt + else + exit 1 + fi else - vmctl stop -f ${1} + chown mischa ${VMS}/${1}.txt + chmod 600 ${VMS}/${1}.txt fi deploy.pl @@ -50,10 +43,48 @@ rcctl restart dhcpd vmctl reload sleep 10 -auto-start.exp ${1} -if [ $? ]; then - echo - echo "SUCCES! - re-deployed ${1}" - notify.pl redeployed ${1} - pushover.pl -m "$(hostname -s) ${1} re-deployed" -t "OpenBSD Amsterdam" -fi +mkfifo -m 600 /tmp/pipe_${1} +install -g mischa -m 600 -o mischa /dev/null /home/mischa/${1}.log + +echo -n "autoinstall ${1}, log output /home/mischa/${1}.log... " + +vmctl start -c ${1} < /tmp/pipe_${1} | while read line; do + printf '%s\n' "$line" >&2 + case $line in + *rebooting...*) + vmctl stop -f ${1} + break + ;; + #Response file location\?*) + #vmctl stop -f ${1} + #rm -rf /var/vmm/${1}.qcow2 + #pushover.pl -m "${SERVER} ${1} failed deploy" -t "OpenBSD Amsterdam" -p 1 + #exit 1 + #;; + esac +done > /tmp/pipe_${1} 2> /home/mischa/${1}.log + +echo "completed" + +deploy.pl +rcctl restart dhcpd +vmctl reload +sleep 10 + +echo "booting ${1}" + +vmctl start -c ${1} < /tmp/pipe_${1} | while read line; do + printf '%s\n' "$line" >&2 + case $line in + *tty00*) + break + ;; + esac +done > /tmp/pipe_${1} 2>> /home/mischa/${1}.log + +rm -rf /tmp/pipe_${1} + +echo +echo "SUCCES! - re-deployed ${1}" +notify.pl redeployed ${1} +pushover.pl -m "${SERVER} ${1} re-deployed" -t "OpenBSD Amsterdam" diff --git a/relaunch.sh-old b/relaunch.sh-old new file mode 100755 index 0000000..7a5b0c0 --- /dev/null +++ b/relaunch.sh-old @@ -0,0 +1,59 @@ +#!/bin/sh +# +# Copyright (c) 2019-2022 Mischa Peters +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +CONF_FILE="${PWD}/_deploy.conf" +if [[ -f "${CONF_FILE}" ]]; then + . "${CONF_FILE}" +else + echo "unable to find _deploy.conf" + exit 1 +fi +if [[ -z ${1} ]]; then + echo "usage: ${0##*/} vmXX" + exit 1 +fi +if [[ ! -f "${VMS}/${1}.txt" ]]; then + echo "unable to find ${VMS}/${1}" + exit 1 +fi + +deploy.pl +rcctl restart dhcpd +vmctl reload +sleep 10 + +auto-deploy.exp ${1} +if [ $? != 0 ]; then + vmctl stop -f ${1} + rm -rf /var/vmm/${1}.qcow2 + pushover.pl -m "$(hostname -s) ${1} failed deploy" -p 1 + exit 1 +else + vmctl stop -f ${1} +fi + +deploy.pl +rcctl restart dhcpd +vmctl reload +sleep 10 + +auto-start.exp ${1} +if [ $? ]; then + echo + echo "SUCCES! - re-deployed ${1}" + notify.pl redeployed ${1} + pushover.pl -m "$(hostname -s) ${1} re-deployed" -t "OpenBSD Amsterdam" +fi