Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add multiple network interfaces #106

Merged
merged 5 commits into from
Jul 16, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
189 changes: 108 additions & 81 deletions developers/Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,97 +2,124 @@
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
unless Vagrant.has_plugin?("vagrant-scp")
raise 'Plugin vagrant-reload is not installed!'
end
config.vm.box = "ubuntu/xenial64"
config.vm.hostname = 'vortex-dev'
config.vm.define vm_name = 'vortex'

development_env = ENV.fetch('DEVELOPMENT_ENV', true)

$vortex_env = <<SHELL
set -e -x -u
echo "=== Install Vortex Server Environment ==="
sudo mkdir -p "/etc/systemd/system/docker.service.d/"
sudo cp "/tmp/override.conf" "/etc/systemd/system/docker.service.d/override.conf"
sudo apt-get update
sudo apt-get install -y git build-essential openvswitch-switch nfs-common ntp

# Install Docker
# kubernetes official max validated version: 17.03.2~ce-0~ubuntu-xenial
export DOCKER_VERSION="17.06.2~ce-0~ubuntu"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce=${DOCKER_VERSION}
# Manage Docker as a non-root user
sudo usermod -aG docker $USER

# Install Kubernetes
export KUBE_VERSION="1.11.0"
export NET_IF_NAME="enp0s8"
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee --append /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl kubelet=${KUBE_VERSION}-00 kubeadm=${KUBE_VERSION}-00

# Disable swap
sudo swapoff -a && sudo sysctl -w vm.swappiness=0
sudo sed '/swap.img/d' -i /etc/fstab

sudo kubeadm init --kubernetes-version v${KUBE_VERSION} --apiserver-advertise-address=172.17.8.100 --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# Should give flannel the real network interface name
wget --quiet https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml -O /tmp/kube-flannel.yml
sed -i -- 's/"--kube-subnet-mgr"/"--kube-subnet-mgr", "--iface='"$NET_IF_NAME"'"/g' /tmp/kube-flannel.yml
kubectl apply -f /tmp/kube-flannel.yml

kubectl taint nodes --all node-role.kubernetes.io/master-

# clone the project
git clone https://github.com/linkernetworks/vortex.git
SHELL

# Install development toolkit
$vortex_dev_toolkits = <<SHELL
set -e -x -u
echo "=== Install Development Toolkit ==="
sudo apt-get install -y vim cmake tcpdump unzip tig
# Install Golang
wget --quiet https://storage.googleapis.com/golang/go1.10.2.linux-amd64.tar.gz
sudo tar -zxf go1.10.2.linux-amd64.tar.gz -C /usr/local/
echo 'export GOROOT=/usr/local/go' >> /home/$USER/.bashrc
echo 'export GOPATH=$HOME/go' >> /home/$USER/.bashrc
echo 'export PATH=/home/$USER/protoc/bin:$PATH:$GOROOT/bin:$GOPATH/bin' >> /home/$USER/.bashrc
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=/home/$USER/protoc/bin:$PATH:$GOROOT/bin:$GOPATH/bin
# setup golang dir
mkdir -p /home/$USER/go/src
rm -rf /home/$USER/go1.10.2.linux-amd64.tar.gz

# Install protoc
# Env for proto
PROTOC_RELEASE="https://github.com/google/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-x86_64.zip"
PROTOC_TARGET="${HOME}/protoc"
if [ ! -d "${PROTOC_TARGET}" ]; then curl -fsSL "$PROTOC_RELEASE" > "${PROTOC_TARGET}.zip"; fi
if [ -f "${PROTOC_TARGET}.zip" ]; then unzip "${PROTOC_TARGET}.zip" -d "${PROTOC_TARGET}"; fi
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

# Install vim environment
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim +PluginInstall +qall

# init YouCompleteMe vim plugin
sudo apt-get install -y python-dev python3-dev
cd ~/.vim/bundle/YouCompleteMe
./install.py --go-completer

# Install govendor package manager
go get -u github.com/kardianos/govendor
SHELL

