Vagrant Docker Swarm 集群一键启动
版本: Vagrant 2.2.6
ip | node |
---|---|
172.28.128.11 | master |
172.28.128.12 | worker1 |
172.28.128.13 | worker2 |
Vagrantfile内容
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
(11..13).each do |i|
config.vm.define "node-#{i}" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "node#{i}"
node.vm.network "private_network", ip: "172.28.128.#{i}"
node.vm.provider "virtualbox" do |v|
v.gui = false
v.name = "centos-#{i}"
v.cpus = "2"
v.memory = "4096"
end
node.vm.provision "shell", args: ["172.28.128.#{i}","172.28.128.11"], inline: <<-SHELL
sudo -i
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd
sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/g' /etc/ssh/ssh_config
systemctl restart ssh
echo "123456" | passwd root --stdin > /dev/null 2>&1
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone
yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools sshpass
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io
systemctl start docker && sudo systemctl enable docker
if [ $1 == $2 ] ; then
echo "master"
docker swarm init --advertise-addr=$1
else
echo "worker"
token=`sshpass -p 123456 ssh root@$2 "docker swarm join-token -q worker"`
docker swarm join --token $token $2:2377
fi
SHELL
end
end
end
然后执行
vagrant up