0

在我们当前的场景中,我们有一个 Vagrantfile,它创建了两台机器——app1 和 app2。然后我设置了一个 puppet 配置,它安装了许多模块(我们所有的应用程序组件)。我们的应用程序的工作方式要求两台机器在任何配置发生之前都已启动。

我们现在看到我们的配置行为的方式是 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
4

1 回答 1

0

我认为您不能直接从 vagrant 执行此操作(我使用 vagrant 插件进行了检查和测试,但甚至在每个实例命令之后都会执行触发器,因此它无法为您工作)

您可以做的一件事是添加第三台机器,该机器将在另一台机器上运行配置。所以你将只在第三台机器上运行配置,脚本实际上是连接并在两台机器上执行安装步骤。如果您不想要第三台机器,您可以在第二台机器上进行所有配置,对于第一台机器,它连接到第一台机器并运行 puppet 命令。

于 2016-09-19T07:55:58.053 回答