Last active
March 29, 2022 18:07
-
-
Save smijar/3c5b1ef8a892b2a2c35b2ea4339a15d7 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| # 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 | |
| # | |
| # USED sshfs - $ vagrant plugin install vagrant-sshfs - works on all platforms, bit slower tho | |
| 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 - | |
| # 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 | |
| # 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' | |
| # h.vm.synced_folder './shared', '/vagrant', nfs: true | |
| # sshfs - $ vagrant plugin install vagrant-sshfs - works on all platforms, bit slower tho | |
| config.vm.synced_folder "~/dev/kontain", "/home/vagrant/dev/kontain", type: "sshfs" | |
| 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.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