mirror of https://github.com/k3s-io/k3s
Derek Nola
2 years ago
committed by
GitHub
11 changed files with 0 additions and 348 deletions
@ -1,59 +0,0 @@
|
||||
DISTRO = (ENV['DISTRO'] || "alpine312") |
||||
BOX_REPO = (ENV['BOX_REPO'] || "generic") |
||||
HOME = ENV['HOME'] |
||||
PROJ_HOME = File.dirname(__FILE__) |
||||
PROJECT = File.basename(PROJ_HOME) |
||||
NUM_NODES = (ENV['NUM_NODES'] || 0).to_i |
||||
NODE_CPUS = (ENV['NODE_CPUS'] || 4).to_i |
||||
NODE_MEMORY = (ENV['NODE_MEMORY'] || 8192).to_i |
||||
NETWORK_PREFIX = ENV['NETWORK_PREFIX'] || "10.135.135" |
||||
VAGRANT_PROVISION = ENV['VAGRANT_PROVISION'] || "./scripts/provision/vagrant" |
||||
MOUNT_TYPE = ENV['MOUNT_TYPE'] || "virtualbox" |
||||
|
||||
# --- Rules for /etc/sudoers to avoid password entry configuring NFS: |
||||
# %admin ALL = (root) NOPASSWD: /usr/bin/sed -E -e * -ibak /etc/exports |
||||
# %admin ALL = (root) NOPASSWD: /usr/bin/tee -a /etc/exports |
||||
# %admin ALL = (root) NOPASSWD: /sbin/nfsd restart |
||||
# --- May need to add terminal to System Preferences -> Security & Privacy -> Privacy -> Full Disk Access |
||||
|
||||
def provision(vm, node_num) |
||||
node_os = (ENV["DISTRO_#{node_num}"] || DISTRO) |
||||
vm.box = (ENV["BOX_#{node_num}"] || ENV["BOX"] || "#{BOX_REPO}/#{node_os}") |
||||
vm.hostname = "#{PROJECT}-#{node_num}-#{vm.box.gsub(/^.*\//,"")}" |
||||
vm.network "private_network", ip: "#{NETWORK_PREFIX}.#{100+node_num}" |
||||
vm.provision "shell", |
||||
path: VAGRANT_PROVISION, |
||||
env: { 'HOME' => PROJ_HOME, 'GOPATH' => ENV['GOPATH'], 'BOX' => vm.box } |
||||
end |
||||
|
||||
Vagrant.configure("2") do |config| |
||||
|
||||
config.vm.provider "virtualbox" do |v| |
||||
v.cpus = NODE_CPUS |
||||
v.memory = NODE_MEMORY |
||||
v.customize ["modifyvm", :id, "--audio", "none"] |
||||
end |
||||
config.vm.provider "libvirt" do |v| |
||||
v.cpus = NODE_CPUS |
||||
v.memory = NODE_MEMORY |
||||
end |
||||
if Vagrant.has_plugin?("vagrant-timezone") |
||||
config.timezone.value = :host |
||||
end |
||||
if "#{MOUNT_TYPE}" == "nfs" |
||||
config.vm.synced_folder HOME, HOME, type: "nfs", mount_options: ["vers=3,tcp"] |
||||
else |
||||
config.vm.synced_folder HOME, HOME, type: MOUNT_TYPE |
||||
end |
||||
|
||||
if NUM_NODES==0 |
||||
provision(config.vm, 0) |
||||
else |
||||
(1..NUM_NODES).each do |i| |
||||
config.vm.define ".#{i}" do |node| |
||||
provision(node.vm, i) |
||||
end |
||||
end |
||||
end |
||||
|
||||
end |
@ -1,32 +0,0 @@
|
||||
#!/bin/bash |
||||
set -ve |
||||
|
||||
apk add -q -f curl libc6-compat tzdata |
||||
download_go |
||||
# --- |
||||
rc-update add cgroups default |
||||
/etc/init.d/cgroups start |
||||
# --- |
||||
cat <<EOF >/etc/profile.d/build.sh |
||||
export SELINUX=true |
||||
export STATIC_BUILD=true |
||||
EOF |
||||
. /etc/profile.d/build.sh |
||||
# --- |
||||
. /tmp/docker-run |
||||
# --- |
||||
go install -u github.com/go-delve/delve/cmd/dlv |
||||
# --- |
||||
cat <<EOF >/etc/profile.d/docker.sh |
||||
export DOCKER_HOST=tcp://10.0.2.2:2375 |
||||
EOF |
||||
. /etc/profile.d/docker.sh |
||||
# --- |
||||
( |
||||
if ! docker version --format '{{.Server.Version}}' >/tmp/docker-server-version; then |
||||
echo "WARNING: Unable to connect to the docker socket, to enable docker in vagrant run the following command on the host:" |
||||
echo "docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 alpine/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock" |
||||
else |
||||
echo "Using host docker server v$(cat /tmp/docker-server-version)" |
||||
fi |
||||
) |
@ -1,37 +0,0 @@
|
||||
#!/bin/bash |
||||
|
||||
set -e -x |
||||
|
||||
TMPDIR=$(mktemp -d) |
||||
cleanup() { |
||||
exit_code=$? |
||||
trap - EXIT INT |
||||
rm -rf ${TMPDIR} |
||||
exit ${exit_code} |
||||
} |
||||
trap cleanup EXIT INT |
||||
|
||||
export HOME=${TMPDIR} |
||||
|
||||
gpg --batch --gen-key - <<EOF |
||||
%echo Generating a default key |
||||
Key-Type: default |
||||
Subkey-Type: default |
||||
Name-Real: Rancher |
||||
Name-Comment: CI |
||||
Name-Email: ci@rancher.com |
||||
Expire-Date: 0 |
||||
|
||||
# Key-Length: 4096 |
||||
# Subkey-Length: 4096 |
||||
Passphrase: $PRIVATE_KEY_PASS_PHRASE |
||||
# %no-protection |
||||
# %no-ask-passphrase |
||||
|
||||
# Do a commit here, so that we can later print "done" :-) |
||||
%commit |
||||
%echo done |
||||
EOF |
||||
|
||||
gpg --armor --export ci@rancher.com >public.key |
||||
gpg --armor --export-secret-key ci@rancher.com >private.key |
@ -1,45 +0,0 @@
|
||||
#!/bin/bash |
||||
set -ve |
||||
|
||||
download_go |
||||
# --- |
||||
cat <<EOF >/etc/profile.d/build.sh |
||||
export SELINUX=true |
||||
# export STATIC_BUILD=true |
||||
EOF |
||||
. /etc/profile.d/build.sh |
||||
# --- |
||||
sed -E 's|apk( -U)?( --no-cache)?( --repository [^ ]*)? add|yum install -y|g' -i /tmp/docker-run |
||||
sed -E 's/-dev/-devel/g' -i /tmp/docker-run |
||||
. /tmp/docker-run |
||||
# --- |
||||
go install -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 |
@ -1,7 +0,0 @@
|
||||
#!/bin/bash |
||||
|
||||
set -e -x |
||||
|
||||
yum install -y git expect yum-utils rpm-build rpm-sign python-deltarpm epel-release |
||||
yum install -y python2-pip |
||||
pip install git+git://github.com/Voronenko/rpm-s3.git@5695c6ad9a08548141d3713328e1bd3f533d137e |
@ -1,23 +0,0 @@
|
||||
#!/bin/bash |
||||
set -ve |
||||
|
||||
download_go |
||||
# --- |
||||
cat <<EOF >/etc/profile.d/build.sh |
||||
export SELINUX=true |
||||
# export STATIC_BUILD=true |
||||
EOF |
||||
. /etc/profile.d/build.sh |
||||
# --- |
||||
zypper -q install -y \ |
||||
git \ |
||||
libseccomp-devel \ |
||||
libselinux-devel \ |
||||
zstd \ |
||||
|
||||
# --- |
||||
sed -E 's|apk( -U)?( --no-cache)?( --repository [^ ]*)? add .*||g' -i /tmp/docker-run |
||||
. /tmp/docker-run |
||||
# --- |
||||
go install -u github.com/go-delve/delve/cmd/dlv |
||||
# --- |
@ -1,40 +0,0 @@
|
||||
#!/bin/bash |
||||
set -ve |
||||
|
||||
download_go |
||||
# --- |
||||
cat <<EOF >/etc/profile.d/build.sh |
||||
export SELINUX=true |
||||
# export STATIC_BUILD=true |
||||
EOF |
||||
. /etc/profile.d/build.sh |
||||
# --- |
||||
apt-get update |
||||
apt-get install -y \ |
||||
build-essential \ |
||||
ca-certificates \ |
||||
curl \ |
||||
docker.io \ |
||||
gcc \ |
||||
git \ |
||||
jq \ |
||||
libffi-dev \ |
||||
libseccomp-dev \ |
||||
libsqlite3-dev \ |
||||
libselinux1-dev \ |
||||
libuv1-dev \ |
||||
make \ |
||||
npm \ |
||||
pkg-config \ |
||||
python3 \ |
||||
squashfs-tools \ |
||||
tar \ |
||||
wget \ |
||||
vim \ |
||||
zip \ |
||||
zlib1g-dev \ |
||||
zstd |
||||
|
||||
# --- |
||||
go install -u github.com/go-delve/delve/cmd/dlv |
||||
# --- |
@ -1,102 +0,0 @@
|
||||
#!/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}'!" |
Loading…
Reference in new issue