Skip to content

Instantly share code, notes, and snippets.

@KarthickSudhakar
Created April 27, 2023 10:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KarthickSudhakar/6db7224cece15964a4f061d8f38c4b4d to your computer and use it in GitHub Desktop.
Save KarthickSudhakar/6db7224cece15964a4f061d8f38c4b4d to your computer and use it in GitHub Desktop.
KIND - k8s cluster with vagrant and virtualbox as provider
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Inline variables
$UBUNTU = <<-'UB1'
sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd
sudo apt update && sudo apt -y install curl wget net-tools iputils-ping python3-pip neovim
touch /home/vagrant/.hushlogin
UB1
$DOCKER = <<-'UB2'
sudo apt-get install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && sudo usermod -aG docker vagrant
UB2
$KIND = <<-'UB3'
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
UB3
$KUBECTL= <<-'UB4'
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client --output=yaml
source /usr/share/bash-completion/bash_completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
source ~/.bashrc
UB4
# Resource declaration
config.vm.provider "virtualbox" do |rs|
rs.memory = 4048
rs.cpus = 2
end
# Will not check for box updates during every startup.
config.vm.box_check_update = false
# Will not update the guest additions.
# config.vbguest.auto_update = false
# Disable default share
config.vm.synced_folder ".", "/vagrant", disabled: true
# Define multiple disks
#config.vm.disk :disk, size: "5GB", name: "storage1"
#config.vm.disk :disk, size: "10GB", name: "storage2"
# ubuntu node where ansible will be installed
config.vm.define "k8s" do |k8s|
k8s.vm.box = "ubuntu/focal64"
k8s.vm.hostname = "k8s.homelab.com"
k8s.vm.network "private_network", ip: "192.168.56.20"
k8s.vm.provision "shell", inline: $UBUNTU
k8s.vm.provision "shell", inline: $DOCKER
k8s.vm.provision "shell", inline: $KIND
k8s.vm.provision "shell", inline: $KUBECTL
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment