Aquí no teniu: # -*- mode: ruby -*- # vi: set ft=ruby : # === Configuració Global === server_ip = "192.168.33.10" IP_NW = "192.168.33." K3S_TOKEN = "K10234567890abcdef:education-cluster-token" # Token fix per a pràctiques agents = { "agent1" => "192.168.33.11", "agent2" => "192.168.33.12", "agent3" => "192.168.33.13" } # === Script per al SERVER (k3s master) === server_script = <<-SHELL apk add --no-cache curl sudo nano # Detectar interfície de xarxa PRIVATE_IFACE=$(ip -o addr show | grep "#{server_ip}" | awk '{print $2}') if [ -z "$PRIVATE_IFACE" ]; then echo "ERROR: No s'ha trobat la interfície per a #{server_ip}" ip a exit 1 fi echo "Using network interface: $PRIVATE_IFACE" # Instal·lar k3s amb token fix export INSTALL_K3S_EXEC="--bind-address=#{server_ip} --node-external-ip=#{server_ip} --flannel-iface=$PRIVATE_IFACE" curl -sfL https://get.k3s.io | sh -s - --token "#{K3S_TOKEN}" || { echo "ERROR: k3s installation failed"; exit 1; } # Esperar que k3s estigui llest echo "Waiting for k3s to be ready..." for i in {1..30}; do if sudo k3s kubectl cluster-info &>/dev/null; then echo "k3s is ready!" break fi sleep 2 done # Configurar kubectl per a l'usuari vagrant mkdir -p $HOME/.kube sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config echo "k3s server setup complete!" SHELL # === Script per als AGENTS (k3s workers) === agent_script = <<-SHELL apk add --no-cache curl # Detectar interfície PRIVATE_IFACE=$(ip -o addr show | grep "#{IP_NW}" | awk '{print $2}') if [ -z "$PRIVATE_IFACE" ]; then echo "ERROR: No s'ha trobat la interfície de xarxa privada" ip a exit 1 fi # Esperar que el servidor estigui accessible echo "Waiting for server to be ready..." for i in {1..30}; do if curl -sk https://#{server_ip}:6443/healthz &>/dev/null; then echo "Server is ready!" break fi echo "Waiting for server... ($i/30)" sleep 2 done # Instal·lar k3s agent amb token fix export K3S_TOKEN="#{K3S_TOKEN}" export K3S_URL=https://#{server_ip}:6443 export INSTALL_K3S_EXEC="--flannel-iface=$PRIVATE_IFACE" curl -sfL https://get.k3s.io | sh - || { echo "ERROR: k3s agent installation failed"; exit 1; } echo "k3s agent setup complete!" SHELL # === Configuració de Vagrant === Vagrant.configure("2") do |config| config.vm.box = "generic/alpine318" # === SERVER === config.vm.define "server", primary: true do |server| server.vm.network "private_network", ip: server_ip server.vm.hostname = "server" server.vm.provider :libvirt do |v| v.memory = 2048 v.cpus = 2 v.graphics_type = "spice" end server.vm.provision "shell", inline: server_script end # === AGENTS === agents.each do |agent_name, agent_ip| config.vm.define agent_name do |agent| agent.vm.network "private_network", ip: agent_ip agent.vm.hostname = agent_name agent.vm.provider :libvirt do |v| v.memory = 1024 v.cpus = 1 v.graphics_type = "spice" end agent.vm.provision "shell", inline: agent_script end end end