You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.6 KiB
Ruby

K3S_SERVER_COUNT = 3
K3S_AGENT_COUNT = 0
K3S_VERSION = "v1.21.1+k3s1"
K3S_TOKEN = "VeryCrypticToken"
Vagrant.configure("2") do |config|
# libvirt
config.vm.provider "libvirt" do |lv|
lv.cpus = 2
lv.memory = 2048
# libvirt.qemu_use_session = false
end
# virtualbox
config.vm.provider "virtualbox" do |vb|
vb.cpus = 2
vb.memory = 2048
vb.linked_clone = true
end
# hyper-v
config.vm.provider "hyperv" do |hv|
hv.cpus = 2
hv.memory = "1024"
hv.maxmemory = "2048"
hv.linked_clone = true
end
config.vm.box = "fedora/34-cloud-base"
# k3s server machines
(1..K3S_SERVER_COUNT).each do |i|
config.vm.define "k3s_server#{i}" do |server|
server.vm.hostname = "k3s-server#{i}"
end
end
# k3s agent machines
(1..K3S_AGENT_COUNT).each do |i|
config.vm.define "k3s_agent#{i}" do |agent|
agent.vm.hostname = "k3s-agent#{i}"
end
end
# provision
config.vm.provision "ansible" do |cluster|
cluster.playbook = "k3s_cluster.yml"
cluster.compatibility_mode = "2.0"
cluster.groups = {
"k3s_cluster:children" => ["k3s_servers", "k3s_agents"],
"k3s_cluster:vars" => {"k3s_token" => K3S_TOKEN,
"k3s_version" => K3S_VERSION },
"k3s_servers" => ["k3s_server[1:#{K3S_SERVER_COUNT}]"],
"k3s_servers:vars" => {"k3s_role" => "server"},
"k3s_agents" => ["k3s_agent1", "k3s_agent2", "k3s_agent3"],
"k3s_agents:vars" => {"k3s_role" => "agent"}
}
cluster.host_vars = {
"k3s_server1" => {"first_node" => true}
}
end
end