2016-06-24 1 views
1

私はシェフの料理本をテストするためにキッチンを使用しています。私はスイートに続いてVagrantfileは.kitchen.ymlで設定された属性を使用できますか?

driver: 
    name: vagrant 
    vagrantfile_erb: Vagrantfile.rb 

を使用.kitchen.ymlで は私が

attributes: { 
    "myattribute" : true, 
... 

私はVagrantfile.rbの内側に、この属性の値を使用することはできてい属性? 私はKitchenとVagrantで直接Vagrantファイルを実行する必要があるので、2つの方法を区別する方法が必要です。私はちょうど、私はこのようなキッチンのboolean属性を設定したかったが、それは

Vagrant.configure('2') do |config| 
    myattribute = "<%= node['myattribute'] %> 
    ... 
end 

動作しない私は、簡単な解決策は、2つの異なるvagrantfileを作成することです。もちろん、

Message: Failed to complete #create action: [undefined local variable or method `node' for #<Kitchen::Driver::Vagrant:0x007febf431d138>] 

メッセージが表示されます

答えて

-1

私はまだchefで動作していません。しかし、あなたはあなたのVagrantfileであなたにこのような.ymlを読み込むことができます:

require 'yaml' 
set = YAML.load_file(ENV['DEVOPS_HOME'] + '/vagrant/server/settings.yml') 

そして、あなたは、変数を読み込むことができます:

.. 
    vagrant.vm.define "dev.database", autostart: false do |dev| 
    database = set['dev']['server']['database'] 
    vm = set['dev']['vm'] 
    dev.vm.box = vm['box'] 
    .. 
+0

これは私の場合はうまくいかないでしょう。なぜなら、.kitchenによって使用されていて、悪影響を受けていないときに、いくつかの行を実行したいからです。したがって、その属性が設定されている場合は、この追加の行を実行します。質問を更新して明確にする – MarMan

0

according README section of kitchen-vagrantによると、あなたはで属性にアクセスすることができるはずです方法以下:

instance.provisioner[:attributes] 

だから私はあなたのにアクセスできることを期待しますあなたの実際の問題のためのよりよい解決策につながる可能性、新たな問題の全体的な計画を説明する、しかし

Vagrant.configure('2') do |config| 
    myattribute = instance.provisioner[:attributes][:myattribute] 
    ... 
end 

を使用。

関連する問題