2015-05-06 2 views
0

Я использую Windows с vagrant и chefdk установлен. Я могу успешно vagrant up VM без проблем. Поэтому моя следующая задача - добавить в нее функцию обеспечения. Я скачал несколько поваренных книг и создал Berksfile для решения зависимостей, однако, когда я бегу vagrant provision, он показывает мне следующее сообщение об ошибке:Ошибка при выполнении «брокерского обеспечения» с berkshelf

C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir': No such file or directory - K: (Errno::ENOENT) 
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:245:in `fu_mkdir' 
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:219:in `block (2 levels) in mkdir_p' 
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:217:in `reverse_each' 
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:217:in `block in mkdir_p' 
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:203:in `each' 
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.0.0/fileutils.rb:203:in `mkdir_p' 
    from C:/Users/victorwong/.vagrant.d/gems/gems/vagrant-berkshelf-4.0.3/lib/vagrant-berkshelf/action/load.rb:40:in `mkshelf' 
    from C:/Users/victorwong/.vagrant.d/gems/gems/vagrant-berkshelf-4.0.3/lib/vagrant-berkshelf/action/load.rb:23:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/env_set.rb:19:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/Users/victorwong/.vagrant.d/gems/gems/vagrant-berkshelf-4.0.3/lib/vagrant-berkshelf/action/check.rb:18:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/config_validate.rb:25:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:95:in `block in finalize_action' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/handle_box.rb:56:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:95:in `block in finalize_action' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builder.rb:116:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `block in run' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/util/busy.rb:19:in `busy' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `run' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/call.rb:53:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/providers/virtualbox/action/check_virtualbox.rb:17:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builder.rb:116:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `block in run' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/util/busy.rb:19:in `busy' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `run' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:214:in `action_raw' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:191:in `block in action' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/environment.rb:516:in `lock' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:178:in `call' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:178:in `action' 
    from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run' 

Это говорит мне, что он не может mkdir на K:, поскольку она не существует. Это был привод внешнего диска, который я отключил прямо сейчас. Я не знаю, почему K: выходит сюда. Эта ошибка не появляется, если я не включаю berkshelf, поэтому она может быть связана с berkshelf.

Мои Berksfile:

source "https://supermarket.getchef.com" 

cookbook 'java', path: 'chef-script/cookbooks/java' 

Мои Vagrantfile:

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
# ... 
    config.omnibus.chef_version = :latest 
    config.berkshelf.enabled=true 

    config.vm.provision "chef_solo" do |chef| 
    chef.cookbooks_path = "chef-script/cookbooks" 
    chef.add_recipe "java" 
    end 
end 

Итак, 2 вопроса:

Q1. как я могу заставить его C: вместо K:;

Q2. почему он указывает на K: по умолчанию?

+0

запустите '' 'berks install'''',' '' vagrant destroy''', '' 'vagrant up''' и поместите полный журнал и файл Berksfile и Vagrantfile. – acfreitas

+0

@acfreitas, я прикреплял оба файла. Я запускал 'berks install' и возвращал ту же ошибку. Если я «бродяга» уничтожу, тогда «бродячий», тот же результат. –

ответ

2

Я, наконец, нашел причину позади, надеюсь, что кто-то будет чувствовать себя полезным. На самом деле это очень просто. K: исходит из переменных окружения HOMEDRIVE.

Введя команду в CMD окон

SET 

список во время выполнения экологических переменных выходит. Если есть что-то похожее

HOMEDRIVE=K: 

или что-то странное букву диска, а затем бинго! Теперь, чтобы изменить значение, просто

SET HOMEDRIVE=C: 

Тогда все работает как шарм.

По-прежнему я понятия не имею, кто и когда он устанавливает эту переменную времени выполнения. Но в любом случае это решило мою проблему.