2016-06-24 3 views
1

Я использую кухню, чтобы проверить мою поваренную книгу повара. В .kitchen.yml я используюМожно использовать атрибуты Vagrantfile в .kitchen.yml?

driver: 
    name: vagrant 
    vagrantfile_erb: Vagrantfile.rb 

Затем в свит атрибут У меня есть

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

Могу ли я использовать это значение атрибута внутри Vagrantfile.rb? Мне нужно запустить Vagrantfile как с кухней, так и непосредственно с Vagrant, поэтому мне нужен способ различать два метода. Я хотел установить булево атрибут на кухне, как это, но он не работает

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, я просто хотел избежать этого

ответ

-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'] 
    .. 
+0

Это не сработало бы в моем случае, так как я хочу, чтобы бродяга выполнял некоторые строки, когда он используется .kitchen и не делает бродягу вверх. Поэтому, если этот атрибут установлен, выполните следующие дополнительные строки, иначе нет. Я уточню вопрос, чтобы он дал понять – MarMan

0

Согласно according README section of kitchen-vagrant, вы должны быть в состоянии получить доступ к атрибутам в следующим образом:

instance.provisioner[:attributes] 

Поэтому я ожидаю, что вы можете получить доступ к myattribute использование

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

Однако, объясняя общий план в новом вопросе может привести к лучшему решению для вашей конкретной проблемы.

Смежные вопросы