我有一个包含一个食谱的包装食谱,recipes / default.rb可以读取以下内容:
include_recipe "apt"
node.override[:java][:jdk_version] = '7'
include_recipe "java"
我有来自社区网站的apt和java食谱。我只使用这个包装配方运行刀具引导。
当我收敛节点时,它会安装Java 6而不是Java 7.我觉得我有一些明显缺失的东西,但我无法弄明白。不应该使用node.override来覆盖默认的jdk_version为6吗?
答案 0 :(得分:3)
使用“我不是厨师专家”来验证我的回答......但是,我认为问题在于Chef中的“嵌套属性”。我认为你不能只是继续推翻这个版本,因为在剥离了你的可爱配方可能出错的所有可能的东西之后,我发现了这个:
http://lists.opscode.com/sympa/arc/chef/2012-10/msg00265.html
在设置默认jdk版本后,还有一些其他属性正在设置。如果你看这里:
http://community.opscode.com/cookbooks/java/source
您将看到使用该默认版本设置default['java']['openjdk_packages']
,并且openjdk配方(可能是选择的“install_flavor”)仅查看该属性。它不直接在jdk_version中读取。有趣的是,java :: oracle配方(以及java :: oracle_i386和java :: oracle_rpm)直接在版本中读取,因此您的初始尝试将适用于此。
我会尝试根据您的特定平台设置其中一个版本:
Redhat/CentOS: node.override[:java][:openjdk_packages] = ["java-1.7.0-openjdk", "java-1.7.0-openjdk-devel"]
Debian/Ubuntu: node.override[:java][:openjdk_packages] = ["openjdk-7-jdk"]
其他“platform_family”选项可在此处找到:https://github.com/opscode-cookbooks/java/blob/master/attributes/default.rb
答案 1 :(得分:3)
以下是我如何使用包装食谱。
我必须将此语句添加到attributes / default.rb:
override[:java][:openjdk_packages] = [
"openjdk-7-jdk", "openjdk-7-jre-headless"
]
我尝试在此位置添加jdk_version,但它无效。我尝试在包装器食谱中添加此语句(带有node.override),但它也不起作用。
Here描述了为什么会出现这种情况。