厨师:没有这样的食谱

时间:2017-02-20 14:33:40

标签: vagrant chef

当我尝试使用流浪者和厨师来提供我的虚拟机时,我收到了这个错误:

==> 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

Vagrantfile内容为:

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]"
)

我正在使用Chef 12.18.31。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

toEqual()食谱取决于您未下载的java食谱,因此无法继续。这就是为什么人们通常会自动使用Berkshelf或Policyfile系统作为这两种下载依赖项。

并回答你可能的下一个问题:是的,即使你没有使用Windows VM,你也需要依赖,我们没有办法做任何可选的依赖。

答案 1 :(得分:0)

同意之前的评论。所以不要手动添加所有依赖项使用vagrant-berkshelf插件 - https://soraco.co/quick-license-manager/?gclid=CjwKEAiAirXFBRCQyvL279Tnx1ESJAB-G-Qvy65J7uzmMUClDy0fltJKN7U9HtFex5akQ-H3r7YgFhoCa7nw_wcB

您需要做的一切:

  1. 声明所有的依赖关系(在你的情况下,它只是java cookbook,berkshelf将默默地关注烹饪书籍的食谱取决于windows,等等......)在适当的Berksfile中
  2. 将一个Berksfile位置指向您的Vagrantfile