我正在用厨房来测试我的厨师食谱。 在.kitchen.yml我用
driver:
name: vagrant
vagrantfile_erb: Vagrantfile.rb
然后在套房属性中我有
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>]
当然一个简单的解决方案是创建2个不同的vagrantfile,我只是想避免那个
答案 0 :(得分:0)
根据according README section of kitchen-vagrant,您应该能够通过以下方式访问属性:
instance.provisioner[:attributes]
所以我希望您可以使用
访问myattribute
Vagrant.configure('2') do |config|
myattribute = instance.provisioner[:attributes][:myattribute]
...
end
但是,在新问题中解释整体计划可能会为您的实际问题提供更好的解决方案。
答案 1 :(得分:-1)
我尚未与chef
合作。但是,您可以在.yml
:
Vagrantfile
这样的内容
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']
..