Vagrant 厨师:没有这样的食谱

Vagrant 厨师:没有这样的食谱,vagrant,chef-infra,Vagrant,Chef Infra,当我尝试使用vagrant和chef在我的vm上提供时,我遇到了以下错误: ==> default: ==================================== ==> default: Error Resolving Cookbooks for Run List: ==> default: ==================================== ==> default: ==> default: Missing Cookbooks:

当我尝试使用vagrant和chef在我的vm上提供时,我遇到了以下错误:

==> default: ====================================
==> default: Error Resolving Cookbooks for Run List:
==> default: ====================================
==> default:
==> default: Missing Cookbooks:
==> default: ------------------
==> default: No such cookbook: windows
==> default:
==> default: Expanded Run List:
==> default: ------------------
==> default: * java
==> default:
==> default: Platform:
==> default: ---------
==> default: x86_64-linux
==> default:
我的流浪结构是:

VagrantFile
├───chef
│   ├───cookbooks
│   │   ├───apt
│   │   ├───java
│   ├───roles
│   │   ├───java-dev-workstation.rb
vagrant文件
内容为:

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.provision "chef_solo" do |chef|
    chef.roles_path = "chef/roles"
    chef.cookbooks_path = "chef/cookbooks"
    chef.add_role "java-dev-workstation"
  end
end
java-dev-workstation.rb

name "java-dev-workstation"

default_attributes( 
  # Because it's Oracle, we need to agree to the terms and conditions.
  :java => { 
    :install_flavor => 'oracle',
    :jdk_version => '8',
    :accept_license_agreement => true,
    :oracle => { "accept_oracle_download_terms" => true } 
  }

)

run_list(
  "recipe[java]"
)
我用的是厨师12.18.31


有什么想法吗?

java食谱依赖于
windows
cookbook,您没有下载它,因此无法继续。这就是为什么人们通常使用Berkshell或Policyfile系统作为这两种自动下载依赖项的原因


为了回答您可能的下一个问题:是的,您需要依赖项,即使您没有使用Windows VM,我们也没有任何方法来实现可选依赖项。

同意前面的评论。因此,不要使用vagrant Berkshell插件手动添加所有依赖项-

您需要做的是:

  • 在适当的Berksfile中声明所有依赖项(在您的情况下,它只是java cookbook,BerksShelf将默默地关注java cookbook依赖的cookbook-windows等等)
  • 指向文件中的Berksfile位置