Created
April 27, 2023 10:38
-
-
Save KarthickSudhakar/6db7224cece15964a4f061d8f38c4b4d to your computer and use it in GitHub Desktop.
KIND - k8s cluster with vagrant and virtualbox as provider
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.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