mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
116bcbb250
By default, the most of Vagrant boxes are explicitly disabling IPv6 through sysctl. This change makes sure that IPv6, and also IP forwarding for all families, are enabled. This change is necessary for using dual-stack in Vagrant environment. Signed-off-by: Michal Rostecki <vadorovsky@gmail.com>
103 lines
2.8 KiB
Bash
Executable File
103 lines
2.8 KiB
Bash
Executable File
#!/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
|
|
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
|
|
|
|
# --- Setup basic env
|
|
cat <<EOF >/etc/profile.d/env.sh
|
|
export ARCH=amd64
|
|
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
|
|
|
|
# --- Clean go cache
|
|
rm -rf .cache/go-build || true
|
|
|
|
# --- Set color prompt
|
|
sed -i 's|:/bin/ash$|:/bin/bash|g' /etc/passwd
|
|
cat <<\EOF >/etc/profile.d/color.sh
|
|
alias ls='ls --color=auto'
|
|
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\]\$ '
|
|
EOF
|
|
|
|
# --- Setup install script from docker run commands
|
|
mkdir -p ${GOPATH}/bin
|
|
mkdir -p /go
|
|
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
|
|
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
|
|
|
|
# --- Utility function to download go
|
|
download_go() {
|
|
goversion=$(grep "golang:" Dockerfile.dapper | sed -e 's/.*golang:\(.*\)-.*/\1/')
|
|
if [ -z "$goversion" ]; then
|
|
echo 'Cannot find version of go to fetch'
|
|
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}'!"
|