Skip to content

Instantly share code, notes, and snippets.

@smijar
Last active March 29, 2022 16:56
Show Gist options
  • Save smijar/7a4d9ec890035688473a915ec1932b1a to your computer and use it in GitHub Desktop.
Save smijar/7a4d9ec890035688473a915ec1932b1a to your computer and use it in GitHub Desktop.
# -*- mode: ruby -*-
# vi: set ft=ruby :
# sudo virsh net-list --all
# sudo virsh net-dumpxml $NETWORK_NAME
# sudo virsh list --all
# add your own ssh key to be able to checkout github submodules/private repos
vm_script = <<-SCRIPT
#!/bin/bash
set -euxo pipefail
echo hello, world!
sudo chmod +x /dev/kvm
sudo lscpu | grep Virtualization
cd /tmp
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
# 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 $USER
# apply changes without logging out
sudo newgrp docker
# 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
# install git
sudo dnf install git -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 ~/.pyenv
# for Bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.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
sudo dnf install jq -y
SCRIPT
Vagrant.configure("2") do |config|
#inline: "echo Hello, World"
config.vm.box = "fedora/34-cloud-base"
# first, $ vagrant plugin install vagrant-sshfs-works on all platforms
config.vm.synced_folder "./shared", "/vagrant", type: "sshfs"
# this option did not rsync files to host
# config.vm.synced_folder "~/dev", "/vagrant/dev", type: "rsync",
# rsync__exclude: ".git/"
# this mapped the local fs but gave permission error, go going back to rsync
# config.vm.synced_folder "./", "/vagrant", type: "9p", disabled: false, accessmode: "squash", owner: "1000"
# config.vm.synced_folder "~/dev", "/home/vagrant/dev", type: "9p", disabled: false, accessmode: "squash", owner: "1000"
config.vm.provider :libvirt do |libvirt|
# Enable KVM nested virtualization
libvirt.nested = true
#host-model is deprecated at rhel 8 use pass-through instead
libvirt.cpu_mode = "host-passthrough"
# Increase memory allocation for CRC requirements
libvirt.cpus = "4"
libvirt.memory = 10238
libvirt.machine_virtual_size = 100
end
config.vm.provision "shell" do |s|
#s.inline = "echo hello"
s.inline = vm_script
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment