我的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
有什么想法吗?
感谢。
答案 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.rb
和elasticsearch.rb
如果你想分开每个食谱的属性。