0

現在のシナリオでは、app1 と app2 の 2 つのマシンを作成する Vagrantfile があります。次に、多数のモジュール (すべてのアプリケーション コンポーネント) をインストールするパペット プロビジョニングをセットアップします。私たちのアプリケーションが動作する方法では、プロビジョニングが発生する前に両方のマシンが稼働している必要があります。

現在の構成の動作を見ると、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プラグインでチェックおよびテストしましたが、各インスタンスコマンドの後にトリガーも実行されるため、機能しません)

できることの 1 つは、別のマシンでプロビジョニングを実行する 3 台目のマシンを追加することです。そのため、3 台目のマシンでのみプロビジョニングを実行し、スクリプトは実際には 2 台のマシンに接続してインストール手順を実行することになります。3 番目のマシンが必要ない場合は、2 番目のマシンですべてのプロビジョニングを行い、1 番目のマシンの場合は 1 番目のマシンに接続して puppet コマンドを実行します。

于 2016-09-19T07:55:58.053 に答える