如何在多机环境中循环流浪汉配置以在机器之间来回切换?

phi*_*ert 6 scope provisioning vagrant

我有一台多机Vagrantfile设置5节点环境.

我一直在四处寻找你对配置顺序的控制程度,但它非常有限:

https://docs.vagrantup.com/v2/multi-machine/

我想配置5个节点,然后返回第一个节点,并在那里运行其他配置步骤.

我的意思是你有一个像这样的Vagrantfile:

Vagrant.configure('2') do |config|
   config.vm.provision some stuff

   config.vm.define 'node1' do |node1|
      node1.vm.provision some more stuff
   end

   config.vm.define 'node2' do |node2|
      node2.vm.provision some other stuff
   end

   ... node3 node4 node 5 ...
end
Run Code Online (Sandbox Code Playgroud)

但是在vagrant完成启动并将所有机器配置到node5之后,我想在node1上运行另一个配置器.有谁知道如何做到这一点?也许一些红宝石的hackery?

phi*_*ert 2

一种可能的方法是通过 ssh 在计算机之间执行命令。您需要做的唯一额外的事情是将流浪者不安全的私钥复制给每个客人。

然后,您可以在集群中的计算机之间进行 ssh(总是很方便),并且还可以执行以下操作:

Vagrant.configure('2') do |config|
config.vm.provision some stuff

config.vm.define 'node1' do |node1|
  node1.vm.provision some more stuff
end

config.vm.define 'node2' do |node2|
  node2.vm.provision "shell", inline: "/vagrant/bootstrap-webserver.sh"
  node2.vm.provision "shell", inline: "ssh vagrant@node1 sh /vagrant/trigger-build.sh"
end

config.vm.define 'node3' do |node3|
  node3.vm.provision "shell", inline: "/vagrant/create-database.sh"
  node3.vm.provision "shell", inline: "ssh vagrant@node1 sh /vagrant/initialise-database.sh"
end

... node4 node 5 ...
end
Run Code Online (Sandbox Code Playgroud)

您可能还想在来宾上的 sshd_config 中设置“PasswordAuthentication no”,并将“-o StrictHostKeyChecking=no”添加到上面的 ssh 命令中以使其正常工作。