Vagrantfile能否使用在.kitchen.yml中设置的属性?

Vagrantfile能否使用在.kitchen.yml中设置的属性?,vagrant,chef-infra,vagrantfile,test-kitchen,Vagrant,Chef Infra,Vagrantfile,Test Kitchen,我正在用厨房来测试我的厨师食谱。 在厨房里,我用 driver: name: vagrant vagrantfile_erb: Vagrantfile.rb 然后在suites属性中 attributes: { "myattribute" : true, ... 我可以在Vagrantfile.rb中使用此属性值吗? 我需要使用Kitchen和直接使用Vagrant运行Vagrantfile,因此我需要一种方法来区分这两种方法。我想像这样在厨房里设置一个布尔属性,但它不起作用

我正在用厨房来测试我的厨师食谱。 在厨房里,我用

driver:
  name: vagrant
  vagrantfile_erb: Vagrantfile.rb
然后在suites属性中

attributes: {
  "myattribute" : true,
 ...
我可以在Vagrantfile.rb中使用此属性值吗? 我需要使用Kitchen和直接使用Vagrant运行Vagrantfile,因此我需要一种方法来区分这两种方法。我想像这样在厨房里设置一个布尔属性,但它不起作用

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

Message: Failed to complete #create action: [undefined local variable or method `node' for #<Kitchen::Driver::Vagrant:0x007febf431d138>]
当然,一个简单的解决方案是创建两个不同的vagrantfile,我只是想避免我还没有与chef合作。但是,您可以将.yml这样加载到您的文件中:

然后可以加载变量:

  ..
  vagrant.vm.define "dev.database", autostart: false do |dev|
    database = set['dev']['server']['database']
    vm = set['dev']['vm']
    dev.vm.box = vm['box']
    ..
根据,您应该能够通过以下方式访问属性:

instance.provisioner[:属性] 因此,我希望您可以使用

Vagrant.configure'2'do | config| myattribute=instance.provisioner[:属性][:myattribute] ... 终止
但是,用一个新问题解释总体计划可能会为您的实际问题提供更好的解决方案。

在我的情况下,这不起作用,因为我希望vagrant在.kitchen使用时运行一些线路,而不是运行Wagrant up。因此,如果设置了该属性,则执行该附加行,否则不执行。我会更新这个问题,让它更清楚
  ..
  vagrant.vm.define "dev.database", autostart: false do |dev|
    database = set['dev']['server']['database']
    vm = set['dev']['vm']
    dev.vm.box = vm['box']
    ..