mirror of https://github.com/k3s-io/k3s
Erik Wilson
5 years ago
6 changed files with 182 additions and 90 deletions
@ -1,64 +1,38 @@ |
|||||||
#!/bin/bash |
#!/bin/bash |
||||||
set -ve |
set -ve |
||||||
|
|
||||||
cd $(dirname $0)/.. |
|
||||||
|
|
||||||
if [ ! -f /etc/vagrant_box_build_time ]; then |
|
||||||
echo "This script should only be called during vagrant provisioning" |
|
||||||
exit 1 |
|
||||||
fi |
|
||||||
|
|
||||||
ARCH=amd64 |
|
||||||
if [[ $HOME == /go/* ]]; then |
|
||||||
echo "Must not launch vagrant from /go/" |
|
||||||
exit 1 |
|
||||||
fi |
|
||||||
|
|
||||||
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 |
|
||||||
|
|
||||||
echo "Installing go $goversion" |
|
||||||
apk add -q -f curl libc6-compat tzdata |
apk add -q -f curl libc6-compat tzdata |
||||||
|
echo "Installing go $goversion" |
||||||
curl -sL https://storage.googleapis.com/golang/go${goversion}.linux-${ARCH}.tar.gz | tar -xzf - -C /usr/local |
curl -sL https://storage.googleapis.com/golang/go${goversion}.linux-${ARCH}.tar.gz | tar -xzf - -C /usr/local |
||||||
# --- |
# --- |
||||||
cat <<EOF >/etc/profile.d/build.sh |
cat <<EOF >/etc/profile.d/build.sh |
||||||
|
export SELINUX=true |
||||||
|
export DQLITE=true |
||||||
export STATIC_BUILD=true |
export STATIC_BUILD=true |
||||||
EOF |
EOF |
||||||
# --- |
. /etc/profile.d/build.sh |
||||||
cat <<EOF >/etc/profile.d/go.sh |
|
||||||
export GOPATH=$GOPATH |
|
||||||
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin |
|
||||||
EOF |
|
||||||
. /etc/profile.d/go.sh |
|
||||||
# --- |
# --- |
||||||
sed -i 's|:/bin/ash$|:/bin/bash|g' /etc/passwd |
sed -i 's|:/bin/ash$|:/bin/bash|g' /etc/passwd |
||||||
cat <<\EOF >/etc/profile.d/color.sh |
cat <<EOF >/etc/profile.d/color.sh |
||||||
alias ls='ls --color=auto' |
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[33;1m\]\w\[\033[m\]$ ' |
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 |
EOF |
||||||
# --- |
# --- |
||||||
|
DQLITE_URL="https://github.com/$(grep dqlite-build Dockerfile.dapper | sed -e 's/^.*--from=\([^ ]*\).*$/\1/' -e 's|:|/releases/download/|')/dqlite-$ARCH.tgz" |
||||||
|
echo "Downloading DQLITE from $DQLITE_URL" |
||||||
|
mkdir -p /usr/src/ |
||||||
|
curl -sfL $DQLITE_URL -o /usr/src/dqlite.tgz |
||||||
|
# --- |
||||||
mkdir -p ${GOPATH}/bin |
mkdir -p ${GOPATH}/bin |
||||||
mkdir -p /go |
mkdir -p /go |
||||||
ln -s $GOPATH/bin /go/bin |
ln -s $GOPATH/bin /go/bin |
||||||
sed ':a;N;$!ba;s/\\\n/ /g' <Dockerfile.dapper | grep '^RUN ' | sed -e 's/^RUN //' >/tmp/docker-run |
sed ':a;N;$!ba;s/\\\n/ /g' <Dockerfile.dapper | grep '^RUN ' | sed -e 's/^RUN //' >/tmp/docker-run |
||||||
export BINDIR=/go/bin |
export BINDIR=/go/bin |
||||||
export GOPATH=/go |
export GOPATH=/go |
||||||
export HOME=/tmp && cd |
export HOME=/tmp |
||||||
. /tmp/docker-run |
. /tmp/docker-run |
||||||
cd /go |
# --- |
||||||
go get github.com/rancher/trash |
go get -u github.com/go-delve/delve/cmd/dlv |
||||||
rm -rf /go |
|
||||||
cd |
|
||||||
# --- |
# --- |
||||||
cat <<EOF >/etc/profile.d/docker.sh |
cat <<EOF >/etc/profile.d/docker.sh |
||||||
export DOCKER_HOST=tcp://10.0.2.2:2375 |
export DOCKER_HOST=tcp://10.0.2.2:2375 |
@ -0,0 +1,79 @@ |
|||||||
|
#!/bin/bash |
||||||
|
set -ve |
||||||
|
|
||||||
|
|
||||||
|
echo "Installing go $goversion" |
||||||
|
curl -sL https://storage.googleapis.com/golang/go${goversion}.linux-${ARCH}.tar.gz | tar -xzf - -C /usr/local |
||||||
|
# --- |
||||||
|
cat <<EOF >/etc/profile.d/build.sh |
||||||
|
export SELINUX=true |
||||||
|
# export DQLITE=true |
||||||
|
# export STATIC_BUILD=true |
||||||
|
EOF |
||||||
|
. /etc/profile.d/build.sh |
||||||
|
# --- |
||||||
|
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 ] \033[35m{\033[90m$OS\033[35m}\n\[\033[36m\]\u\[\033[m\]🐮\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ ' |
||||||
|
EOF |
||||||
|
# --- |
||||||
|
DQLITE_URL="https://github.com/$(grep dqlite-build Dockerfile.dapper | sed -e 's/^.*--from=\([^ ]*\).*$/\1/' -e 's|:|/releases/download/|')/dqlite-$ARCH.tgz" |
||||||
|
echo "Downloading DQLITE from $DQLITE_URL" |
||||||
|
mkdir -p /usr/src/ |
||||||
|
curl -sfL $DQLITE_URL -o /usr/src/dqlite.tgz |
||||||
|
# --- |
||||||
|
mkdir -p ${GOPATH}/bin |
||||||
|
mkdir -p /go |
||||||
|
ln -s $GOPATH/bin /go/bin |
||||||
|
sed ':a;N;$!ba;s/\\\n/ /g' <Dockerfile.dapper | grep '^RUN ' | sed -e 's/^RUN //' >/tmp/docker-run |
||||||
|
sed -E 's|apk( -U)?( --no-cache)?( --repository [^ ]*)? add( --allow-untrusted)?|yum install -y|g' -i /tmp/docker-run |
||||||
|
sed -E 's/-dev/-devel/g' -i /tmp/docker-run |
||||||
|
export BINDIR=/go/bin |
||||||
|
export GOPATH=/go |
||||||
|
export HOME=/tmp |
||||||
|
( set +e && . /tmp/docker-run ) || true |
||||||
|
# --- |
||||||
|
go get -u github.com/go-delve/delve/cmd/dlv |
||||||
|
# --- |
||||||
|
# docker install instructions slightly changed from https://kubernetes.io/docs/setup/production-environment/container-runtimes/ |
||||||
|
# default "exec-opts": ["native.cgroupdriver=cgroupfs"], and set "selinux-enabled": true |
||||||
|
yum remove -y docker docker-common |
||||||
|
yum install -y yum-utils device-mapper-persistent-data lvm2 |
||||||
|
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
||||||
|
yum update -y && yum install -y containerd.io-1.2.10 docker-ce-19.03.4 docker-ce-cli-19.03.4 |
||||||
|
mkdir -p /etc/docker |
||||||
|
cat > /etc/docker/daemon.json <<EOF |
||||||
|
{ |
||||||
|
"log-driver": "json-file", |
||||||
|
"log-opts": { |
||||||
|
"max-size": "100m" |
||||||
|
}, |
||||||
|
"selinux-enabled": true, |
||||||
|
"storage-driver": "overlay2", |
||||||
|
"storage-opts": [ |
||||||
|
"overlay2.override_kernel_check=true" |
||||||
|
] |
||||||
|
} |
||||||
|
EOF |
||||||
|
# --- |
||||||
|
systemctl daemon-reload |
||||||
|
systemctl disable --now firewalld |
||||||
|
systemctl disable --now docker |
||||||
|
# --- |
||||||
|
# set selinux to permissive for dev & testing purposes only |
||||||
|
setenforce 0 |
||||||
|
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config |
||||||
|
# --- |
||||||
|
cat <<\EOF >>/etc/motd |
||||||
|
, , |
||||||
|
,-----------|'------'| |\ ____ |
||||||
|
/. '-'@ o|-' | | /___ \ |
||||||
|
|/| | .. | | | __ __) | ____ |
||||||
|
| .________.'----' | |/ /|__ < / __/ |
||||||
|
| || | || | < ___) |\__ \ |
||||||
|
\__|' \__|' |_|\_\_____/____/ |
||||||
|
|
||||||
|
EOF |
||||||
|
# --- |
||||||
|
set +v |
@ -0,0 +1,55 @@ |
|||||||
|
#!/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 |
||||||
|
|
||||||
|
# --- Default to root user for vagrant ssh |
||||||
|
cat <<\EOF >/etc/profile.d/root.sh |
||||||
|
[ $EUID -ne 0 ] && exec sudo -i |
||||||
|
EOF |
||||||
|
|
||||||
|
# --- Setup basic env |
||||||
|
cat <<EOF >/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 |
||||||
|
|
||||||
|
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 |
||||||
|
|
||||||
|
# clean go cache |
||||||
|
rm -rf .cache/go-build || true |
||||||
|
|
||||||
|
# --- 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}'!" |
Loading…
Reference in new issue