在我们当前的场景中,我们有一个Vagrantfile,可以创建两台机器 - app1和app2。然后我有一个木偶配置设置,安装了许多模块(我们所有的应用程序组件)。我们的应用程序的工作方式要求两台计算机在任何配置发生之前都已启动。
我们现在看到我们的配置行为的方式是启动然后配置app1,然后启动app2然后进行配置。这导致我们的应用程序无法连接,因为它无法与尚未启动的其他服务器上的相应服务建立连接。
有没有得到我们想要的配置,其中app1和app2被启动然后配置?以下是我们当前的Vagrant文件供参考
# -*- 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
答案 0 :(得分:0)
我不认为你可以直接从vagrant这样做(我检查并使用vagrant插件测试,但偶数触发器在每个实例命令之后执行,因此它不适合你)
您可以做的一件事是添加第三台将在另一台机器上运行配置的机器。所以你只在第三台机器上运行配置,脚本实际上是连接并执行两台机器上的安装步骤。如果您不想要第3台机器,您可以在第2台机器上进行所有配置,对于第1台机器,它将连接到第1台机器并运行木偶命令。