3 9db62fa0 2023-05-05 mischa # Copyright (c) 2019-2023 Mischa Peters <mischa @ openbsd.amsterdam>
5 d5a21bfb 2021-04-18 mischa # Permission to use, copy, modify, and distribute this software for any
6 d5a21bfb 2021-04-18 mischa # purpose with or without fee is hereby granted, provided that the above
7 d5a21bfb 2021-04-18 mischa # copyright notice and this permission notice appear in all copies.
9 d5a21bfb 2021-04-18 mischa # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 d5a21bfb 2021-04-18 mischa # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 d5a21bfb 2021-04-18 mischa # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 d5a21bfb 2021-04-18 mischa # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 d5a21bfb 2021-04-18 mischa # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 d5a21bfb 2021-04-18 mischa # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 d5a21bfb 2021-04-18 mischa # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 d5a21bfb 2021-04-18 mischa CONF_FILE="${PWD}/_deploy.conf"
18 d5a21bfb 2021-04-18 mischa if [[ -f "${CONF_FILE}" ]]; then
19 d5a21bfb 2021-04-18 mischa . "${CONF_FILE}"
21 d5a21bfb 2021-04-18 mischa echo "unable to find _deploy.conf"
24 d5a21bfb 2021-04-18 mischa if [[ -z ${1} ]]; then
25 d5a21bfb 2021-04-18 mischa echo "usage: ${0##*/} vmXX"
28 d5a21bfb 2021-04-18 mischa if [[ ! -f "${VMS}/${1}.txt" ]]; then
29 2ed3c5f5 2022-12-01 mischa echo "unable to find ${VMS}/${1}.txt"
30 2ed3c5f5 2022-12-01 mischa if [[ -f "${VMS}/${1}.txt.free" ]]; then
31 2ed3c5f5 2022-12-01 mischa echo "found ${VMS}/${1}.txt.free"
32 2ed3c5f5 2022-12-01 mischa mv ${VMS}/${1}.txt.free ${VMS}/${1}.txt
37 2ed3c5f5 2022-12-01 mischa chown mischa ${VMS}/${1}.txt
38 2ed3c5f5 2022-12-01 mischa chmod 600 ${VMS}/${1}.txt
41 9db62fa0 2023-05-05 mischa INSTANCE=$(awk -F'=' '/instance/ {print $2}' ${VMS}/${1}.txt | tr -d '"')
42 9db62fa0 2023-05-05 mischa if [[ -z ${INSTANCE} ]]; then
43 9db62fa0 2023-05-05 mischa INSTANCE=${1}
48 eb0f1865 2023-05-08 mischa if [[ -z ${DHCPD} ]]; then
49 eb0f1865 2023-05-08 mischa rcctl restart dhcpd
51 aaf95dbe 2021-10-26 mischa vmctl reload
54 2ed3c5f5 2022-12-01 mischa mkfifo -m 600 /tmp/pipe_${1}
55 7e05e830 2022-12-07 mischa install -g mischa -m 600 -o mischa /dev/null ${LOGS}/${1}.log
57 9db62fa0 2023-05-05 mischa echo -n "autoinstall(8) ${INSTANCE}, log output ${LOGS}/${1}.log... "
59 9db62fa0 2023-05-05 mischa vmctl start -c ${INSTANCE} < /tmp/pipe_${1} | while read line; do
60 2ed3c5f5 2022-12-01 mischa printf '%s\n' "$line" >&2
61 2ed3c5f5 2022-12-01 mischa case $line in
62 2ed3c5f5 2022-12-01 mischa *rebooting...*)
63 9db62fa0 2023-05-05 mischa vmctl stop -f ${INSTANCE}
66 2ed3c5f5 2022-12-01 mischa #Response file location\?*)
67 2ed3c5f5 2022-12-01 mischa #vmctl stop -f ${1}
68 9db62fa0 2023-05-05 mischa #rm -rf /tmp/pipe_${1}
69 2ed3c5f5 2022-12-01 mischa #rm -rf /var/vmm/${1}.qcow2
70 2ed3c5f5 2022-12-01 mischa #pushover.pl -m "${SERVER} ${1} failed deploy" -t "OpenBSD Amsterdam" -p 1
74 7e05e830 2022-12-07 mischa done > /tmp/pipe_${1} 2> ${LOGS}/${1}.log
76 2ed3c5f5 2022-12-01 mischa echo "completed"
80 eb0f1865 2023-05-08 mischa if [[ -z ${DHCPD} ]]; then
81 eb0f1865 2023-05-08 mischa rcctl restart dhcpd
83 d5a21bfb 2021-04-18 mischa vmctl reload
86 9db62fa0 2023-05-05 mischa echo "booting ${INSTANCE}"
88 9db62fa0 2023-05-05 mischa vmctl start -c ${INSTANCE} < /tmp/pipe_${1} | while read line; do
89 2ed3c5f5 2022-12-01 mischa printf '%s\n' "$line" >&2
90 2ed3c5f5 2022-12-01 mischa case $line in
95 7e05e830 2022-12-07 mischa done > /tmp/pipe_${1} 2>> ${LOGS}/${1}.log
97 2ed3c5f5 2022-12-01 mischa rm -rf /tmp/pipe_${1}
100 9db62fa0 2023-05-05 mischa echo "SUCCES! - re-deployed ${INSTANCE}"
101 2ed3c5f5 2022-12-01 mischa notify.pl redeployed ${1}
102 9db62fa0 2023-05-05 mischa pushover.pl -m "${SERVER} ${INSTANCE} re-deployed" -t "OpenBSD Amsterdam"