2017-09-28 1 views
0

Vagrantのマルチマシン機能はかなり涼しいようですが、私を悩ますこと(またはすぐには分かりません)は、「親」Vagrantfileと「親」Vagrantファイルの間で設定オプションを共有する良い方法ではないようです。子供たち "ヴァガントファイル。親と子の間で設定オプションを効果的かつ保守的に共有する方法はありますか?例はこれをより明確にするかもしれない。別のVagrantファイル内からVagrantfile設定を読み込むことはできますか?

API、Web、Workerの3つのアプリケーション/サービスで構成されるプラットフォームがあるとしましょう。

はのは、以下のディレクトリ構造を推定してみましょう:

/some_platform 
    /api 
    # app code... 
    Vagrantfile 
    /web 
    # app code... 
    Vagrantfile 
    /worker 
    # app code... 
    Vagrantfile 
    Vagrantfile 

さんは次のように/some_platform/api/Vagrantfileに見えるとしましょう:

Vagrant.configure("2") do |config| 
    config.vm.box = "debian/jessie64" 
end 

はおそらく、ウェブや労働者Vagrantfilesは似ています。

よう

は今、これらのVMを調整し、/some_platform/Vagrantfile私はベイグラントに依存している複数のマシンの驚異を使用してになります。私はこの例は不自然であると認識

Vagrant.configure("2") do |config| 
    config.vm.define "web" do |api| 
    api.vm.box = "debian/jessie64" 
    end 

    config.vm.define "web" do |web| 
    web.vm.box = "debian/jessie64" 
    end 

    config.vm.define "web" do |worker| 
    worker.vm.box = "debian/jessie64" 
    end 
end 

、それはあなたがより多く得れば方法を確認するのは簡単ですより複雑な設定宣言では、その設定を2つの場所で重複させるのは面倒で危険です。

"なぜ、それぞれのプロジェクトに独自のバグログファイルがあるのですか?そうすることで、アプリケーションを実行するサーバーのセットアップ方法を真実の単一の情報源とすることができます。私はあなたが使うことができる(そして私はそれらを使用する)プロビジョナーがあることを認識していますが、それ以外のいくつかのことを宣言しなければならず、DRYを維持して、マシン、または私は単一のアプリケーションで作業し、VM /サーバーの設定を変更することができます。

私が本当に好きなのは、他のバグランファイルを「親」ファイルにマージする方法です。

これは可能ですか?それとも、私は試してみるのが夢中ですか?どのようにこれを達成するための巧妙なアイデアですか?私はいくつかのyamlファイルとPOROを使ってこの問題をスケッチしていましたが、ハックのどれも非常に満足できるものではありません。

答えて

0

あなたは(おそらくよりますが、2は私の心に来るものを)見ることができる2つのことHow to template Vagrantfile using Ruby?

  1. 外観はそのあなたが別のファイルの内容を読むことができる方法の例、Vagrantfileだけであるがありますあなたがルビーのすべての力を使うことができるようにルビースクリプト。

  2. 浮浪者はロードの概念を持っており、マージ、あなたはいつでもあなたは放浪のコマンドを実行して何かをやってみたかった場合、あなたは~/.vagrant.d/フォルダの下にVagrantfileを作成することができ、それは常に

を実行しますので、from docを参照してください

1つの欠点(または少なくとも注意を払うように):Vagrantfileは(....アップ、ステータス、停止)を放浪コマンドが実行される(たび)に評価されRubyスクリプトです

関連する問題