config.vm.provision "file", source: "configs/docker.conf", destination: "/tmp/override.conf"
config.vm.provision "file", source: "configs/.vimrc", destination: "$HOME/.vimrc"
config.vm.provision "shell", privileged: false, inline: <<-SHELL
set -e -x -u
sudo mkdir -p "/etc/systemd/system/docker.service.d/"
sudo cp "/tmp/override.conf" "/etc/systemd/system/docker.service.d/override.conf"
sudo apt-get update
sudo apt-get install -y vim git cmake build-essential openvswitch-switch tcpdump unzip tig nfs-common
# Env for proto
PROTOC_RELEASE="https://github.com/google/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-x86_64.zip"
PROTOC_TARGET="${HOME}/protoc"

# Install ntp
sudo apt-get install -y ntp

# Install Docker
# kubernetes official max validated version: 17.03.2~ce-0~ubuntu-xenial
export DOCKER_VERSION="17.06.2~ce-0~ubuntu"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce=${DOCKER_VERSION}
# Manage Docker as a non-root user
sudo groupadd docker
sudo usermod -aG docker $USER

# Install Kubernetes
export KUBE_VERSION="1.11.0"
export NET_IF_NAME="enp0s8"
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee --append /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl kubelet=${KUBE_VERSION}-00 kubeadm=${KUBE_VERSION}-00

# Disable swap
sudo swapoff -a && sudo sysctl -w vm.swappiness=0
sudo sed '/swap.img/d' -i /etc/fstab

sudo kubeadm init --kubernetes-version v${KUBE_VERSION} --apiserver-advertise-address=172.17.8.100 --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# Should give flannel the real network interface name
wget --quiet https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml -O /tmp/kube-flannel.yml
sed -i -- 's/"--kube-subnet-mgr"/"--kube-subnet-mgr", "--iface='"$NET_IF_NAME"'"/g' /tmp/kube-flannel.yml
kubectl apply -f /tmp/kube-flannel.yml

kubectl taint nodes --all node-role.kubernetes.io/master-

# Install Golang
wget --quiet https://storage.googleapis.com/golang/go1.10.2.linux-amd64.tar.gz
sudo tar -zxf go1.10.2.linux-amd64.tar.gz -C /usr/local/
echo 'export GOROOT=/usr/local/go' >> /home/$USER/.bashrc
echo 'export GOPATH=$HOME/go' >> /home/$USER/.bashrc
echo 'export PATH=/home/$USER/protoc/bin:$PATH:$GOROOT/bin:$GOPATH/bin' >> /home/$USER/.bashrc
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=/home/$USER/protoc/bin:$PATH:$GOROOT/bin:$GOPATH/bin
# setup golang dir
mkdir -p /home/$USER/go/src
rm -rf /home/$USER/go1.10.2.linux-amd64.tar.gz

# install protoc
if [ ! -d "${PROTOC_TARGET}" ]; then curl -fsSL "$PROTOC_RELEASE" > "${PROTOC_TARGET}.zip"; fi
if [ -f "${PROTOC_TARGET}.zip" ]; then unzip "${PROTOC_TARGET}.zip" -d "${PROTOC_TARGET}"; fi
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

# install vim environment
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim +PluginInstall +qall

# init YouCompleteMe vim plugin
sudo apt-get install -y python-dev python3-dev
cd ~/.vim/bundle/YouCompleteMe
./install.py --go-completer

# install govendor package manager
go get -u github.com/kardianos/govendor
SHELL

if development_env == true
puts "Install Vortex Server with Development Toolkits"
config.vm.provision "file", source: "configs/.vimrc", destination: "$HOME/.vimrc"
config.vm.provision "shell", privileged: false, inline: $vortex_env
config.vm.provision "shell", privileged: false, inline: $vortex_dev_toolkits
else
puts "Install Vortex Server"
config.vm.provision "shell", privileged: false, inline: $vortex_env
end

config.vm.network :private_network, ip: "172.17.8.100"
# to simulate multiple interfaces
config.vm.network :private_network, ip: "172.17.8.50"
config.vm.network :private_network, ip: "172.17.8.60"
config.vm.network :private_network, ip: "172.17.8.70"
config.vm.network :private_network, ip: "172.17.8.80"
config.vm.network :private_network, ip: "172.17.8.90"

config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--cpus", 2]
v.customize ["modifyvm", :id, "--memory", 4096]
v.customize ['modifyvm', :id, '--nicpromisc1', 'allow-all']
end
end