k3s/scripts/provision/vagrant

103 lines
2.8 KiB
Plaintext
Raw Normal View History

#!/bin/bash
set -ve
PROVISION="scripts/provision/$BOX/vagrant"
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
2020-02-28 23:51:19 +00:00
cd
# --- Default to root user for vagrant ssh
cat <<\EOF >/etc/profile.d/root.sh
[ $EUID -ne 0 ] && exec sudo -i
EOF
2020-02-28 23:51:19 +00:00
# --- Setup go version
if [ -z "${GOPATH}" ]; then
GOPATH=$(realpath $HOME/../../../..)
echo "WARNING: Assuming GOPATH=$GOPATH"
else
echo "Using parent GOPATH=$GOPATH"
fi
2020-02-28 23:51:19 +00:00
# --- Setup basic env
cat <<EOF >/etc/profile.d/env.sh
2020-03-02 16:38:07 +00:00
export ARCH=amd64
2020-02-28 23:51:19 +00:00
export GO111MODULE=off
export GOPATH=$GOPATH
2020-02-28 23:51:19 +00:00
export PATH=/usr/local/bin:$PATH:/usr/local/go/bin:$GOPATH/bin
export HOME=$HOME && cd
2020-02-28 23:51:19 +00:00
EOF
. /etc/profile.d/env.sh
# --- Clean go cache
rm -rf .cache/go-build || true
2020-02-28 23:51:19 +00:00
# --- Set color prompt
sed -i 's|:/bin/ash$|:/bin/bash|g' /etc/passwd
2020-03-06 17:46:10 +00:00
cat <<\EOF >/etc/profile.d/color.sh
2020-02-28 23:51:19 +00:00
alias ls='ls --color=auto'
2020-03-06 17:46:10 +00:00
export PS1='\033[31m[ \033[90m\D{%F 🐮 %T}\033[31m ]\n\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h\[\033[35m\]:\[\033[33;1m\]\w\[\033[m\]\$ '
2020-02-28 23:51:19 +00:00
EOF
# --- Setup install script from docker run commands
mkdir -p ${GOPATH}/bin
mkdir -p /go
2020-03-02 16:38:07 +00:00
ln -sf $GOPATH/bin /go/bin
sed ':a;N;$!ba;s/\\\n/ /g' <Dockerfile.dapper | grep -E '^(ARG|ENV|RUN) ' | sed -E -e 's/^RUN //' -e 's/^(ARG|ENV) +([^ =]*) *=? *(.*)/export \2="\3"/' >/tmp/docker-run
2020-02-28 23:51:19 +00:00
export BINDIR=/go/bin
export GOPATH=/go
export HOME=/tmp
# --- Add k3s motd
cat <<\EOF >/etc/motd
, ,
,-----------|'------'| |\ ____
/. '-'@ o|-' | | /___ \
|/| | .. | | | __ __) | ____
| .________.'----' | |/ /|__ < / __/
| || | || | < ___) |\__ \
\__|' \__|' |_|\_\_____/____/
EOF
# --- Enable IPv6 and IP forwarding
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.disable_ipv6=0
sysctl -w net.ipv6.conf.all.forwarding=1
sed -i \
-e "/^net.ipv6.conf.all.disable_ipv6 = 1/d" \
/etc/sysctl.conf
cat <<EOF >>/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 1
EOF
2020-03-02 16:38:07 +00:00
# --- Utility function to download go
download_go() {
goversion=$(grep "golang:" Dockerfile.dapper | sed -e 's/.*golang:\(.*\)-.*/\1/')
2020-03-02 16:38:07 +00:00
if [ -z "$goversion" ]; then
echo 'Cannot find version of go to fetch'
2020-03-02 16:38:07 +00:00
return 1
fi
echo "Installing go $goversion"
curl -sL https://storage.googleapis.com/golang/go${goversion}.linux-${ARCH}.tar.gz | tar -xzf - -C /usr/local
}
# --- 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}'!"