在我们当前的场景中,我们有一个Vagrantfile,它创建了两台机器- app1和app2。然后,我设置了一个木偶配置,它安装了许多模块(我们所有的应用程序组件)。我们的应用程序的工作方式要求在进行任何配置之前,两台机器都处于启动状态。
我们现在看到的配置行为是,启动app1,然后调配,然后启动app2,然后调配。这会导致我们的应用程序无法连接,因为它无法与另一台服务器上尚未启动的相应服务建立连接。
有没有办法获得我们想要的配置,即启动app1和app2,然后进行配置?下面是我们当前的Vagrantfile以供参考
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.define "app1" do |app1|
app1.vm.box = "centos_base"
app1.vm.hostname = "app1.vagrant.test"
app1.vm.network "private_network", ip: "192.168.10.10"
app1.vm.network "forwarded_port", guest: 8080, host: 8000
end
config.vm.define "app2" do |app2|
app2.vm.box = "centos_base"
app2.vm.hostname = "app2.vagrant.test"
app2.vm.network "private_network", ip: "192.168.10.11"
app2.vm.network "forwarded_port", guest:8080, host: 8001
end
config.vm.provision "puppet" do |puppet|
puppet.module_path = "modules"
puppet.manifests_path = "manifests"
puppet.manifest_file = "default.pp"
end
end发布于 2016-09-19 15:55:58
我认为你不能直接从vagrant中做到这一点(我用vagrant插件检查和测试过了,但甚至触发器都是在每个实例命令之后执行的,所以它不能为你工作)
您可以做的一件事是添加第三台计算机,该计算机将在另一台计算机上运行配置。因此,您将只在第三台计算机上运行配置,脚本实际上将连接并在两台计算机上执行安装步骤。如果你不想要第三台机器,你可以在第二台机器上进行所有的配置,对于第一台机器,它连接到第一台机器并运行puppet命令。
https://stackoverflow.com/questions/39565004
复制相似问题