Chef infra 安装Java8
我的文件夹结构如下所示:Chef infra 安装Java8,chef-infra,berkshelf,Chef Infra,Berkshelf,我的文件夹结构如下所示: │ Berksfile │ Berksfile.lock │ chefignore │ knife.rb │ living.pem │ metadata.rb ├───recipes │ default.rb │ elasticsearch.rb │ java.rb 每个配方.rb的内容如下: default.rb内容文件: include_recipe 'berk::java' include_recipe
│ Berksfile
│ Berksfile.lock
│ chefignore
│ knife.rb
│ living.pem
│ metadata.rb
├───recipes
│ default.rb
│ elasticsearch.rb
│ java.rb
每个配方.rb的内容如下:
default.rb
内容文件:
include_recipe 'berk::java'
include_recipe 'berk::elasticsearch'
include_recipe 'java'
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.rb
内容文件:
include_recipe 'berk::java'
include_recipe 'berk::elasticsearch'
include_recipe 'java'
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
...
elasticsearch.rb
内容文件:
include_recipe 'berk::java'
include_recipe 'berk::elasticsearch'
include_recipe 'java'
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的Java8,我想更改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
有什么想法吗
谢谢。不要覆盖配方中的属性(在特定情况下),使用属性/default.rb
文件在默认级别定义这些属性就足够了,一切都会正常
您可能在包含java 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
您已经安装了Java8
attributes目录中的文件以字母数字顺序加载(如果两个文件为同一属性设置了不同的值,则很重要),您可以随意命名它们,如果您还希望分离每个配方的属性,可以使用java.rb
和elasticsearch.rb