2014-12-29 152 views
0

我想設置一個簡單的開發虛擬機使用流浪和廚師作爲供應商。我可以使用shell供應商安裝廚師,但在我看來,帶有廚師食譜的文件夾不會掛載到VM。它不斷抱怨食譜***沒有找到。這是我的無業遊民文件和輸出我得到流浪和廚師 - 食譜***未找到

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant::Config.run do |config| 
    # This strange method defines the name of the Vagrant Machine 
    config.vm.define "SubscriptionAPI" do |foobar| 
    end 

    # Every Vagrant virtual environment requires a box to build off of. 
    config.vm.box = "chef/centos-6.5" 

    # The url from where the 'config.vm.box' box will be fetched if it 
    # doesn't already exist on the user's system. 
    # config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box" 

    # Boot with a GUI so you can see the screen. (Default is headless) 
    # config.vm.boot_mode = :gui 

    # Assign this VM to a host-only network IP, allowing you to access it 
    # via the IP. Host-only networks can talk to the host machine as well as 
    # any other machines on the same network, but cannot be accessed (through this 
    # network interface) by any external networks. 
    config.vm.network :hostonly, "192.168.99.101" 

    # Assign this VM to a bridged network, allowing you to connect directly to a 
    # network using the host's network device. This makes the VM appear as another 
    # physical device on your network. 
    # config.vm.network :bridged 

    # Forward a port from the guest to the host, which allows for outside 
    # computers to access the VM, whereas host only networking does not. 
    config.vm.forward_port 80, 8080 
    config.vm.forward_port 443, 44343 

    # Share an additional folder to the guest VM. The first argument is 
    # an identifier, the second is the path on the guest to mount the 
    # folder, and the third is the path on the host to the actual folder. 
    # config.vm.share_folder "www", "/www", "../www" 

    # Make sure the chef is intalled to the VM 
    config.vm.provision "shell", path: "provisioning/utils/tools/install_chef.bash" 

    # Enable provisioning with chef solo, specifying a cookbooks path, roles 
    # path, and data_bags path (all relative to this Vagrantfile), and adding 
    # some recipes and/or roles. 
    # 
    config.vm.provision :chef_solo do |chef| 
    chef.roles_path = "provisioning/chef/roles" 
    chef.cookbooks_path = "provisioning/chef/cookbooks" 
    chef.add_role "vagrant-test-box" 

    # chef.cookbooks_path = "provisioning/chef/cookbooks" 
    # chef.add_recipe "httpd" 
    # chef.roles_path = "chef/roles" 
    # chef.data_bags_path = "chef/databags" 
    # chef.add_role "devbox" 
    # 
    # # You may also specify custom JSON attributes: 
    # chef.json = { :mysql_password => "foo" } 
    end 

    config.vm.host_name = "subscriptionapi" 

end 

輸出

==> SubscriptionAPI: Thank you for installing Chef! 
==> SubscriptionAPI: Running provisioner: chef_solo... 
Generating chef JSON and uploading... 
==> SubscriptionAPI: Running chef-solo... 
==> SubscriptionAPI: [2014-12-24T12:20:04+00:00] INFO: Forking chef instance to converge... 
==> SubscriptionAPI: [2014-12-24T12:20:04+00:00] INFO: *** Chef 12.0.3 *** 
==> SubscriptionAPI: [2014-12-24T12:20:04+00:00] INFO: Chef-client pid: 3442 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] INFO: Setting the run_list to ["role[vagrant-test-box]"] from CLI options 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] INFO: Run List is [role[vagrant-test-box]] 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] INFO: Run List expands to [httpd] 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] INFO: Starting Chef Run for subscriptionapi 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] INFO: Running start handlers 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] INFO: Start handlers complete. 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] ERROR: Running exception handlers 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] ERROR: Exception handlers complete 
==> SubscriptionAPI: [2014-12-24T12:20:08+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out 
==> SubscriptionAPI: [2014-12-24T12:20:09+00:00] ERROR: Cookbook httpd not found. If you're loading httpd from another cookbook, make sure you configure the dependency in your metadata 
==> SubscriptionAPI: [2014-12-24T12:20:09+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 
Chef never successfully completed! Any errors should be visible in the 
output above. Please fix your recipes so that they properly complete. 

配置/廚師/角色/遊民試驗box.rb

# Name of the role should match the name of the file 
name "vagrant-test-box" 

# Run list function we mentioned earlier 
run_list(
    "recipe[httpd]" 
) 

配置/廚師/ cookbooks/httpd/recipes/default.rb

package("httpd") 

這是永遠我試圖通過挖網和檢查不同種類的權限一遍又一遍地修復問題 - 並且仍然沒有運氣

+0

你能確保食譜通過流浪ssh和'ls/tmp/vagrant */provisoning /'上傳到盒子嗎?我沒有使用廚師獨奏,但看起來像流浪漢沒有複製食譜。如果是這種情況,你可能不得不使用共享文件夾(並根據流浪者文檔,這聽起來像一個bug) – Tensibai

+0

我有以下 -/tmp/vagrant-chef-3/chef-solo-1/recipes(空) ,/ tmp/vagrant-chef-3/chef-solo-2/roles(複製了角色),/tmp/vagrant-chef-3/dna.json(包含運行列表)和/ tmp/vagrant-chef-3 /solo.rb設置了一些目錄。 cookbook_path [「/ tmp/vagrant-chef-3/chef-solo-1/cookbooks」] - 它是空的 –

回答

1

我發現了問題。這是流浪者 - berkshelf插件造成的問題。卸載它使一切工作完美

+1

您可以這樣做,或將這些食譜包含在Berksfile中。 – jkulak