kittehcluster/serverinfra/install.sh
2024-08-02 17:21:29 -04:00

72 lines
No EOL
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
SERVER_INSTALL_PATH="$1"
EXTERN_IP="$2"
HTTP_PORT="$((1024 + $RANDOM % 65535))"
TMPDIR="/tmp/server_http_$HTTP_PORT"
if [ "$SERVER_INSTALL_PATH" == "" ]; then
echo "You didn't pass in all the arguments! Usage:"
echo " ./install.sh \$INSTALL_KEY"
exit 1
fi
if [ "$EXTERN_IP" == "" ]; then
BASE_IPS="$(ip a | grep "inet" | grep "brd" | cut -d "/" -f 1 | cut -d " " -f 6)"
EXT_10_DOT_IP="$(echo "$BASE_IPS" | grep "10." | cut -d $'\n' -f 1)"
EXT_172_16_IP="$(echo "$BASE_IPS" | grep "172.16." | cut -d $'\n' -f 1)"
EXT_192168_IP="$(echo "$BASE_IPS" | grep "192.168." | cut -d $'\n' -f 1)"
if [ "$EXT_10_DOT_IP" != "" ]; then
EXTERN_IP="$EXT_10_DOT_IP"
fi
if [ "$EXT_172_16_IP" != "" ]; then
EXTERN_IP="$EXT_172_16_IP"
fi
if [ "$EXT_192168_IP" != "" ]; then
EXTERN_IP="$EXT_192168_IP"
fi
fi
echo "[x] initializing..."
./merge.py "$SERVER_INSTALL_PATH" "http://$EXTERN_IP:$HTTP_PORT/api/installer_update_webhook"
mkdir $TMPDIR
echo "#cloud-config" > $TMPDIR/user-data
cat /tmp/script.yml >> $TMPDIR/user-data
if [ "$(uname)" == "Linux" ]; then
echo "[x] stopping firewall (Linux)..."
sudo systemctl stop firewall
fi
touch $TMPDIR/meta-data
touch $TMPDIR/vendor-data
echo "[x] starting HTTP server..."
echo " - Going to listen on port $HTTP_PORT."
echo " - Unless you believe the install has gone wrong, do NOT manually kill the HTTP server,"
echo " - as it will close on its own."
echo " - Add these command line options to Ubuntu:"
echo " - autoinstall \"ds=nocloud-net;s=http://$EXTERN_IP:$HTTP_PORT/\""
echo
SERVE_SCRIPT="$PWD/serve.py"
pushd $TMPDIR > /dev/null
python3 $SERVE_SCRIPT $HTTP_PORT
popd > /dev/null
echo "[x] running cleanup tasks..."
rm -rf $TMPDIR
if [ "$(uname)" == "Linux" ]; then
echo "[x] starting firewall (Linux)..."
sudo systemctl start firewall
fi