2017-02-21 103 views
0

我berkshelf文件夹结构是这样的:Berkshelf:安装Java 8

│ Berksfile 
│ Berksfile.lock 
│ chefignore 
│ knife.rb 
│ living.pem 
│ metadata.rb 
├───recipes 
│  default.rb 
│  elasticsearch.rb 
│  java.rb 

每个recipe.rb的含量为:

default.rb内容文件:

include_recipe 'berk::java' 
include_recipe 'berk::elasticsearch' 

java.rb内容文件:

include_recipe 'java' 

elasticsearch.rb内容文件:

include_recipe 'elasticsearch' 

elasticsearch_user 'elasticsearch' do 
    username 'elasticsearch' 
    groupname 'elasticsearch' 
    shell '/bin/bash' 
    comment 'Elasticsearch User' 

    action :create 
end 

elasticsearch_install 'my_es_installation' do 
    type 'package' # type of install 
    version '5.2.0' 
    action :install # could be :remove as well 
end 

... 

我想,以使用Oracle对Java 8改变Java设置。我知道,也许这似乎是一个很简单的问题,不过,我真的坚持在这个问题上已经。

我试图在java.rb加上这些行:

node.default['java']['install_flavor'] = 'oracle' 
node.default['java']['jdk_version'] = '8' 
node.default['java']['oracle']['accept_oracle_download_terms'] = true 

同时,我已经试过:

node.override['java']['install_flavor'] = 'oracle' 
node.override['java']['jdk_version'] = '8' 
node.override['java']['oracle']['accept_oracle_download_terms'] = true 

然而,Java 6的安装:

==> default: * log[jdk-version-changed] action nothing (skipped due to action :nothing) 
==> default: Recipe: java::openjdk 
==> default: * yum_package[java-1.6.0-openjdk] action install 
==> default: [2017-02-21T15:10:33+00:00] INFO: yum_package[java-1.6.0-openjdk] installing java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el7_3 from updates repository 

有任何想法吗?

谢谢。

回答

1

不覆盖属性在配方(出特定情况下),使用attributes/default.rb文件来定义的默认级别的属性将是足够的,一切都会是正确的。

你可能会重写包含java recipe的属性,因此你的问题,属性文件在任何配方编译之前都会被读取,include_recipe只要看到它们就编译目标配方,所以如果你的java.rb文件看起来像:

include_recipe 'java' 

node.default['java']['install_flavor'] = 'oracle' 
node.default['java']['jdk_version'] = '8' 
node.default['java']['oracle']['accept_oracle_download_terms'] = true 

java配方的资源将在属性更新之前编译。

左右的时间内与创建attributes目录和文件default.rb

default['java']['install_flavor'] = 'oracle' 
default['java']['jdk_version'] = '8' 
default['java']['oracle']['accept_oracle_download_terms'] = true 

而且你的java 8安装。

文件的属性目录中加载字母顺序(事项如果两个文件设置为同一属性不同的值),你可以他们的名字,但是你愿意,你可以有一个java.rbelasticsearch.rb如果你想分开的属性也为每个配方。