2016-07-15 14 views
1

VMのプロビジョニングの一環として、プロビジョニング時に構成ファイルを作成する必要があります。私のホストマシン上で、私はerbファイルに変数を渡すことができるよ:バグのプロビジョニングにおけるレンダリングerb

erb x=1 y=2 some_conf.erb 

それは、ホストマシン上のerbファイルをレンダリングして、ゲストへのパイプ結果をすることは可能ですか?

config.vm.provision "shell"erbコマンドを入力すると、ゲストマシン(Rubyを搭載していない)でコマンドが実行されます。

# this command runs on the guest 
# where as I want erb to run on the host 
config.vm.provision "shell", inline: <<-SHELL 
    erb x=1 y=2 some_conf.erb > /etc/some_conf 
SHELL 

答えて

0

迷惑メールファイルは実際にはrubyスクリプトなので、ruby erbテンプレートエンジンを使用できます。あなたは新しいクラスなどを設定したくない、あなたはruby2.2がインストールされている場合は、あなただけの直接CLIからERBを呼び出すことができます

# -*- mode: ruby -*- 
# vi: set ft=ruby : 
require 'erb' 

Vagrant.configure("2") do |config| 

    template = ERB.new File.read("template/some_conf.erb") 
    p template.result(binding) 
end 

テンプレートに必要なクラスを作成することを確認し、それが上で実行されますあなたのホストではないゲスト

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 

    exec ('erb x=1 y=2 template/some_conf.erb > some_conf') 

end 

some_confファイル度がホスト上で生成され、最初にexamplを使用して、ホスト上

config.vm.provision "file", source: "some_conf", destination: "/somewhere/on/the/guest/some_conf" 
+0

をこの1つのファイルをプッシュするvagrant file provisionerを使用することができますe、出力をゲストのファイルにどのようにパイプするのですか? – Zeophlite

+0

迷惑メールファイルのプロビジョナを使用して、例を追加することができます –