Files
vagrant-docker-swarm/vagrant/Vagrantfile
2025-10-17 15:14:44 +01:00

73 lines
1.7 KiB
Ruby

num_workers = 1
nodes = [
{
hostname: 'swarm-master',
ip: '192.168.56.10',
ram: 1024,
cpus: 1,
groups: ['swarm_master']
},
{
hostname: 'swarm-worker-storage',
ip: '192.168.56.11',
ram: 512,
cpus: 1,
# groups: ['swarm_workers','storage']
groups: %w[swarm_workers storage]
}
]
(1..num_workers).each do |i|
nodes << {
hostname: "swarm-worker-#{i}",
ip: "192.168.56.#{11 + i}",
ram: 256,
cpus: 1,
groups: ['swarm_workers']
}
end
Vagrant.configure('2') do |config|
# config.vbguest.auto_update = true
groups = {}
nodes.each do |node|
node[:groups].each do |group|
groups[group] ||= []
groups[group] << node[:hostname]
end
end
config.vm.provision 'ansible' do |ansible|
ansible.playbook = 'setup.yml'
ansible.config_file = 'ansible.cfg'
ansible.groups = groups
# ansible.verbose = true
# ansible.limit = "all"
# ansible.raw_arguments = ["--timeout=60"]
end
nodes.each do |node|
puts "Provisioning node: #{node[:hostname]}"
config.vm.define node[:hostname] do |node_config|
node_config.vm.hostname = node[:hostname]
node_config.vm.box = 'debian/bullseye64'
# node_config.vm.disk :disk, size: '32GB', primary: true
node_config.disksize.size = "50GB"
# node_config.vm.synced_folder "./data", "/vagrant_data"
# node_config.vm.box_version = "20250415.336224"
# node_config.vm.box = 'generic/archlinux64'
node_config.vm.network 'private_network', ip: node[:ip]
node_config.vm.provider 'virtualbox' do |vb|
vb.name = node[:hostname]
vb.memory = node[:ram]
vb.cpus = node[:cpus]
end
end
end
end