Skip to content

Instantly share code, notes, and snippets.

@smijar
Last active March 29, 2022 16:57
Show Gist options
  • Save smijar/9d54499dc9b7b4f9a4944df10546ded1 to your computer and use it in GitHub Desktop.
Save smijar/9d54499dc9b7b4f9a4944df10546ded1 to your computer and use it in GitHub Desktop.
# made it performant on OS X based on this article:
# https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck
# nfs on mac: https://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Enabling-network-NFS-shares-in-Mac-OS-X.html
#
# on Mac OS X:
# NOTE: if access denied error
# might have to restart nfsd
# $ sudo nfsd restart or use before vagrant up: $ sudo mount -o vers=3,udp 192.168.56.1:/Users/me/path/to/code /vagrant
# also $ showmount -e
vm_script = <<-SCRIPT
#!/bin/bash
set -euxo pipefail
echo hello, world!
sudo chmod +x /dev/kvm
sudo lscpu | grep Virtualization
cd /tmp
# needed for spring boot docker to start up and find the hostname
# echo "127.0.0.1 fedora" >> /etc/hosts
sudo dnf update -y
# install docker
echo "installing Docker CE"
sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine -y
sudo dnf install dnf-plugins-core -y
sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io -y
# install docker-compose
# ref: https://computingforgeeks.com/install-and-use-docker-compose-on-fedora/
curl -s https://api.github.com/repos/docker/compose/releases/latest \
| grep browser_download_url \
| grep docker-compose-linux-x86_64 \
| cut -d '"' -f 4 \
| wget -qi -
chmod +x docker-compose-linux-x86_64
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# enable and start docker daemon
echo "service enable and start docker"
sudo systemctl enable docker
if [ groupadd docker ]; then echo "group added"; fi
sudo usermod -aG docker vagrant
# apply changes without logging out
# sudo newgrp docker
# install git
sudo dnf install git netcat wget jq -y
# install node
sudo dnf install nodejs -y
# install golang
sudo dnf -y install go
# install retype
sudo npm install retypeapp --global
# install kubectl
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubectl
# install sdkman and java and maven
echo "installing sdkman and java"
curl -s "https://get.sdkman.io" | bash
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' | tee -a $HOME/.bash_profile
# install java and maven
# have to do this as the sdkman script has unbounded variable or something
set +u
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 11.0.11.hs-adpt
sdk install maven
# install
# git clone https://github.com/pyenv/pyenv.git /vagrant/.pyenv
# # for Bash
# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> /vagrant/.bash_profile
# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> /vagrant/.bash_profile
# echo 'eval "$(pyenv init -)"' >> /vagrant/.bash_profile
# minikube
# https://minikube.sigs.k8s.io/docs/start/
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
sudo rpm -ivh minikube-latest.x86_64.rpm
# minikube dashboard to launch the dashboard
# kind
# https://kind.sigs.k8s.io/docs/user/quick-start/#installing-with-a-package-manager
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/
# Install AWS CLI
# https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
echo "installing AWS CLI"
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# install azure-cli
# https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=dnf
echo "installing Azure CLI"
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
sudo dnf install azure-cli -y
# recording
sudo dnf install asciinema -y
# clone source needed
# install kontain
sudo mkdir -p /opt/kontain ; sudo chown root /opt/kontain
curl -s https://raw.githubusercontent.com/kontainapp/km/current/km-releases/kontain-install.sh | sudo bash
SCRIPT
# https://www.vagrantup.com/docs/disks/usage
Vagrant.configure("2") do |config|
config.vm.define "fedora34" do |h|
#h.vm.box = "hashicorp/bionic64"
h.vm.box = "fedora/34-cloud-base"
h.vm.provider :virtualbox
h.vm.network :private_network, ip: '192.168.56.10'
config.vm.synced_folder './shared', '/vagrant', nfs: true
host = RbConfig::CONFIG['host_os']
# Give VM 1/4 system memory
if host =~ /darwin/
# sysctl returns Bytes and we need to convert to MB
mem = `sysctl -n hw.memsize`.to_i / 1024
elsif host =~ /linux/
# meminfo shows KB and we need to convert to MB
mem = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i
elsif host =~ /mswin|mingw|cygwin/
# Windows code via https://github.com/rdsubhas/vagrant-faster
mem = `wmic computersystem Get TotalPhysicalMemory`.split[1].to_i / 1024
end
mem = mem / 1024 / 4
h.vm.disk :disk, size: "10GB", primary: true
h.vm.provider "virtualbox" do |vb|
vb.customize ['modifyvm', :id, '--nested-hw-virt', 'on']
vb.memory = mem
vb.cpus = "4"
# vb.inputs = []
end
h.vm.synced_folder "~/dev/kontain", "/vagrant/dev/kontain"
h.vm.provision "shell", inline: vm_script, privileged: false
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment