├── worker.sh ├── master.sh ├── docker.sh └── Vagrantfile /worker.sh: -------------------------------------------------------------------------------- 1 | docker swarm join --token SWMTKN-1-3pj8k0i4tn77bd93a0yxhgh36hxuef5q5oyg1732rztnfy29ll-a94q0ipwgrjs4xikzyb4yb3n5 10.10.10.100:2377 2 | -------------------------------------------------------------------------------- /master.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo docker swarm init --advertise-addr=10.10.10.100 3 | sudo docker swarm join-token worker | grep docker > /vagrant/worker.sh -------------------------------------------------------------------------------- /docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | curl -fsSL https://get.docker.com | sudo bash 3 | sudo curl -fsSL "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 4 | sudo chmod +x /usr/local/bin/docker-compose 5 | sudo usermod -aG docker vagrant 6 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | machines = { 5 | "master" => {"memory" => "1024", "cpu" => "1", "ip" => "100", "image" => "bento/ubuntu-22.04"}, 6 | "node01" => {"memory" => "1024", "cpu" => "1", "ip" => "101", "image" => "bento/ubuntu-22.04"}, 7 | "node02" => {"memory" => "1024", "cpu" => "1", "ip" => "102", "image" => "bento/ubuntu-22.04"} 8 | } 9 | 10 | Vagrant.configure("2") do |config| 11 | 12 | machines.each do |name, conf| 13 | config.vm.define "#{name}" do |machine| 14 | machine.vm.box = "#{conf["image"]}" 15 | machine.vm.hostname = "#{name}" 16 | machine.vm.network "private_network", ip: "10.10.10.#{conf["ip"]}" 17 | machine.vm.provider "virtualbox" do |vb| 18 | vb.name = "#{name}" 19 | vb.memory = conf["memory"] 20 | vb.cpus = conf["cpu"] 21 | 22 | end 23 | machine.vm.provision "shell", path: "docker.sh" 24 | 25 | if "#{name}" == "master" 26 | machine.vm.provision "shell", path: "master.sh" 27 | else 28 | machine.vm.provision "shell", path: "worker.sh" 29 | end 30 | 31 | end 32 | end 33 | end 34 | --------------------------------------------------------------------------------