Added libvirt alpine

This commit is contained in:
2026-03-03 10:14:19 +01:00
parent a9327119b8
commit d8780cbe2b
5 changed files with 124 additions and 8 deletions

116
libvirtVagrantfile Normal file
View File

@@ -0,0 +1,116 @@
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