Created
April 12, 2022 13:51
-
-
Save fristonio/64608c1b70487881067fe10ee9c53498 to your computer and use it in GitHub Desktop.
Bash script for Vagrant dev environment setup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# User - vagrant | |
# The script must be run as root | |
set -euxo pipefail | |
ORIGINAL_DIR=${PWD} | |
VAGRANT_HOME="/home/vagrant" | |
GOLANG_DOWNLOAD_URL="https://go.dev/dl/go1.18.linux-amd64.tar.gz" | |
KIND_DOWNLOAD_URL="https://kind.sigs.k8s.io/dl/v0.12.0/kind-linux-amd64" | |
BUILDX_DOWNLOAD_URL="https://github.com/docker/buildx/releases/download/v0.8.2/buildx-v0.8.2.linux-amd64" | |
rm -rf /tmp/dev-setup || true | |
mkdir -p /tmp/dev-setup | |
cd /tmp/dev-setup | |
apt -y update | |
apt -y upgrade | |
apt -y install make docker.io | |
usermod -aG docker vagrant | |
curl -L ${BUILDX_DOWNLOAD_URL} -o docker-buildx | |
chmod +x docker-buildx | |
mkdir -p ${VAGRANT_HOME}/.docker/cli-plugins | |
mv docker-buildx ${VAGRANT_HOME}/.docker/cli-plugins/ | |
# Run a local docker registry, in most cases we need to work with a local registry | |
docker run -d -p 5000:5000 --restart=always --name registry registry:2 | |
curl -L ${GOLANG_DOWNLOAD_URL} -o go.tar.xz | |
mkdir -p ${VAGRANT_HOME}/goroot | |
tar -xf go.tar.xz -C ${VAGRANT_HOME}/goroot/ | |
curl -Lo ./kind ${KIND_DOWNLOAD_URL} | |
chmod +x ./kind | |
mv ./kind /usr/local/bin/kind | |
rm /etc/profile.d/env.sh || true | |
echo "export CTR_REGISTRY=localhost:5000 && export GOROOT=\$HOME/goroot/go && export GOPATH=\$HOME/go && export PATH=\$PATH:\$GOROOT/bin" > /etc/profile.d/env.sh | |
chmod +x /etc/profile.d/env.sh | |
rm -rf /tmp/dev-setup | |
cd ${ORIGINAL_DIR} | |
exit 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
Vagrant.require_version ">=2.0.0" | |
Vagrant.configure("2") do |config| | |
config.vm.box = "ubuntu/focal64" | |
config.vm.provision "shell", path: "dev-setup.sh" | |
# Example of a forwarded port | |
# config.vm.network "forwarded_port", guest: 8515, host: 8515, host_ip: "127.0.0.1" | |
N = 1 | |
(1..N).each do |machine_id| | |
config.vm.define "dev#{machine_id}" do |machine| | |
machine.vm.hostname = "dev#{machine_id}" | |
# Network range - 192.168.56.0/21 | |
machine.vm.network "private_network", ip: "192.168.56.#{10+machine_id}" | |
machine.vm.network "private_network", ip: "2001::#{10+machine_id}" | |
# Don't forget to enable this ports on your host before starting the VM | |
# in order to have nfs working" | |
# iptables -I INPUT -p tcp -s 192.168.56.0/21 --dport 111 -j ACCEPT | |
# iptables -I INPUT -p tcp -s 192.168.56.0/21 --dport 2049 -j ACCEPT | |
# iptables -I INPUT -p tcp -s 192.168.56.0/21 --dport 20048 -j ACCEPT | |
end | |
end | |
project_dir = '.' | |
project_path = '/home/vagrant/dev' | |
config.vm.synced_folder project_dir, project_path, owner: "vagrant" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment