Vagrant 主厨索洛罐头';我找不到有流浪汉和窗户的食谱

Vagrant 主厨索洛罐头';我找不到有流浪汉和窗户的食谱,vagrant,chef-infra,Vagrant,Chef Infra,我正在尝试使用厨师“iis”食谱和vagrant管理windows web服务器 当我试图运行chef solo时,它抛出一个错误,即找不到烹饪书 错误消息: sowens-MBP:vagrant-windows sowen$ vagrant provision ==> default: Running provisioner: chef_solo... ==> default: Vagrant does not support detecting whether Chef is i

我正在尝试使用厨师“iis”食谱和vagrant管理windows web服务器

当我试图运行chef solo时,它抛出一个错误,即找不到烹饪书

错误消息:

sowens-MBP:vagrant-windows sowen$ vagrant provision
==> default: Running provisioner: chef_solo...
==> default: Vagrant does not support detecting whether Chef is installed
==> default: for the guest OS running in the machine. Vagrant will assume it is
==> default: installed and attempt to continue.
Generating chef JSON and uploading...
==> default: Running chef-solo...
==> default: [2015-02-10T16:18:24-08:00] INFO: *** Chef 12.0.3 ***
==> default: [2015-02-10T16:18:24-08:00] INFO: Chef-client pid: 2508
==> default: [2015-02-10T16:18:30-08:00] INFO: Setting the run_list to ["recipe[example-webserver2012]"] from CLI options
==> default:
==> default: [2015-02-10T16:18:30-08:00] INFO: Run List is [recipe[example-webserver2012]]
==> default: [2015-02-10T16:18:30-08:00] INFO: Run List expands to [example-webserver2012]
==> default: [2015-02-10T16:18:30-08:00] INFO: Starting Chef Run for vagrant-2012-r2.nv.com
==> default: [2015-02-10T16:18:30-08:00] INFO: Running start handlers
==> default: [2015-02-10T16:18:30-08:00] INFO: Start handlers complete.
==> default: [2015-02-10T16:18:30-08:00] ERROR: Running exception handlers
==> default:
==> default: [2015-02-10T16:18:30-08:00] ERROR: Exception handlers complete
==> default: [2015-02-10T16:18:30-08:00] FATAL: Stacktrace dumped to C:/var/chef/cache/chef-stacktrace.out
==> default: [2015-02-10T16:18:30-08:00] FATAL: Chef::Exceptions::CookbookNotFound: Cookbook iis not found. If you're loading iis from another cookbook, make sure you configure the dependency in your metadata
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
流浪汉档案:

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

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(2) do |config|
  config.vm.box = "lmayorga1980/windows-2012r2"
  config.vm.communicator = "winrm"
  config.vm.network "forwarded_port", host: 3389, guest: 3389
  config.vm.provider "virtualbox" do |v|
    v.cpus = 2
    v.memory = 2048
  end

  # Provisioning
  config.vm.provision "chef_solo" do |chef|
    # chef.cookbooks_path = ['C:\vagrant']
    chef.add_recipe "example-webserver2012"
  end
end
伯克斯菲尔

source "https://supermarket.chef.io"

metadata

cookbook 'iis'
元数据.rb

name 'foobar'
...
depends 'iis'
recipes/default.rb

iis_site 'Default Web Site' do
  action [:stop, :delete]
end
整个目录结构如下所示: 该食谱是使用
berks cookbook-example-webserver2012
创建的。 有两个流浪汉档案,我用的是顶层的那个

$ tree vagrant-windows/
vagrant-windows/
├── Vagrantfile
└── cookbooks
    └── example-webserver2012
        ├── Berksfile
        ├── Berksfile.lock
        ├── CHANGELOG.md
        ├── Gemfile
        ├── Gemfile.lock
        ├── LICENSE
        ├── README.md
        ├── Thorfile
        ├── Vagrantfile
        ├── attributes
        ├── chefignore
        ├── files
        │   └── default
        ├── libraries
        ├── metadata.rb
        ├── providers
        ├── recipes
        │   └── default.rb
        ├── resources
        ├── templates
        │   └── default
        └── test
            └── integration

为什么找不到食谱“iis”

找不到ISS cookbook的原因是,您的包装器cookbook,
example-webserver2012
,声明了对IIS cookbook with Berkshelf的依赖关系。不幸的是,Chef solo provisioner的流浪汉不知道如何解决开箱即用的依赖关系。你有几个选择

  • 使用
    berks vendor
    创建一个包含所有已解析烹饪书的文件夹,并将Vagrant文件指向该文件夹
  • 当您运行
    vagrant provision
    时,使用该插件进行依赖项解析
从工作流的角度来看,我发现
vagrant
插件非常有用


另外,在您的
Berksfile
中,您不需要声明对IIS cookbook的依赖关系,由于Berksfile中的
元数据
行,该依赖关系将从
metadata.rb
中提取。

您能告诉我如何使用
vagrant Berkshellf
插件来解决Berkshellf依赖关系吗?当vagrant启动该框时,这不会自动发生吗?确实会发生。但只有当你只使用那些可以从某个存储库中解析的烹饪书时,我使用的是本地烹饪书和开源烹饪书的混合,而伯克书架忽略了这一点。