#!/bin/bash set -ve ARCH=amd64 PROVISION="scripts/provision/$BOX/vagrant" OS=$(basename $BOX) if [ ! -f /etc/vagrant_box_build_time ]; then echo "This script should only be called during vagrant provisioning" exit 1 fi if [[ $HOME == /go/* ]]; then echo "Must not launch vagrant from /go/" exit 1 fi cd # --- Default to root user for vagrant ssh cat <<\EOF >/etc/profile.d/root.sh [ $EUID -ne 0 ] && exec sudo -i EOF # --- Setup go version if [ -z "${GOPATH}" ]; then GOPATH=$(realpath $HOME/../../../..) echo "WARNING: Assuming GOPATH=$GOPATH" else echo "Using parent GOPATH=$GOPATH" fi goversion=$(grep "^FROM " Dockerfile.dapper | sed -e 's/^FROM golang:\(.*\)-.*/\1/') if [ -z "$goversion" ]; then echo "Cannot find version of go to fetch" exit 1 fi # --- Setup basic env cat </etc/profile.d/env.sh export GO111MODULE=off export GOPATH="$GOPATH" export PATH=/usr/local/bin:$PATH:/usr/local/go/bin:$GOPATH/bin export HOME="$HOME" && cd EOF . /etc/profile.d/env.sh # --- Setup for dqlite download DQLITE_URL="https://github.com/$(grep dqlite-build Dockerfile.dapper | sed -e 's/^.*--from=\([^ ]*\).*$/\1/' -e 's|:|/releases/download/|')/dqlite-$ARCH.tgz" mkdir -p /usr/src/ # --- Clean go cache rm -rf .cache/go-build || true # --- Set color prompt sed -i 's|:/bin/ash$|:/bin/bash|g' /etc/passwd cat </etc/profile.d/color.sh alias ls='ls --color=auto' export PS1='\033[31m[ \033[90m\D{%F %T}\033[31m ] \033[35m{\033[90m$OS\033[35m}\n\[\033[36m\]\u\[\033[m\]🐮\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ ' EOF # --- Setup install script from docker run commands mkdir -p ${GOPATH}/bin mkdir -p /go ln -s $GOPATH/bin /go/bin sed ':a;N;$!ba;s/\\\n/ /g' /tmp/docker-run export BINDIR=/go/bin export GOPATH=/go export HOME=/tmp # --- Add k3s motd cat <<\EOF >/etc/motd , , ,-----------|'------'| |\ ____ /. '-'@ o|-' | | /___ \ |/| | .. | | | __ __) | ____ | .________.'----' | |/ /|__ < / __/ | || | || | < ___) |\__ \ \__|' \__|' |_|\_\_____/____/ EOF # --- Run vagrant provision script if available if [ ! -f "${PROVISION}" ]; then echo 'WARNING: Unable to execute provision script "${PROVISION}"' exit fi echo "running '${PROVISION}'..." && \ . ${PROVISION} && \ echo "finished '${PROVISION}'!"