2017-02-21 130 views
2

我看了一下BerkShelf documentation。我已经能够弄清楚它代表了管理食谱依赖关系。所以,我猜想我想用java构建一台机器。我第一次产生我自定义的食谱:与berkshelf,厨师和流浪汉混淆

chef generate cookbook custom-java 

Berksfile是:

source 'https://supermarket.chef.io' 
metadata 

cookbook 'java' 

和我metadata.rb是:

name 'custom-java' 
... 
version '0.1.0' 

在那之后,我只需运行berks install,所以所有依赖关系已解决并位于~\.berkshelf\cookbooks之下。

不过,我不太清楚如何使用我的custom-java进入我的流浪配置。我需要做什么才能让流浪汉将这本食谱插入我的机器?

我的无业游民结构为:

VagrantFile 
├───chef 
│ ├───cookbooks 
│ │ ├───(((1))) <<<<<<<<<<<<<<<<<<<<<< 
│ ├───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. 
    :custom-java => { >>>>>>>>> (((2))) 
    :install_flavor => 'oracle', 
    :jdk_version => '8', 
    :accept_license_agreement => true, 
    :oracle => { "accept_oracle_download_terms" => true } 
    } 

) 

run_list(
    "recipe[java]" 
) 

我用厨师31年12月18日。

  1. (((1))):我需要 “进口” 我custom-java菜谱,怎么样?它位于哪里?
  2. (((2))):我应该如何配置java

编辑 我设置chef.cookbooks_path

config.vm.provision "chef_solo" do |chef| 
    chef.roles_path = "chef/roles" 
    chef.cookbooks_path = 'D:\projects\living\vagrant\production\berk\custom-java' 
    chef.add_role "java-dev-workstation" 
end 

EDIT2

尽管如此,custom-java依赖现在还没有解决:

================================================================================ 
Error Resolving Cookbooks for Run List: 
================================================================================ 

Missing Cookbooks: 
------------------ 
No such cookbook: yum 

Expanded Run List: 
------------------ 
* custom-java 

Platform: 
--------- 
x86_64-linux 

metadata.rb内容是:

name 'berk' 
... 
version '0.1.0' 

supports 'centos' 

depends 'yum' 

目前,所有的依赖都位于~/.berkshelf/cookbooks。这似乎shef-solo没有寻找它...

+0

您可以将'custom-java'添加到'java-dev-workstation.rb'角色的run_list。 –

+0

如果我没有在任何地方上传它,流浪者如何解决'custom-java'食谱? – Jordi

+0

您使用'chef_solo'供应并提供'cookbooks_path' - 这已经足够了。 –

回答

0

你没把它落后了包装食谱模式,您应该custom_java取决于java并改变其缺省行为(覆盖节点属性)。

您的自定义java元数据。rb应该包含这样的一行,berksfile中的内容永远不会被chef-client运行,它是一个外部的依赖解析器来创建一致的bundle。

depends 'java', '~> 1.47' 

而且default.rb线

include_recipe 'java' 

然后你Berksfile可以省略菜谱线(除非你在别处拉一个版本比在顶部的源)

下一页您角色应该使用custom-java的配方和不java,然后厨师客户端运行(编辑前的流浪汉部分听起来不错,应该拉两个食谱)将计算从java coobooks属性,overwri在custom-java中定义的那些,并且您应该以期望的行为结束。

或者,也可以在运行列表正好被设置为custom-java并完全避免的作用,这将作品。

我强烈建议你去通过所有的教程上https://learn.chef.io以获得更好的概述。

相关问题