95 lines
2.0 KiB
Bash
Executable File
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"
|