Berkshelf:安装java 8

时间:2017-02-21 14:31:45

标签: chef berkshelf

我的berkshelf文件夹结构如下:

│   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

...

我想更改java设置以便使用oracle的java 8。我知道这似乎是一个非常直截了当的问题,然而,我真的坚持这个问题。

我尝试在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 个答案:

答案 0 :(得分:1)

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

在包含java配方之后,您可能会覆盖属性,因此您的问题,属性文件都会在编译任何配方之前被读取,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如果你想分开每个食谱的属性。