流浪汉厨师-食谱***未找到 [英] Vagrant & Chef - Cookbook *** not found

查看:63
本文介绍了流浪汉厨师-食谱***未找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用vagrant和Chef作为供应商来设置一个简单的开发VM。我可以使用Shell Provisioner安装Chef,但是在我看来,包含Chef食谱的文件夹未安装到VM。它一直抱怨找不到菜谱***。这是我流浪的文件,我得到的输出是

I am trying to set up a simple development VM using vagrant and Chef as a provisioner. I am able to install chef using shell provisioner but it seems to me that the folder with chef recipes does not get mounted to the VM. It keeps complaining that cookbook *** not found. Here is my vagrant file and output I am getting

# -*- 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.

配置/厨师/角色/vagrant-test-box.rb

provisioning/chef/roles/vagrant-test-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]"
)

提供/厨师/烹饪书/httpd/recipes/default.rb

provisioning/chef/cookbooks/httpd/recipes/default.rb

package("httpd")

我一直试图通过挖掘Internet并反复检查不同类型的权限来解决该问题再次-仍然没有运气

It's been forever I am trying to fix the issue by digging the Internet and checking different sorts of permissions over and over again - and still no luck

推荐答案

我发现了问题。这是导致问题的vagrant-berkshelf插件。卸载它可以使一切正常运行

I found the problem. It was vagrant-berkshelf plugin causing the issue. Uninstalling it made everything work flawlessly

这篇关于流浪汉厨师-食谱***未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