|
| 1 | +Vagrant.configure("2") do |config| |
| 2 | + # Define master VM |
| 3 | + config.vm.define "master" do |master| |
| 4 | + master.vm.box = "bento/ubuntu-22.04" |
| 5 | + master.vm.network "private_network", ip: "192.168.63.1" |
| 6 | + master.vm.hostname = "master" |
| 7 | + master.vm.provider "virtualbox" do |v| |
| 8 | + v.name = "master" |
| 9 | + v.memory = 2048 |
| 10 | + v.cpus = 2 |
| 11 | + end |
| 12 | + master.vm.provision "shell", inline: <<-SHELL |
| 13 | + sudo echo "192.168.63.1 master\n192.168.63.2 worker" >> /etc/hosts |
| 14 | + sudo apt update |
| 15 | + sudo apt install ca-certificates curl |
| 16 | + sudo install -m 0755 -d /etc/apt/keyrings |
| 17 | + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc |
| 18 | + sudo chmod a+r /etc/apt/keyrings/docker.asc |
| 19 | +
|
| 20 | + # Add the repository to Apt sources: |
| 21 | + echo \ |
| 22 | + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ |
| 23 | + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ |
| 24 | + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
| 25 | + sudo apt update |
| 26 | + sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
| 27 | + sudo systemctl enable docker |
| 28 | + sudo ufw disable |
| 29 | + sudo swapoff -a |
| 30 | + sudo apt update && sudo apt install -y apt-transport-https |
| 31 | + curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - |
| 32 | + sudo apt update |
| 33 | + # apt-transport-https may be a dummy package; if so, you can skip that package |
| 34 | + sudo apt install -y apt-transport-https ca-certificates curl gpg |
| 35 | + curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| 36 | + echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list |
| 37 | + sudo apt update |
| 38 | + sudo apt install -y kubelet kubeadm kubectl |
| 39 | + sudo apt-mark hold kubelet kubeadm kubectl |
| 40 | + sudo systemctl enable --now kubelet |
| 41 | + sudo containerd config default | sudo tee /etc/containerd/config.toml |
| 42 | + sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml |
| 43 | + sudo sed -i 's|sandbox_image = "registry.k8s.io/pause:3.8"|sandbox_image = "registry.k8s.io/pause:3.9"|g' /etc/containerd/config.toml |
| 44 | + sudo systemctl restart containerd |
| 45 | + SHELL |
| 46 | + end |
| 47 | + |
| 48 | + # Define worker VM |
| 49 | + config.vm.define "worker" do |worker| |
| 50 | + worker.vm.box = "bento/ubuntu-22.04" |
| 51 | + worker.vm.network "private_network", ip: "192.168.63.2" |
| 52 | + worker.vm.hostname = "worker" |
| 53 | + worker.vm.provider "virtualbox" do |v| |
| 54 | + v.name = "worker" |
| 55 | + v.memory = 2048 |
| 56 | + v.cpus = 2 |
| 57 | + end |
| 58 | + worker.vm.provision "shell", inline: <<-SHELL |
| 59 | + sudo echo "192.168.63.1 master\n192.168.63.2 worker" >> /etc/hosts |
| 60 | + sudo apt update |
| 61 | + sudo apt install ca-certificates curl |
| 62 | + sudo install -m 0755 -d /etc/apt/keyrings |
| 63 | + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc |
| 64 | + sudo chmod a+r /etc/apt/keyrings/docker.asc |
| 65 | +
|
| 66 | + # Add the repository to Apt sources: |
| 67 | + echo \ |
| 68 | + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ |
| 69 | + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ |
| 70 | + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
| 71 | + sudo apt update |
| 72 | + sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
| 73 | + sudo systemctl enable docker |
| 74 | + sudo ufw disable |
| 75 | + sudo swapoff -a |
| 76 | + sudo apt update && sudo apt install -y apt-transport-https |
| 77 | + curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - |
| 78 | + sudo apt update |
| 79 | + # apt-transport-https may be a dummy package; if so, you can skip that package |
| 80 | + sudo apt install -y apt-transport-https ca-certificates curl gpg |
| 81 | + curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| 82 | + echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list |
| 83 | + sudo apt update |
| 84 | + sudo apt install -y kubelet kubeadm kubectl |
| 85 | + sudo apt-mark hold kubelet kubeadm kubectl |
| 86 | + sudo systemctl enable --now kubelet |
| 87 | + sudo containerd config default | sudo tee /etc/containerd/config.toml |
| 88 | + sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml |
| 89 | + sudo sed -i 's|sandbox_image = "registry.k8s.io/pause:3.8"|sandbox_image = "registry.k8s.io/pause:3.9"|g' /etc/containerd/config.toml |
| 90 | + sudo systemctl restart containerd |
| 91 | + SHELL |
| 92 | + end |
| 93 | +end |
0 commit comments