openkubsd/bin/create_template.sh
2023-06-09 22:54:50 +02:00

95 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
DIR="$(mktemp -d /tmp/openkubsd-new-template.XXXXXXXXXXXXXXXXXXXXX)"
NAME=openbsd-template
DISK=/var/openkubsd/templates/${NAME}.qcow2
if [[ "$(id -u)" -ne "0" ]]
then
echo "you must run $0 as root"
exit 1
fi
if ! rcctl check vmd
then
echo "vmd isn't running"
exit 1
fi
cd $DIR || exit 1
if [[ -f "$DISK" ]]
then
echo "$DISK already exist"
exit 1
fi
# download upobsd
curl -OL https://raw.githubusercontent.com/rapenne-s/upobsd/master/upobsd.sh
# download bsd.rd
curl -OL https://cdn.openbsd.org/pub/OpenBSD/7.3/amd64/bsd.rd
# create install.conf
cat <<EOF >install.conf
System hostname = $NAME
Password for root = hunter2
Public ssh key for root = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOIZKLFQXVM15viQXHYRjGqE6LLfvETMkjjgSz0mxMzS
Change the default console to com0 = yes
Which speed should com0 use = 19200
Allow root ssh login = prohibit-password
Setup a user = user
Password for user = *************
Public ssh key for user = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOIZKLFQXVM15viQXHYRjGqE6LLfvETMkjjgSz0mxMzS
What timezone are you in = Europe/Paris
Location of sets = http
HTTP Server = 10.100.0.1
EOF
# update bsd.rd
chmod +x upobsd.sh
./upobsd.sh -f bsd.rd -i install.conf
# create disk
vmctl create -s 60G "${DISK}"
# generate a MAC address
MAC="$(hexdump -n3 -e'/3 "00:60:2F" 3/1 ":%02X"' /dev/random)"
NEXT_IP=$(/var/openkubsd/bin/get_ip.sh)
# run install
cat <<EOF >/var/openkubsd/vm.conf.d/vms/${NAME}.conf
vm "${NAME}" {
disk ${DISK}
boot device disk
boot ${DIR}/bsd.rd
memory 1G
interface locked lladdr $MAC switch kubes
disable
}
EOF
cat <<EOF >/var/openkubsd/dhcpd.d/${NAME}.conf
host ${NAME} {
hardware ethernet $MAC;
fixed-address $NEXT_IP;
option host-name "$NAME";
}
EOF
/var/openkubsd/bin/recreate_conf.sh
vmctl start "${NAME}"
vmctl wait "${NAME}"
cat <<EOF >/var/openkubsd/vm.conf.d/vms/${NAME}.conf
vm "${NAME}" {
disk ${DISK}
interface locked lladdr $MAC switch kubes
disable
}
EOF
/var/openkubsd/bin/recreate_conf.sh
rm -fr "$DIR"